A Web app to Cross-Seed torrents in Deluge/qBittorrent/Transmission

Overview

SeedCross

  • A Web app to Cross-Seed torrents in Deluge/qBittorrent/Transmission
  • based on CrossSeedAutoDL

screenshot

Require

  • Jackett
  • Deluge/qBittorrent/Transmission
  • Docker

Installation

docker run -d --name seedcross -p 8019:8019 ccf2012/seedcross:latest

Login

  1. open http:// :8019 in browser
  2. login with admin:admin

Settings

  • Start from Settings tab, fill the fields carefully:
  1. Download Client Setting:
  2. Type, Host, Port, Username, Password as usual, note the Host must be an IP address, not url.
  3. Jackett Setting:
  4. you should have started a proper configured Jackett server, thus you can get the Jackett Url and Jackett Api key,
  5. Trackers / Indexers in Jackett: the only optional field, leave it blank if you would seach all the trackers; when you want to search specific tracker, you should find the exact word between indexers/ and /results in the torznab feed URL in Jackett
  6. Flow Control Setting:
  7. Flow control: Count limit: every search query will lead load to the tracker server, limit this count as your feel safe, SeedCross will manage the search history and find the next un-searched torrent when you start cross next time.
  8. Flow control: Interval: time delay between 2 search query.
  9. After you fill the form, press Save Settings, if no error detected, it will redirect to the Start Cross page, otherwise there will be error message next to the field.

Start Crossing

  • press Start Cross button, seedcross will start to:

    1. load the torrents from the download client.
    2. parse the name to get the title,year,episode etc, with these keyword ask Jackett server to search torrents in your pre-configured trackers.
    3. check if there's match by title and size.
    4. add the download link to the download client, in paused state.
    5. and Yes, if the configuration haven't been set, it will redirect to the Settings page.
  • during the process, a progress panel will show up, with:

  • Total/Searched torrents in the download client

  • Flow-Limit/Searched of this session

  • Downloaded torrent in this session

  • a log message box showing the info/error messages of the process

    • note: the log message is for monitoring the process, it will lost when page refresh.
  • the process will stop when:

    • configuration error: download client / jackett,
    • reach the Flow limit count
    • or all torrents in the client has been searched.
    • the progress panel will disappear when page refreshed.

Search History

  • Torrents that has been searched will be recorded, they won't bother the trackers for the next process.
  • but when you add new trackers you may want to redo the search, click the Clear Search History will delete all the records.

Plans

  • Scheduler to run the task periodically
  • Seperate tracker to search different media
  • Hardlink tweaks of file/folder to get more crossed.
  • Open to you Dai-lo's suggestions.

Acknowledgement

  1. Aruba@hutongyouwu
  2. CrossSeedAutoDL
