ListSync automates the import of your IMDB & Trakt lists into Overseerr & Jellyseerr, simplifying your movie management. https://discord.gg/Dy5xNzEHKw
See the codeListSync automatically syncs your watchlists from IMDb, Trakt and many more with Overseerr/Jellyseerr. No more manual adding - just add movies, shows, and anime to your favorite watchlist, and they'll appear in your media server automatically.
ListSync includes a web dashboard built with Nuxt 3 and Vue 3, providing an interface to manage all your sync operations without touching config files.
Access the dashboard at http://localhost:3222 and complete the setup wizard to connect your media server and watchlists.
Easy-to-use setup wizard for first-time configuration.
ListSync now supports browsing and syncing entire movie franchises.
Sync full collections with a single click.
No configuration files needed! Just run the container and open your browser.
docker run -d --name listsync -p 3222:3222 -p 4222:4222 -v listsync-data:/usr/src/app/data ghcr.io/woahai321/list-sync:main
That's it! Now go to http://localhost:3222 to finish setup.
# Clone and setup
git clone https://github.com/Woahai321/list-sync.git && cd list-sync
# (Optional: Configure a .env file)
# Use pre-built image
docker-compose up -d
# Or build from source
docker-compose -f docker-compose.local.yml up -d --build
Access:
http://localhost:3222http://localhost:4222/docshttp://localhost:4222/api/system/healthAll 3 services (Core Sync, FastAPI Backend, Nuxt Frontend) run in a single container managed by supervisor.
Minimal setup with just the sync engine
# 1. Clone the repository
git clone https://github.com/Woahai321/list-sync.git
cd list-sync
# 2. Copy and configure environment file
cp .env.example .env
nano .env # Add your Overseerr URL, API key, and lists
# 3. Start with the core docker-compose file
docker-compose -f docker-compose.core.yml up -d
# Done! Sync runs automatically in the background
Monitoring Core-Only:
# View logs
docker-compose -f docker-compose.core.yml logs -f
# Clone and install dependencies
git clone https://github.com/Woahai321/list-sync.git && cd list-sync
pip install -r requirements.txt -r api_requirements.txt
cd listsync-nuxt && npm install && cd ..
Create .env file with:
OVERSEERR_URL=http://your-overseerr:5055
OVERSEERR_API_KEY=your-api-key-here
IMDB_LISTS=top
Run these commands in 3 separate terminals:
Terminal 1 - Core Sync Service:
python -m list_sync
Terminal 2 - FastAPI Backend:
python start_api.py
Terminal 3 - Nuxt Frontend:
cd listsync-nuxt && npm run dev
Access:
http://localhost:3222http://localhost:4222/docshttp://localhost:4222/api/system/healthListSync now uses the official Trakt API v2 for improved reliability and performance. To use Trakt lists, you need to configure API credentials:
ListSync (or any name you prefer)urn:ietf:wg:oauth:2.0:oob (not used but required)Add your Client ID to your .env file or via the web dashboard:
# Trakt API Configuration
TRAKT_CLIENT_ID=your_client_id_here
ListSync can use the official TMDB API for improved reliability and performance. To use TMDB lists with API access, you need to configure API credentials:
ListSync (or any name you prefer)Media list synchronization toolhttps://github.com/Woahai321/list-syncAdd your API key to your .env file or via the web dashboard:
# TMDB API Configuration
TMDB_KEY=your_api_key_here
ListSync can use the official TVDB API for enhanced data quality. To use TVDB with API access, you need to configure API credentials:
ListSyncMedia list synchronization toolAdd your API key to your .env file or via the web dashboard:
# TVDB API Configuration
TVDB_KEY=your_api_key_here
https://www.imdb.com/list/ls012345678/https://www.imdb.com/chart/top/ (Top 250), https://www.imdb.com/chart/boxoffice/ (Box Office)https://www.imdb.com/user/ur12345678/watchlistls012345678top, boxoffice)ur12345678top (Top 250 Movies)boxoffice (Box Office)moviemeter (MovieMeter)tvmeter (TVMeter)https://trakt.tv/users/username/watchlisthttps://app.trakt.tv/users/username/lists/listnameListSync supports a shortcut format of list-type:media-type. Examples:
trending:movies - Top trending moviespopular:shows - Popular TV showsanticipated:movies - Most anticipated moviesAvailable Types:
Note: The boxoffice list type is only available for movies.
These special lists sync a configurable number of items (default: 20, can be set via TRAKT_SPECIAL_ITEMS_LIMIT environment variable).
https://www.themoviedb.org/list/12345https://www.themoviedb.org/list/67890-my-favorite-moviesNote: TMDB lists require the full URL format for proper access.
https://www.thetvdb.com/lists/67890Note: TVDB requires the full URL format.
https://letterboxd.com/username/list/my-list/https://letterboxd.com/username/watchlist/Note: Please have patience with this list provider as it relies on web scraping.
https://anilist.co/user/username/animelisthttps://anilist.co/user/username/animelist/PlanningusernameNote: Anime titles are automatically resolved to TMDB IDs via Trakt API for Overseerr compatibility. Resolution works with both English and Romaji titles.
https://mdblist.com/lists/username/listnameusername/listname⚠️ SIMKL provider is currently disabled.
SIMKL API currently only supports authenticated user watchlists and does not support custom public lists. We have been in contact with the developers and the required API endpoint for this tool does not have an ETA.
Future Plans: SIMKL support may be re-enabled if/when SIMKL API adds support for custom public lists.
For now, please use Trakt, IMDB, Letterboxd or any other provider for list syncing.
This is a curated list of popular movies maintained by Steven Lu, available at:
https://s3.amazonaws.com/popular-movies/movies.jsonTo enable this list, simply add the below variable:
STEVENLU_LISTS=stevenluThis will be recognized as the Steven Lu Popular Movies list.
All you need is a .env file with four settings:
OVERSEERR_URL=http://your-overseerr:5055 # Your Overseerr/Jellyseerr URL
OVERSEERR_API_KEY=your-api-key-here # Get from Overseerr Settings → General
TRAKT_CLIENT_ID=your-api-key-here # Trakt API Client ID
IMDB_LISTS=top # Start with IMDb Top 250
Optional Settings:
SYNC_INTERVAL=24 # Hours between syncs (default: 24)
AUTOMATED_MODE=true # Enable automatic syncing (default: true)
OVERSEERR_4K=false # Request 4K versions (default: false)
DISCORD_WEBHOOK_URL=... # Discord notifications (optional)
TZ=America/New_York # Your timezone (default: GMT)
# API Keys for Enhanced Functionality (Optional)
TMDB_KEY=... # TMDB API Key (for better performance)
TVDB_KEY=... # TVDB API Key (for enhanced data)
# List Configuration
IMDB_LISTS=top,boxoffice # IMDb lists to sync
TRAKT_LISTS=... # Trakt lists to sync
LETTERBOXD_LISTS=... # Letterboxd lists to sync
ANILIST_LISTS=... # AniList anime lists to sync (username or full URL)
MDBLIST_LISTS=... # MDBList lists to sync
# SIMKL_CLIENT_ID=... # SIMKL API Client ID (DISABLED - see SIMKL section)
# SIMKL_USER_TOKEN=... # SIMKL OAuth Token (DISABLED - see SIMKL section)
TVDB_LISTS=... # TVDB lists to sync (full URLs)
TMDB_LISTS=... # TMDB lists to sync (full URLs)
STEVENLU_LISTS=stevenlu # Steven Lu popular movies
The Add List wizard includes over 50+ curated presets. Just select and sync.
| Category | Presets (Click to Preview) |
|---|---|
| Charts | Top 250, Box Office, MovieMeter, TVMeter |
| Festivals | London Film Festival 2025, Sundance 2025 |
| Category | Presets (Click to Preview) |
|---|---|
| Streaming (Movies) | Netflix, Amazon Prime, Disney+, Hulu |
| Streaming (Shows) | Netflix, Amazon Prime, Disney+, Hulu, HBO, BBC |
| Genres (Movies) | Action, Comedy, Crime, Drama, Horror, Sci-Fi, Thriller, History, War, 80's Movies |
| Genres (Shows) | Comedy, Crime, Drama, Horror, Sci-Fi |
| Popular & Latest | Top Movies, Top Movies of the Week, Latest Releases, Latest Blu-ray Releases, Latest TV Shows |
| Recommendations | Gary Recommends, Recommended Movies, Movies from the Last Decade, TV Recommendations |
| Regional/Other | UK Shows, Video Nasties, Collaborations |
| Category | Presets (Click to Preview) |
|---|---|
| Movies | Trending, Popular, Anticipated, Most Watched, Box Office |
| TV Shows | Trending, Popular, Anticipated, Most Watched |
| Category | Presets (Click to Preview) |
|---|---|
| Top Rated | Top 250 Narrative, Top 250 Most Fans, 1001 Must See Movies |
| Curated | Movies to Watch Once, Feel Something |
| Category | Presets (Click to Preview) |
|---|---|
| Streaming | Netflix Movies, Amazon Prime Movies, Disney+ Movies, Netflix Shows, HBO Shows |
| Popular | Top Watched This Week |
| Category | Presets (Click to Preview) |
|---|---|
| Collections | All Movies (Unfiltered), Original Collection |
| Metacritic | Min 50, Min 60, Min 70, Min 80 |
| IMDb | Min 5.0, Min 6.0, Min 7.0, Min 8.0 |
| Rotten Tomatoes | Min 50, Min 60, Min 70, Min 80 |
| Category | Presets (Click to Preview) |
|---|---|
| Charts | Top 250 IMDB, IMDB 50 Most Popular, Top 10 Movies |
| Box Office | All Time Box Office |
ListSync automatically timestamps all sync activities and displays them in the web interface. To ensure timestamps match your local time, configure your timezone using any of the three supported formats below.
ListSync supports three timezone formats for maximum flexibility:
# docker-compose.yml or .env file
environment:
- TZ=Europe/Paris # France (CET/CEST with DST)
- TZ=America/New_York # US Eastern (EST/EDT with DST)
- TZ=America/Los_Angeles # US Pacific (PST/PDT with DST)
- TZ=America/Chicago # US Central (CST/CDT with DST)
- TZ=Asia/Tokyo # Japan
- TZ=Australia/Sydney # Australia Eastern
- TZ=Europe/London # UK (GMT/BST with DST)
# docker-compose.yml or .env file
environment:
- TZ=EST # US Eastern Standard Time
- TZ=PST # US Pacific Standard Time
- TZ=CET # Central European Time
- TZ=GMT # Greenwich Mean Time
- TZ=BST # British Summer Time
- TZ=AEST # Australian Eastern Standard Time
# docker-compose.yml or .env file
environment:
# UTC offsets
- TZ=UTC # Coordinated Universal Time
- TZ=UTC+1 # Central European Time
- TZ=UTC-5 # US Eastern Time
- TZ=UTC-8 # US Pacific Time
- TZ=UTC+8 # China/Singapore Time
- TZ=UTC+5:30 # India Standard Time
# GMT offsets (equivalent to UTC)
- TZ=GMT+1 # Central European Time
- TZ=GMT-5 # US Eastern Time
timedatectl or cat /etc/timezone| Format | Best For | Handles DST? | Example |
|---|---|---|---|
| IANA Names | Production use | ✅ Yes | Europe/Paris |
| Abbreviations | Quick setup | ✅ Yes | EST, CET |
| UTC/GMT Offsets | Testing, fixed offsets | ❌ No | UTC+1, GMT-5 |
Tip: Use IANA timezone names for production deployments as they automatically handle Daylight Saving Time (DST) transitions!
SeerrBridge is our companion application that provides an alternative to traditional *arr stack (Radarr/Sonarr) setup. It works alongside ListSync to create a complete media management solution:
For detailed information about SeerrBridge, visit the SeerrBridge Repository.
%%{init: {'flowchart': {'diagramPadding': 20, 'nodeSpacing': 25, 'rankSpacing': 35, 'curve': 'linear'}}}%%
graph LR
%% Condensed Flow with Reduced Text and More Padding
%% UI
subgraph ui["User Interaction"]
U["🍿 User Opens Dashboard\n(localhost:3222)"] --> D["🍿 Nuxt Dashboard\n(Port 3222)"] --> B["🔌 FastAPI Backend\n(Port 4222)"]
end
%% Core
subgraph core["Core System"]
B --> C["⚙️ Core Sync Engine\n(Python)"] --> DB[("💾 SQLite DB\n(Lists, History)")]
end
%% Providers
subgraph prov["Data Providers"]
C --> P["🍿 Provider System\n(Multiple Sources)"]
subgraph scrap["Web Scraping (Selenium)"]
P --> S["🌐 Selenium\n(Chrome Browser)"]
S --> I["🍿 IMDb\n(Charts, Lists)"]
S --> L["🍿 Letterboxd\n(Lists)"]
S --> M["🍿 MDBList\n(Collections)"]
S --> Si["🍿 Simkl\n(Watchlists (OAuth))"]
S --> T["🍿 TVDB\n(Favorites, Lists)"]
end
subgraph api["Direct APIs"]
P --> Tr["🔗 Trakt API --> 🍿 Trakt\n(Lists, Trending)"]
P --> Tm["🎭 TMDB API --> 🍿 TMDB\n(Lists, Collections)"]
P --> A["🍿 AniList GraphQL --> 🍿 AniList\n(Anime Lists)"]
P --> St["🍿 Steven Lu S3 --> 🍿 Steven Lu\n(Movies List)"]
end
end
%% Pipeline
subgraph pipe["Processing Pipeline"]
P --> E["🔍 Extract Data\n(Title, Year, ID)"]
E --> De["🔄 Deduplicate\n(IMDb ID)"]
De --> Se["🔎 Search Overseerr\n(Fuzzy Match)"]
Se --> Ch["✅ Check Status\n(Available?)"]
Ch --> R["🍿 Create Requests\n(Movies, Seasons)"]
end
%% Output
subgraph out["Output & Storage"]
R --> O["🎯 Overseerr\n(Media Requests)"]
R --> DB
end
%% Feedback
DB -.->|"Feedback Loop"| C
%% Darker Colors
style U fill:#a78bfa,stroke:#6b21a8,stroke-width:2px
style D fill:#8b5cf6,stroke:#7c3aed,stroke-width:2px
style B fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px
style C fill:#9333ea,stroke:#a855f7,stroke-width:3px
style DB fill:#581c87,stroke:#6b21a8,stroke-width:3px
style P fill:#a855f7,stroke:#9333ea,stroke-width:2px
style S fill:#8b5cf6,stroke:#7c3aed,stroke-width:2px
style Tr fill:#7c3aed,stroke:#6b21a8,stroke-width:2px
style Tm fill:#6b21a8,stroke:#581c87,stroke-width:2px
style A fill:#9333ea,stroke:#7c2d12,stroke-width:2px
style St fill:#9333ea,stroke:#7c2d12,stroke-width:2px
style E fill:#9333ea,stroke:#6b21a8,stroke-width:2px
style De fill:#7c3aed,stroke:#581c87,stroke-width:2px
style Se fill:#7c3aed,stroke:#581c87,stroke-width:2px
style Ch fill:#7c3aed,stroke:#581c87,stroke-width:2px
style R fill:#7c3aed,stroke:#581c87,stroke-width:2px
style O fill:#581c87,stroke:#4c1d95,stroke-width:3px
%% Subgraph Style
classDef sub fill:none,stroke:#a855f7,stroke-width:1px,stroke-dasharray: 3 3
class ui,core,prov,scrap,api,pipe,out sub
For a detailed technical breakdown, see our Architecture Documentation.
If you encounter any issues while using ListSync, please check our Troubleshooting Guide for solutions to common problems.
Quick Fixes:
For comprehensive documentation, visit our Documentation Hub or explore specific guides:
If you find ListSync useful and would like to support its development, consider becoming a sponsor:
Thank you for your support!
We welcome contributions! For guidelines on how to contribute, please see our Contributing Guide.
This project is licensed under the MIT License. Review the LICENSE file for more details.
For important legal information about using ListSync, please refer to our Legal Disclaimer.
2,587 followers · starred Sep 2024
0 followers · starred Jul 2025
2 followers · starred Feb 2025
Python
47.4%
Vue
41.6%
TypeScript
7.5%
CSS
1.2%
ListSync automates the import of your IMDB & Trakt lists into Overseerr & Jellyseerr, simplifying your movie management. https://discord.gg/Dy5xNzEHKw
See the codeListSync automatically syncs your watchlists from IMDb, Trakt and many more with Overseerr/Jellyseerr. No more manual adding - just add movies, shows, and anime to your favorite watchlist, and they'll appear in your media server automatically.
ListSync includes a web dashboard built with Nuxt 3 and Vue 3, providing an interface to manage all your sync operations without touching config files.
Access the dashboard at http://localhost:3222 and complete the setup wizard to connect your media server and watchlists.
Easy-to-use setup wizard for first-time configuration.
ListSync now supports browsing and syncing entire movie franchises.
Sync full collections with a single click.
No configuration files needed! Just run the container and open your browser.
docker run -d --name listsync -p 3222:3222 -p 4222:4222 -v listsync-data:/usr/src/app/data ghcr.io/woahai321/list-sync:main
That's it! Now go to http://localhost:3222 to finish setup.
# Clone and setup
git clone https://github.com/Woahai321/list-sync.git && cd list-sync
# (Optional: Configure a .env file)
# Use pre-built image
docker-compose up -d
# Or build from source
docker-compose -f docker-compose.local.yml up -d --build
Access:
http://localhost:3222http://localhost:4222/docshttp://localhost:4222/api/system/healthAll 3 services (Core Sync, FastAPI Backend, Nuxt Frontend) run in a single container managed by supervisor.
Minimal setup with just the sync engine
# 1. Clone the repository
git clone https://github.com/Woahai321/list-sync.git
cd list-sync
# 2. Copy and configure environment file
cp .env.example .env
nano .env # Add your Overseerr URL, API key, and lists
# 3. Start with the core docker-compose file
docker-compose -f docker-compose.core.yml up -d
# Done! Sync runs automatically in the background
Monitoring Core-Only:
# View logs
docker-compose -f docker-compose.core.yml logs -f
# Clone and install dependencies
git clone https://github.com/Woahai321/list-sync.git && cd list-sync
pip install -r requirements.txt -r api_requirements.txt
cd listsync-nuxt && npm install && cd ..
Create .env file with:
OVERSEERR_URL=http://your-overseerr:5055
OVERSEERR_API_KEY=your-api-key-here
IMDB_LISTS=top
Run these commands in 3 separate terminals:
Terminal 1 - Core Sync Service:
python -m list_sync
Terminal 2 - FastAPI Backend:
python start_api.py
Terminal 3 - Nuxt Frontend:
cd listsync-nuxt && npm run dev
Access:
http://localhost:3222http://localhost:4222/docshttp://localhost:4222/api/system/healthListSync now uses the official Trakt API v2 for improved reliability and performance. To use Trakt lists, you need to configure API credentials:
ListSync (or any name you prefer)urn:ietf:wg:oauth:2.0:oob (not used but required)Add your Client ID to your .env file or via the web dashboard:
# Trakt API Configuration
TRAKT_CLIENT_ID=your_client_id_here
ListSync can use the official TMDB API for improved reliability and performance. To use TMDB lists with API access, you need to configure API credentials:
ListSync (or any name you prefer)Media list synchronization toolhttps://github.com/Woahai321/list-syncAdd your API key to your .env file or via the web dashboard:
# TMDB API Configuration
TMDB_KEY=your_api_key_here
ListSync can use the official TVDB API for enhanced data quality. To use TVDB with API access, you need to configure API credentials:
ListSyncMedia list synchronization toolAdd your API key to your .env file or via the web dashboard:
# TVDB API Configuration
TVDB_KEY=your_api_key_here
https://www.imdb.com/list/ls012345678/https://www.imdb.com/chart/top/ (Top 250), https://www.imdb.com/chart/boxoffice/ (Box Office)https://www.imdb.com/user/ur12345678/watchlistls012345678top, boxoffice)ur12345678top (Top 250 Movies)boxoffice (Box Office)moviemeter (MovieMeter)tvmeter (TVMeter)https://trakt.tv/users/username/watchlisthttps://app.trakt.tv/users/username/lists/listnameListSync supports a shortcut format of list-type:media-type. Examples:
trending:movies - Top trending moviespopular:shows - Popular TV showsanticipated:movies - Most anticipated moviesAvailable Types:
Note: The boxoffice list type is only available for movies.
These special lists sync a configurable number of items (default: 20, can be set via TRAKT_SPECIAL_ITEMS_LIMIT environment variable).
https://www.themoviedb.org/list/12345https://www.themoviedb.org/list/67890-my-favorite-moviesNote: TMDB lists require the full URL format for proper access.
https://www.thetvdb.com/lists/67890Note: TVDB requires the full URL format.
https://letterboxd.com/username/list/my-list/https://letterboxd.com/username/watchlist/Note: Please have patience with this list provider as it relies on web scraping.
https://anilist.co/user/username/animelisthttps://anilist.co/user/username/animelist/PlanningusernameNote: Anime titles are automatically resolved to TMDB IDs via Trakt API for Overseerr compatibility. Resolution works with both English and Romaji titles.
https://mdblist.com/lists/username/listnameusername/listname⚠️ SIMKL provider is currently disabled.
SIMKL API currently only supports authenticated user watchlists and does not support custom public lists. We have been in contact with the developers and the required API endpoint for this tool does not have an ETA.
Future Plans: SIMKL support may be re-enabled if/when SIMKL API adds support for custom public lists.
For now, please use Trakt, IMDB, Letterboxd or any other provider for list syncing.
This is a curated list of popular movies maintained by Steven Lu, available at:
https://s3.amazonaws.com/popular-movies/movies.jsonTo enable this list, simply add the below variable:
STEVENLU_LISTS=stevenluThis will be recognized as the Steven Lu Popular Movies list.
All you need is a .env file with four settings:
OVERSEERR_URL=http://your-overseerr:5055 # Your Overseerr/Jellyseerr URL
OVERSEERR_API_KEY=your-api-key-here # Get from Overseerr Settings → General
TRAKT_CLIENT_ID=your-api-key-here # Trakt API Client ID
IMDB_LISTS=top # Start with IMDb Top 250
Optional Settings:
SYNC_INTERVAL=24 # Hours between syncs (default: 24)
AUTOMATED_MODE=true # Enable automatic syncing (default: true)
OVERSEERR_4K=false # Request 4K versions (default: false)
DISCORD_WEBHOOK_URL=... # Discord notifications (optional)
TZ=America/New_York # Your timezone (default: GMT)
# API Keys for Enhanced Functionality (Optional)
TMDB_KEY=... # TMDB API Key (for better performance)
TVDB_KEY=... # TVDB API Key (for enhanced data)
# List Configuration
IMDB_LISTS=top,boxoffice # IMDb lists to sync
TRAKT_LISTS=... # Trakt lists to sync
LETTERBOXD_LISTS=... # Letterboxd lists to sync
ANILIST_LISTS=... # AniList anime lists to sync (username or full URL)
MDBLIST_LISTS=... # MDBList lists to sync
# SIMKL_CLIENT_ID=... # SIMKL API Client ID (DISABLED - see SIMKL section)
# SIMKL_USER_TOKEN=... # SIMKL OAuth Token (DISABLED - see SIMKL section)
TVDB_LISTS=... # TVDB lists to sync (full URLs)
TMDB_LISTS=... # TMDB lists to sync (full URLs)
STEVENLU_LISTS=stevenlu # Steven Lu popular movies
The Add List wizard includes over 50+ curated presets. Just select and sync.
| Category | Presets (Click to Preview) |
|---|---|
| Charts | Top 250, Box Office, MovieMeter, TVMeter |
| Festivals | London Film Festival 2025, Sundance 2025 |
| Category | Presets (Click to Preview) |
|---|---|
| Streaming (Movies) | Netflix, Amazon Prime, Disney+, Hulu |
| Streaming (Shows) | Netflix, Amazon Prime, Disney+, Hulu, HBO, BBC |
| Genres (Movies) | Action, Comedy, Crime, Drama, Horror, Sci-Fi, Thriller, History, War, 80's Movies |
| Genres (Shows) | Comedy, Crime, Drama, Horror, Sci-Fi |
| Popular & Latest | Top Movies, Top Movies of the Week, Latest Releases, Latest Blu-ray Releases, Latest TV Shows |
| Recommendations | Gary Recommends, Recommended Movies, Movies from the Last Decade, TV Recommendations |
| Regional/Other | UK Shows, Video Nasties, Collaborations |
| Category | Presets (Click to Preview) |
|---|---|
| Movies | Trending, Popular, Anticipated, Most Watched, Box Office |
| TV Shows | Trending, Popular, Anticipated, Most Watched |
| Category | Presets (Click to Preview) |
|---|---|
| Top Rated | Top 250 Narrative, Top 250 Most Fans, 1001 Must See Movies |
| Curated | Movies to Watch Once, Feel Something |
| Category | Presets (Click to Preview) |
|---|---|
| Streaming | Netflix Movies, Amazon Prime Movies, Disney+ Movies, Netflix Shows, HBO Shows |
| Popular | Top Watched This Week |
| Category | Presets (Click to Preview) |
|---|---|
| Collections | All Movies (Unfiltered), Original Collection |
| Metacritic | Min 50, Min 60, Min 70, Min 80 |
| IMDb | Min 5.0, Min 6.0, Min 7.0, Min 8.0 |
| Rotten Tomatoes | Min 50, Min 60, Min 70, Min 80 |
| Category | Presets (Click to Preview) |
|---|---|
| Charts | Top 250 IMDB, IMDB 50 Most Popular, Top 10 Movies |
| Box Office | All Time Box Office |
ListSync automatically timestamps all sync activities and displays them in the web interface. To ensure timestamps match your local time, configure your timezone using any of the three supported formats below.
ListSync supports three timezone formats for maximum flexibility:
# docker-compose.yml or .env file
environment:
- TZ=Europe/Paris # France (CET/CEST with DST)
- TZ=America/New_York # US Eastern (EST/EDT with DST)
- TZ=America/Los_Angeles # US Pacific (PST/PDT with DST)
- TZ=America/Chicago # US Central (CST/CDT with DST)
- TZ=Asia/Tokyo # Japan
- TZ=Australia/Sydney # Australia Eastern
- TZ=Europe/London # UK (GMT/BST with DST)
# docker-compose.yml or .env file
environment:
- TZ=EST # US Eastern Standard Time
- TZ=PST # US Pacific Standard Time
- TZ=CET # Central European Time
- TZ=GMT # Greenwich Mean Time
- TZ=BST # British Summer Time
- TZ=AEST # Australian Eastern Standard Time
# docker-compose.yml or .env file
environment:
# UTC offsets
- TZ=UTC # Coordinated Universal Time
- TZ=UTC+1 # Central European Time
- TZ=UTC-5 # US Eastern Time
- TZ=UTC-8 # US Pacific Time
- TZ=UTC+8 # China/Singapore Time
- TZ=UTC+5:30 # India Standard Time
# GMT offsets (equivalent to UTC)
- TZ=GMT+1 # Central European Time
- TZ=GMT-5 # US Eastern Time
timedatectl or cat /etc/timezone| Format | Best For | Handles DST? | Example |
|---|---|---|---|
| IANA Names | Production use | ✅ Yes | Europe/Paris |
| Abbreviations | Quick setup | ✅ Yes | EST, CET |
| UTC/GMT Offsets | Testing, fixed offsets | ❌ No | UTC+1, GMT-5 |
Tip: Use IANA timezone names for production deployments as they automatically handle Daylight Saving Time (DST) transitions!
SeerrBridge is our companion application that provides an alternative to traditional *arr stack (Radarr/Sonarr) setup. It works alongside ListSync to create a complete media management solution:
For detailed information about SeerrBridge, visit the SeerrBridge Repository.
%%{init: {'flowchart': {'diagramPadding': 20, 'nodeSpacing': 25, 'rankSpacing': 35, 'curve': 'linear'}}}%%
graph LR
%% Condensed Flow with Reduced Text and More Padding
%% UI
subgraph ui["User Interaction"]
U["🍿 User Opens Dashboard\n(localhost:3222)"] --> D["🍿 Nuxt Dashboard\n(Port 3222)"] --> B["🔌 FastAPI Backend\n(Port 4222)"]
end
%% Core
subgraph core["Core System"]
B --> C["⚙️ Core Sync Engine\n(Python)"] --> DB[("💾 SQLite DB\n(Lists, History)")]
end
%% Providers
subgraph prov["Data Providers"]
C --> P["🍿 Provider System\n(Multiple Sources)"]
subgraph scrap["Web Scraping (Selenium)"]
P --> S["🌐 Selenium\n(Chrome Browser)"]
S --> I["🍿 IMDb\n(Charts, Lists)"]
S --> L["🍿 Letterboxd\n(Lists)"]
S --> M["🍿 MDBList\n(Collections)"]
S --> Si["🍿 Simkl\n(Watchlists (OAuth))"]
S --> T["🍿 TVDB\n(Favorites, Lists)"]
end
subgraph api["Direct APIs"]
P --> Tr["🔗 Trakt API --> 🍿 Trakt\n(Lists, Trending)"]
P --> Tm["🎭 TMDB API --> 🍿 TMDB\n(Lists, Collections)"]
P --> A["🍿 AniList GraphQL --> 🍿 AniList\n(Anime Lists)"]
P --> St["🍿 Steven Lu S3 --> 🍿 Steven Lu\n(Movies List)"]
end
end
%% Pipeline
subgraph pipe["Processing Pipeline"]
P --> E["🔍 Extract Data\n(Title, Year, ID)"]
E --> De["🔄 Deduplicate\n(IMDb ID)"]
De --> Se["🔎 Search Overseerr\n(Fuzzy Match)"]
Se --> Ch["✅ Check Status\n(Available?)"]
Ch --> R["🍿 Create Requests\n(Movies, Seasons)"]
end
%% Output
subgraph out["Output & Storage"]
R --> O["🎯 Overseerr\n(Media Requests)"]
R --> DB
end
%% Feedback
DB -.->|"Feedback Loop"| C
%% Darker Colors
style U fill:#a78bfa,stroke:#6b21a8,stroke-width:2px
style D fill:#8b5cf6,stroke:#7c3aed,stroke-width:2px
style B fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px
style C fill:#9333ea,stroke:#a855f7,stroke-width:3px
style DB fill:#581c87,stroke:#6b21a8,stroke-width:3px
style P fill:#a855f7,stroke:#9333ea,stroke-width:2px
style S fill:#8b5cf6,stroke:#7c3aed,stroke-width:2px
style Tr fill:#7c3aed,stroke:#6b21a8,stroke-width:2px
style Tm fill:#6b21a8,stroke:#581c87,stroke-width:2px
style A fill:#9333ea,stroke:#7c2d12,stroke-width:2px
style St fill:#9333ea,stroke:#7c2d12,stroke-width:2px
style E fill:#9333ea,stroke:#6b21a8,stroke-width:2px
style De fill:#7c3aed,stroke:#581c87,stroke-width:2px
style Se fill:#7c3aed,stroke:#581c87,stroke-width:2px
style Ch fill:#7c3aed,stroke:#581c87,stroke-width:2px
style R fill:#7c3aed,stroke:#581c87,stroke-width:2px
style O fill:#581c87,stroke:#4c1d95,stroke-width:3px
%% Subgraph Style
classDef sub fill:none,stroke:#a855f7,stroke-width:1px,stroke-dasharray: 3 3
class ui,core,prov,scrap,api,pipe,out sub
For a detailed technical breakdown, see our Architecture Documentation.
If you encounter any issues while using ListSync, please check our Troubleshooting Guide for solutions to common problems.
Quick Fixes:
For comprehensive documentation, visit our Documentation Hub or explore specific guides:
If you find ListSync useful and would like to support its development, consider becoming a sponsor:
Thank you for your support!
We welcome contributions! For guidelines on how to contribute, please see our Contributing Guide.
This project is licensed under the MIT License. Review the LICENSE file for more details.
For important legal information about using ListSync, please refer to our Legal Disclaimer.
2,587 followers · starred Sep 2024
0 followers · starred Jul 2025
2 followers · starred Feb 2025
Python
47.4%
Vue
41.6%
TypeScript
7.5%
CSS
1.2%