admin-scripts/bin/add_scihub_torrents
2024-07-21 10:31:34 -05:00

61 lines
1.7 KiB
Python
Executable File

#!/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)}")