Comments
  • Stops at

    Stops at "Loading torrents in the client" "KeyError: b'download_location'"

    Traceback (most recent call last):
      File "/usr/local/lib/python3.10/site-packages/background_task/tasks.py", line 43, in bg_runner
        func(*args, **kwargs)
      File "/code/seedcross/crseed/tasks.py", line 80, in backgroundCrossSeedTask
        iterTorrents(dlclient, param, log)
      File "/code/seedcross/crseed/CrossSeedAutoDL.py", line 425, in iterTorrents
        torList = dlclient.loadTorrents()
      File "/code/seedcross/crseed/torclient.py", line 384, in loadTorrents
        st = self.mkSeedTor(deTor)
      File "/code/seedcross/crseed/torclient.py", line 278, in mkSeedTor
        save_path=deTor[b'download_location'].decode("utf-8"),
    KeyError: b'download_location'
    Marking task proceed_cross_seed as failed
    
    opened by tordenflesk 6
  • Feature Request - Add option to skip verify on qbit

    Feature Request - Add option to skip verify on qbit

    Qbittorrent has the option to skip verification.

    Currently all torrents are added in a paused state and no check has been carried out which means that you have to remove the torrent and readd it with skip verify to be able to start it.

    If you do a recheck of the torrents that are added currently if a file in the torrent is missing such as a NFO then all the torrent data gets moved to incomplete folder(if you have incomplete folder enabled), this means the same torrent from other private trackers fails as it can not find the files to seed. What happens then is that Qbittorrent can start to download the same data at the same time from multiple trackers.

    If skip verification is enabled when adding the torrent it means that if a file such as the NFO is missing it will fail skip verification and the torrent wont start and the torrent data wont be moved so it wont affect the same torrent from other private trackers.

    It looks like this is possible with the qbit-api and all that is required for the api call is to add the below and then also add a check box to the UI to enable or disable it.

    result = self.qbClient.torrents_add(
                        urls=tor_url,
                        is_paused=True,
                        skip_checking=var_skip,
                        save_path=download_location,
                        download_path=download_location )
                    if 'OK' in result.upper():
    

    https://github.com/qbittorrent/qBittorrent/wiki/WebUI-API-(qBittorrent-4.1)

    opened by swannie-eire 5
  • Feature request - add list of trackers to exclude

    Feature request - add list of trackers to exclude

    I currently have about 100+ trackers in jackett and some of these are public and i dont want to dl torrents from public trackers.

    It doesnt look like the response from jackett includes the tracker type e.g private, public etc.. So it doesnt look like it will be possible to have an option to just download torrent from private sites.

    Instead of me adding the trackers to use i would prefer the opposite(negate) as i have only a handful of public but have tonnes of private trackers.

    opened by swannie-eire 4
  • Exception during response parsing - Failing to connect to Qbittorrent.

    Exception during response parsing - Failing to connect to Qbittorrent.

    So currently i am running Qbittorrent 4.3.8 but when I start the seedcross it seems to fail to connect to qbittorrent from the logs.

    The credentials im using are correct and i logged into the container and confirmed it can reach qbittorrent on the required port.

    these are the logs i am getting from the seedcross container.

    2022-02-08T16:19:34.372592391Z json.decoder.JSONDecodeError: Unterminated string starting at: line 1 column 468320 (char 468319)
    2022-02-08T16:19:34.372604100Z
    2022-02-08T16:19:34.372615324Z During handling of the above exception, another exception occurred:
    2022-02-08T16:19:34.372626888Z
    2022-02-08T16:19:34.372637984Z Traceback (most recent call last):
    2022-02-08T16:19:34.372665042Z   File "/usr/local/lib/python3.10/site-packages/background_task/tasks.py", line 43, in bg_runner
    2022-02-08T16:19:34.372678361Z     func(*args, **kwargs)
    2022-02-08T16:19:34.372689472Z   File "/code/seedcross/crseed/tasks.py", line 80, in backgroundCrossSeedTask
    2022-02-08T16:19:34.372700864Z     iterTorrents(dlclient, param, log)
    2022-02-08T16:19:34.372711950Z   File "/code/seedcross/crseed/CrossSeedAutoDL.py", line 342, in iterTorrents
    2022-02-08T16:19:34.372723419Z     torList = dlclient.loadTorrents()
    2022-02-08T16:19:34.372734412Z   File "/code/seedcross/crseed/torclient.py", line 196, in loadTorrents
    2022-02-08T16:19:34.372745740Z     torList = self.qbClient.torrents_info()
    2022-02-08T16:19:34.372756840Z   File "/usr/local/lib/python3.10/site-packages/qbittorrentapi/decorators.py", line 127, in wrapper
    2022-02-08T16:19:34.372769186Z     return f(client, *args, **kwargs)
    2022-02-08T16:19:34.372780241Z   File "/usr/local/lib/python3.10/site-packages/qbittorrentapi/decorators.py", line 187, in wrapper
    2022-02-08T16:19:34.372791801Z     raise APIError("Exception during response parsing. Error: %s" % repr(e))
    2022-02-08T16:19:34.372803443Z qbittorrentapi.exceptions.APIError: Exception during response parsing. Error: JSONDecodeError('Unterminated string starting at: line 1 column 468320 (char 468319)')
    2022-02-08T16:19:34.384294652Z Marking task proceed_cross_seed as failed
    2022-02-08T16:20:19.112966538Z Rescheduling proceed_cross_seed
    2022-02-08T16:20:19.113031774Z Traceback (most recent call last):
    2022-02-08T16:20:19.113049637Z   File "/usr/local/lib/python3.10/site-packages/qbittorrentapi/decorators.py", line 178, in wrapper
    2022-02-08T16:20:19.113062125Z     result = response.json()
    2022-02-08T16:20:19.113073659Z   File "/usr/local/lib/python3.10/site-packages/requests/models.py", line 910, in json
    2022-02-08T16:20:19.113085688Z     return complexjson.loads(self.text, **kwargs)
    2022-02-08T16:20:19.113097305Z   File "/usr/local/lib/python3.10/json/__init__.py", line 346, in loads
    2022-02-08T16:20:19.113109231Z     return _default_decoder.decode(s)
    2022-02-08T16:20:19.113120754Z   File "/usr/local/lib/python3.10/json/decoder.py", line 337, in decode
    2022-02-08T16:20:19.113132688Z     obj, end = self.raw_decode(s, idx=_w(s, 0).end())
    2022-02-08T16:20:19.113144434Z   File "/usr/local/lib/python3.10/json/decoder.py", line 353, in raw_decode
    2022-02-08T16:20:19.113156312Z     obj, end = self.scan_once(s, idx)
    2022-02-08T16:20:19.113167786Z json.decoder.JSONDecodeError: Expecting ',' delimiter: line 1 column 225472 (char 225471)
    2022-02-08T16:20:19.113179524Z
    2022-02-08T16:20:19.113190831Z During handling of the above exception, another exception occurred:
    2022-02-08T16:20:19.113202440Z
    2022-02-08T16:20:19.113213751Z Traceback (most recent call last):
    2022-02-08T16:20:19.113240744Z   File "/usr/local/lib/python3.10/site-packages/background_task/tasks.py", line 43, in bg_runner
    2022-02-08T16:20:19.113254740Z     func(*args, **kwargs)
    2022-02-08T16:20:19.113265945Z   File "/code/seedcross/crseed/tasks.py", line 80, in backgroundCrossSeedTask
    2022-02-08T16:20:19.113277404Z     iterTorrents(dlclient, param, log)
    2022-02-08T16:20:19.113288496Z   File "/code/seedcross/crseed/CrossSeedAutoDL.py", line 342, in iterTorrents
    2022-02-08T16:20:19.113299914Z     torList = dlclient.loadTorrents()
    2022-02-08T16:20:19.113310964Z   File "/code/seedcross/crseed/torclient.py", line 196, in loadTorrents
    2022-02-08T16:20:19.113322316Z     torList = self.qbClient.torrents_info()
    2022-02-08T16:20:19.113333300Z   File "/usr/local/lib/python3.10/site-packages/qbittorrentapi/decorators.py", line 127, in wrapper
    2022-02-08T16:20:19.113344772Z     return f(client, *args, **kwargs)
    2022-02-08T16:20:19.113355694Z   File "/usr/local/lib/python3.10/site-packages/qbittorrentapi/decorators.py", line 187, in wrapper
    2022-02-08T16:20:19.113367174Z     raise APIError("Exception during response parsing. Error: %s" % repr(e))
    2022-02-08T16:20:19.113378762Z qbittorrentapi.exceptions.APIError: Exception during response parsing. Error: JSONDecodeError("Expecting ',' delimiter: line 1 column 225472 (char 225471)")
    2022-02-08T16:20:19.131909067Z Marking task proceed_cross_seed as failed
    

    confirmed connection from the container. Screenshot 2022-02-08 at 16 17 14

    Screenshot 2022-02-08 at 16 27 14

    opened by swannie-eire 4
  • My torrents on QBittorrent were deleted!

    My torrents on QBittorrent were deleted!

    I ran Seedcross, and for any torrent that it found available to cross-seed, it added that torrent to QBit but removed the original one. Is this a known issue? And is there any way for me to recover what was lost? The search history is still viewable

    Edit: I wasn't signed in to most of my private trackers on Jackett, could that be the issue? Either way, is there a way for me to use the sqlite db to re-add my torrents to Qbit?

    opened by saml1 1
  • Trackers / Indexers to search working?

    Trackers / Indexers to search working?

    Does this feature actually work as in my tests it does not. I took the name/value of the indexer from the torzab. e.g. jt/api/v2.0/indexers/broadcity/results/torznab/ = broadcity

    Tailing the logs of jackett it seems to search all the trackers when searching. As i have hundreds of indexers it can take minutes for a full search of all indexers. In most cases i will just want to search 1 tracker that i may of recently gotten access to.

    2022-02-14 13:49:00.6925 Info Manual search in t1, t2, t3, t4, tn for Some Movie => Found 3615 releases
    

    I would assume when you have only a single tracker listed it would just search that like it would when you do a manual search from the UI. e.g

    2022-02-14 14:07:54.4795 Info Manual search in broadcity for Some Movie => Found 2 releases
    

    Screenshot 2022-02-14 at 14 11 58

    opened by swannie-eire 1
  • Not adding torrents to qbittorrent

    Not adding torrents to qbittorrent

    Running qbittorrent version 4.3.9. I have everything configured correctly as SeedCross is able to reach my qbittorrent server and login, and it's able to send the search jobs to Prowlarr but when it tries to inject the download to qbittorrent it's denied like so:

    Torrent: [ TV ] Welcome.to.Wrexham.S01E17.1080p.WEB.H264-PLZPROPER Searching: Welcome to Wrexham S01 E17 1 matched of 36 results. Grabbing release: Welcome to Wrexham S01E17 1080p WEB H264-PLZPROPER Torrent not added! Maybe exists.

    Well of course it exists...because I've already downloaded it from another tracker. Something is keeping SeedCross from adding the torrent to qbittorrent when it already exists previously. Any thoughts?

    opened by mshorey 1
  • Recheck/Resume

    Recheck/Resume

    Torrents get added in a paused state (on qbit at least), if the matching files are confirmed by seedcross, it would be good to perform a recheck and resume. Also an option to delete torrents if no match is found would be good

    opened by craigjmidwinter 0
  • improvements for seedcross and qbittorrent integration

    improvements for seedcross and qbittorrent integration

    Seedcross improvements Torrents returned by jackett are now checked if they are private and only added to torrent client if private. If you have public trackers configured in jackett then seedcross ends up adding public trackers if this feature is not there.

    Qbittorrent improvements Added tags to torrents so now the tracker the torrent was downloaded from is added. Added skip hash check on torrents so they can be started immediately without the need for rechecking. Note torrents will not recheck if name is incorrect, missing files etc.. so chance of starting a bad torrent is low. removed the adding of category to qbit with timestamp. <- i dont see the value in this which is why i removed it.

    opened by swannie-eire 0
  • SSL自签证书问题(SSL self-signed)

    SSL自签证书问题(SSL self-signed)

    There was an error during auth_log_in: APIConnectionError('Failed to connect to qBittorrent. This is likely due to using an untrusted certificate (likely self-signed) for HTTPS qBittorrent WebUI. To suppress this error (and skip certificate verification consequently exposing the HTTPS connection to man-in-the-middle attacks), set VERIFY_WEBUI_CERTIFICATE=False when instantiating Client or set environment variable PYTHON_QBITTORRENTAPI_DO_NOT_VERIFY_WEBUI_CERTIFICATE to a non-null value. SSL Error: SSLError(MaxRetryError("HTTPSConnectionPool(host='', port=): Max retries exceeded with url: /api/v2/auth/login (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:997)')))"))')

    看起来在这里 https://github.com/ccf-2012/seedcross/blob/452bbe43368712d871baa46b094cd4f0028bc1b3/crseed/torclient.py#L151

    由于用的podman,不太清楚要怎么动手,webui里看起来也没有设置项

    opened by ted423 1
  • Could not connect to Deluge

    Could not connect to Deluge

    I'm unable to get seedcross to connect to deluge and I'm not sure what the issue is. I get this log every time:

    Connecting: 192.168.0.3 Connecting to 192.168.0.3:8112 Could not connect to Deluge 192.168.0.3 Connect failed: 192.168.0.3 Finished of this session

    i've tried the webUI port, the network port, and the daemon port and they all fail.

    opened by sage2050 3
