#!/usr/bin/env python3 """seed_scihub_max_seeders.py Description: Find Sci Hub torrents containing MAX_SEEDERS seeders and add them to a qBittorrent instance. MAX_SEEDERS is a positive integer argument. Usage: seed_scihub_max_seeders.py [--only-count] (HOSTNAME) (USERNAME) (PASSWORD) (MAX_SEEDERS) seed_scihub_max_seeders.py -h Examples: seed_scihub_max_seeders.py "http://localhost:8080" "admin" "adminadmin" 4 seed_scihub_max_seeders.py --only-count "https://cat.seedhost.eu/lol/qbittorrent" "lol" "pw" 3 Options: --only-count do not add torrents, but only print the number of torrents with MAX_SEEDERS -h, --help show this help message and exit """ import json import os import requests from docopt import docopt from qbittorrent import Client if __name__ == "__main__": args = docopt(__doc__) # type: ignore qb = Client(args["HOSTNAME"]) qb.login(username=args["USERNAME"], password=args["PASSWORD"]) TORRENT_HEALTH_URL = ( "https://zrthstr.github.io/libgen_torrent_cardiography/torrent.json" ) response = requests.get(TORRENT_HEALTH_URL, timeout=60) json_data = json.loads(response.text) if args["--only-count"]: sum = 0 for item in json_data: if item["seeders"] <= int(args["MAX_SEEDERS"]): sum += 1 print(f"Number of torrents with <= {int(args["MAX_SEEDERS"])} seeders: {sum}") else: for item in json_data: if item["seeders"] <= int(args["MAX_SEEDERS"]): qb.download_from_link(item["link"], category="scihub") print(f"Added {os.path.basename(item["name"])}")