🌉 SeerrBridge is a browser automation tool that integrates Jellyseer/Overseerr with Debrid Media Manager. It listens to movie requests via Overseerr webhook. It automates the torrent search and download process using Debrid Media Manager via browser automation, which in turn, gets sent to Real-Debrid. This streamlines your media management, making it fast and efficient.
🛠️ Why SeerrBridge?
SeerrBridge eliminates the need to set up multiple applications like Radarr, Sonarr, Jackett, FlareSolverr, and other download clients. With SeerrBridge, you streamline your media management into one simple, automated process. No more juggling multiple tools—just request and download!
Simply put, I was too lazy to set up all of these other applications (arrs) and thought.... I want this instead.
- Automated Movie Requests: Automatically processes movie requests from Overseerr and fetches torrents from Debrid Media Manager.
- Debrid Media Manager Integration: Uses DMM to automate (via browser) torrent search & downloads.
- Persistent Browser Session: Keeps a browser session alive using Selenium, ensuring faster and more seamless automation.
- Queue Management: Handles multiple requests with an asynchronous queue, ensuring smooth processing.
- Error Handling & Logging: Provides comprehensive logging and error handling to ensure smooth operation.
- Setting Custom Regex / Filter in Settings: Upon launch, the script with automate the addition of a regex filter which can be updated in code.
Service | Status | Notes |
---|---|---|
List Sync | ✅ | Our other Seerr app for importing lists |
Jellyseerr | ✅ | Main integration. Supports movie requests via webhook |
Overseerr | ✅ | Base application Jellyseerr is based on |
Debrid Media Manager | ✅ | Torrent fetching automation |
Real-Debrid | ✅ | Unrestricted (torrent) downloader |
SuggestArr | ✅ | Automatically grab related content and send to Jellyseerr/Overseerr |
Windows & Linux | ✅ | Tested and working in both Windows & Linux environments |
Before you can run this script, ensure that you have the following prerequisites:
-
SeerrBridge should be running on the same machine that Jellyseerr / Overseerr is running on.
-
You will navigate to Settings > Notifications > Webhook > Turn it on, and configure as shown below
http://localhost:8777/jellyseer-webhook/
- You will need a valid Real-Debrid account to authenticate and interact with the Debrid Media Manager.
- The Debrid Media Manager Access token, Client ID, Client Secret, & Refresh Tokens are used and should be set within your .env file. Grab this from your browser via Inspect >
This is what you want to copy from your local storage and set in your .env:
{"value":"your_token","expiry":123} | YOUR_CLIENT_ID | YOUR_CLIENT_SECRET | YOUR_REFRESH_TOKEN
- The bot requires Python 3.10.11 or higher. You can download Python from here.
- You can install the required libraries by running:
pip install -r requirements.txt
Create a .env
(or rename the example .env) file in the root directory of the project and add the following environment variables:
RD_ACCESS_TOKEN={"value":"YOUR_TOKEN","expiry":123456789}
RD_REFRESH_TOKEN=YOUR_REFRESH_TOKEN
RD_CLIENT_ID=YOUR_CLIENT_ID
RD_CLIENT_SECRET=YOUR_CLIENT_SECRET
TRAKT_API_KEY=YOUR_TRAKT_TOKEN
OVERSEERR_API_KEY=YOUR_OVERSEERR_TOKEN
OVERSEERR_BASE=https://YOUR_OVERSEERR_URL.COM
HEADLESS_MODE=true
ENABLE_AUTOMATIC_BACKGROUND_TASK=true
REFRESH_INTERVAL_MINUTES=120
TORRENT_FILTER_REGEX=^(?!.*【.*?】)(?!.*[\u0400-\u04FF])(?!.*\[esp\]).*
Configure your webhook as mentioned above so SeerrBridge can ingest and process approval requests.
- Clone the repository:
git clone https://github.com/Woahai321/SeerrBridge.git cd SeerrBridge
- Install dependencies:
pip install -r requirements.txt
- Run the application:
python seerrbridge.py
-
Clone the repository:
git clone https://github.com/Woahai321/SeerrBridge.git cd SeerrBridge
-
Copy the example
.env
file and update it with your specific configuration:cp .env.example .env
Example
.env
:RD_ACCESS_TOKEN={"value":"YOUR_TOKEN","expiry":123456789} RD_REFRESH_TOKEN=YOUR_REFRESH_TOKEN RD_CLIENT_ID=YOUR_CLIENT_ID RD_CLIENT_SECRET=YOUR_CLIENT_SECRET TRAKT_API_KEY=YOUR_TRAKT_TOKEN OVERSEERR_API_KEY=YOUR_OVERSEERR_TOKEN OVERSEERR_BASE=https://YOUR_OVERSEERR_URL.COM HEADLESS_MODE=true ENABLE_AUTOMATIC_BACKGROUND_TASK=true REFRESH_INTERVAL_MINUTES=120 TORRENT_FILTER_REGEX=^(?!.*【.*?】)(?!.*[\u0400-\u04FF])(?!.*\[esp\]).*
-
Start the container:
docker-compose up -d
-
Access the app at: http://localhost:8777.
Skip Compose and run the container directly:
docker run -d \
--name seerrbridge \
-p 8777:8777 \
-v $(pwd)/config:/app/config \
-e RD_ACCESS_TOKEN={"value":"YOUR_TOKEN","expiry":123456789} \
-e RD_REFRESH_TOKEN=YOUR_REFRESH_TOKEN \
-e RD_CLIENT_ID=YOUR_CLIENT_ID \
-e RD_CLIENT_SECRET=YOUR_CLIENT_SECRET \
-e TRAKT_API_KEY=YOUR_TRAKT_TOKEN \
-e OVERSEERR_API_KEY=YOUR_OVERSEERR_TOKEN \
-e OVERSEERR_BASE=https://YOUR_OVERSEERR_URL.COM \
-e HEADLESS_MODE=true \
-e ENABLE_AUTOMATIC_BACKGROUND_TASK=true \
-e REFRESH_INTERVAL_MINUTES=120 \
-e TORRENT_FILTER_REGEX=^(?!.*【.*?】)(?!.*[\u0400-\u04FF])(?!.*\[esp\]).* \
ghcr.io/woahai321/seerrbridge:main
That's it! Your SeerrBridge container should now be up and running. 🚀
- Faster Processing: Implement concurrency to handle multiple requests simultaneously.
- TV Show Support: Extend functionality to handle TV series and episodes.
- DMM Token: Ensure access token permanence/refresh
- Jellyseer/Overseer API Integration: Direct integration with Jellyseer/Overseer API for smoother automation and control.
- Title Parsing: Ensure torrent titles/names are properly matched and handle different languages.
- Docker Support: Allow for Docker / Compose container.
- Seerr Webhook: SeerrBridge listens for movie requests via the configured webhook.
- Automated Search: It uses Selenium to automate the search for movies on Debrid Media Manager site.
- Torrent Fetching: Once a matching torrent is found, SeerrBridge automates the Real-Debrid download process.
- Queue Management: Requests are added to a queue and processed one by one, ensuring smooth and efficient operation.
If you want to see the automation working in real-time, you can edit the .env and set it to false
This will launch a visible Chrome browser. Be sure not to mess with it while it's operating or else you will break the current action/script and need a re-run.
Example:
This script includes support for custom regex filtering, allowing you to filter out unwanted items and refine the results based on specific patterns. The regex is automatically added when the script runs, and you can customize it directly in the code.
The currently used regex is:
^(?!.*【.*?】)(?!.*[\u0400-\u04FF])(?!.*\[esp\]).*
- Exclude Items with
【...】
:(?!.*【.*?】)
removes items with formatted text in this style. - Exclude Cyrillic Characters:
(?!.*[\u0400-\u04FF])
removes items containing characters from Cyrillic scripts (e.g., Russian text). - Exclude Items with
[esp]
:(?!.*\[esp\])
removes items explicitly marked as[esp]
(often denoting Spanish content). - Match All Other Content:
.*
ensures the filter applies to the rest of the string.
This is a broad exclusion-based filter that removes unwanted patterns without requiring specific inclusions.
If you'd like to refine the filter further to only match items containing 1080p or 2160p, you can use the following optional regex:
^(?=.*(1080p|2160p))(?!.*【.*?】)(?!.*[\u0400-\u04FF])(?!.*\[esp\]).*
- Include Only Items with
1080p
or2160p
:(?=.*(1080p|2160p))
ensures that only items with these resolutions are processed. - The rest of the filter (exclude
【...】
, Cyrillic characters, or[esp]
) works the same as in the default regex.
To switch between the default and optional regex, simply update the .env
file:
-
Default Regex:
^(?!.*【.*?】)(?!.*[\u0400-\u04FF])(?!.*\[esp\]).*
-
Optional Regex:
^(?=.*(1080p|2160p))(?!.*【.*?】)(?!.*[\u0400-\u04FF])(?!.*\[esp\]).*
This gives you flexibility to define what gets filtered, based on your preferred criteria.
Below is a categorized list of regex patterns for different filtering possibilities.
^(?!.*【.*?】)(?!.*[\u0400-\u04FF])(?!.*\[esp\]).*
^(?=.*(1080p|2160p))(?!.*【.*?】)(?!.*[\u0400-\u04FF])(?!.*\[esp\]).*
^(?=.*(Remux|BluRay|BDRip|BRRip))(?!.*【.*?】)(?!.*[\u0400-\u04FF])(?!.*\[esp\]).*
^(?=.*(1080p|2160p))(?=.*(Remux|BluRay|BDRip|BRRip))(?!.*【.*?】)(?!.*[\u0400-\u04FF])(?!.*\[esp\]).*
^(?=.*(1080p|2160p)).*
^(?=.*(Remux|BluRay|BDRip|BRRip)).*
^(?=.*(1080p|2160p))?(?=.*(Remux|BluRay|BDRip|BRRip))?(?!.*【.*?】)(?!.*[\u0400-\u04FF])(?!.*\[esp\]).*
By selecting one of these patterns, you can tailor the regex filter to fit your exact needs.
Have any questions or need help? Feel free to open an issue or connect with us on LinkedIn.
We welcome contributions! Here’s how you can help:
- Fork the repository on GitHub.
- Create a new branch for your feature or bug fix.
- Commit your changes.
- Submit a pull request for review.
If you find SeerrBridge useful and would like to support its development, consider making a donation:
- BTC (Bitcoin):
bc1qxjpfszwvy3ty33weu6tjkr394uq30jwkysp4x0
- ETH (Ethereum):
0xAF3ADE79B7304784049D200ea50352D1C717d7f2
Thank you for your support!
This project is licensed under the MIT License.
Kevin 💻 🐛 |
This repository and the accompanying software are intended for educational purposes only. The creators and contributors of this project do not condone or encourage the use of this tool for any illegal activities, including but not limited to copyright infringement, illegal downloading, or torrenting copyrighted content without proper authorization.
- SeerrBridge is designed to demonstrate and automate media management workflows. It is the user's responsibility to ensure that their usage of the software complies with all applicable laws and regulations in their country.
- The tool integrates with third-party services which may have their own terms of service. Users must adhere to the terms of service of any external platforms or services they interact with.
- The authors and contributors of this project are not liable for any misuse or claims that arise from the improper use of this software. You are solely responsible for ensuring that your use of this software complies with applicable copyright laws and other legal restrictions.
- We do not provide support or assistance for any illegal activities or for bypassing any security measures or protections.
This tool is provided as-is, for educational purposes, and to help users automate the management of their own legally obtained media. It is not intended to be used for pirating or distributing copyrighted material without permission.
If you are unsure about the legality of your actions, you should consult with a legal professional before using this software.