Owner
ccf2012
ccf2012
TurtleBot Control App - TurtleBot Control App With Python

TURTLEBOT CONTROL APP INDEX: 1. Introduction 2. Environments 2.1. Simulated Envi

Rafanton 4 Aug 3, 2022
SWS Filters App - SWS Filters App With Python

SWS Filters App Fun ?? ... Fun ?? Click On photo and see ?? ?? ?? Your Video rec

Sagar Jangid 3 Jul 7, 2022
TickerRain is an open-source web app that stores and analysis Reddit posts in a transparent and semi-interactive manner.

TickerRain is an open-source web app that stores and analysis Reddit posts in a transparent and semi-interactive manner

GonVas 180 Oct 8, 2022
Reactjs web app written entirely in python, using transcrypt compiler.

Reactjs web app written entirely in python, using transcrypt compiler.

Dan Shai 22 Nov 27, 2022
A web app for presenting my research in BEM(building energy model) simulation

BEM(building energy model)-SIM-APP The is a web app presenting my research in BEM(building energy model) calibration. You can play around with some pa

null 8 Sep 3, 2021
Web app to find your chance of winning at Texas Hold 'Em

poker_mc Web app to find your chance of winning at Texas Hold 'Em A working version of this project is deployed at poker-mc.ue.r.appspot.com. It's run

