diff --git a/bin/add-scihub-torrents b/bin/add-scihub-torrents new file mode 100755 index 0000000..9fafe14 --- /dev/null +++ b/bin/add-scihub-torrents @@ -0,0 +1,60 @@ +#!/usr/bin/env python3 + +"""add-scihub-torrents + +Usage: + add-scihub-torrents (HOSTNAME) (USERNAME) (PASSWORD) + add-scihub-torrents -h + +Examples: + add-scihub-torrents "http://localhost:8080" "admin" "adminadmin" + add-scihub-torrents "https://cat.seedhost.eu/lol/qbittorrent" "lol" "pw" + +Options: + -h, --help show this help message and exit +""" + +import os +import subprocess +from pathlib import Path + +from docopt import docopt +from qbittorrent import Client + +if __name__ == "__main__": + args = docopt(__doc__) + + # Initialize client and login + qb = Client(args["HOSTNAME"]) + qb.login(username=args["USERNAME"], password=args["PASSWORD"]) + + # Get scihub torrent- files and display them with gum + scihub_torrent_dir = Path.home().joinpath("scihub-torrent-urls") + torrent_files = [x.name for x in scihub_torrent_dir.iterdir()] + subproc_arg = [ + "gum", + "choose", + "--header='Select Sci Hub torrents'", + "--height=13", + "--no-limit", + ] + subproc_arg.extend(torrent_files) + torrent_selection = ( + subprocess.run(subproc_arg, stdout=subprocess.PIPE, text=True) + .stdout.strip() + .splitlines() + ) + + # Read the contents of each file and put lines (which are URLs) into a list + torrent_urls = list() + for item in torrent_selection: + with open(scihub_torrent_dir.joinpath(item), "r") as tf: + urls = tf.readlines() + torrent_urls.extend(urls) + + torrent_urls = [x.strip("\n") for x in torrent_urls] + + # Add urls to qBittorrent instance + for url in torrent_urls: + qb.download_from_link(url, category="scihub") + print(f"Added {os.path.basename(url)}")