Aadith Vittala 7 Sep 15, 2021
Web App for University Project

University Project About I made this web app to finish a project assigned by my teacher. It is written entirely in Python, thanks to streamlit to make

null 15 Nov 27, 2022
Web app for keeping track of buildings in danger of collapsing in the event of an earthquake

Bulina Roșie ???? Un cutremur în București nu este o situație ipotetică. Este o certitudine că acest lucru se va întâmpla. În acest context, la mai bi

Code for Romania 27 Nov 29, 2022
A web app that is written entirely in Python

University Project About I made this web app to finish a project assigned by my teacher. It is written entirely in Python, thanks to streamlit to make

null 15 Nov 27, 2022
🤖🤖 Jarvis is an virtual assistant which can some tasks easy for you like surfing on web opening an app and much more... 🤖🤖

Jarvis ?? ?? Jarvis is an virtual assistant which can some tasks easy for you like surfing on web opening an app and much more... ?? ?? Developer : su

null 1 Nov 8, 2021
Flames Calculater App used to calculate flames status between two names created using python's Flask web framework.

Flames Finder Web App Flames Calculater App used to calculate flames status between two names created using python's Flask web framework. First, App g

Siva Prakash 4 Jan 2, 2022
A docker container (Docker Desktop) for a simple python Web app few unit tested

Short web app using Flask, tested with unittest on making massive requests, responses of the website, containerized

Omar 1 Dec 13, 2021
Pokehandy - Data web app sobre Pokémon TCG que desarrollo durante transmisiones de Twitch, 2022

⚡️ Pokéhandy – Pokémon Hand Simulator [WIP ?? ] This application aims to simulat

Rodolfo Ferro 5 Feb 23, 2022
Mixtaper - Web app to make mixtapes

Mixtaper A web app which allows you to input songs in the form of youtube links

suryansh 1 Feb 14, 2022
An ultra fast cross-platform multiple screenshots module in pure Python using ctypes.

Python MSS from mss import mss # The simplest use, save a screen shot of the 1st monitor with mss() as sct: sct.shot() An ultra fast cross-platfo

Mickaël Schoentgen 799 Dec 30, 2022
Cross-platform .NET Core pre-commit hooks

dotnet-core-pre-commit Cross-platform .NET Core pre-commit hooks How to use Add this to your .pre-commit-config.yaml - repo: https://github.com/juan

Juan Odicio 5 Jul 20, 2021
Cross-platform MachO/ObjC Static binary analysis tool & library. class-dump + otool + lipo + more

ktool Static Mach-O binary metadata analysis tool / information dumper pip3 install k2l Development is currently taking place on the @python3.10 branc

Kritanta 301 Dec 28, 2022
Cross-platform config and manager for click console utilities.

climan Help the project financially: Donate: https://smartlegion.github.io/donate/ Yandex Money: https://yoomoney.ru/to/4100115206129186 PayPal: https

null 3 Aug 31, 2021
An Airdrop alternative for cross-platform users only for desktop with Python

PyDrop An Airdrop alternative for cross-platform users only for desktop with Python, -version 1.0 with less effort, just as a practice. ##############

Bernardo Olisan 6 Mar 25, 2022