#!/usr/bin/env python3 """seed_armbian_torrents Description: Armbian torrents seed script This script will download Armbian torrent files and add them to a qBittorrent instance. It's intended to be run under /etc/cron.weekly or used in a systemd timer. This is a Python implementation of https://docs.armbian.com/Community_Torrent/ for qBittorrent. Usage: seed_armbian_torrents (HOSTNAME) (USERNAME) (PASSWORD) seed_armbian_torrents -h Examples: seed_armbian_torrents "http://localhost:8080" "admin" "adminadmin" seed_armbian_torrents "https://cat.seedhost.eu/lol/qbittorrent" "lol" "pw" Options: -h, --help show this help message and exit. """ import os from io import BytesIO from tempfile import TemporaryDirectory from zipfile import ZipFile import requests 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"]) with TemporaryDirectory() as tmp_dir: req = requests.get( "https://dl.armbian.com/torrent/all-torrents.zip", stream=True, timeout=60, ) with ZipFile(BytesIO(req.content)) as zip_file: zip_file.extractall(tmp_dir) torrents = qb.torrents() for torrent in torrents: if "Armbian" in torrent.get("name"): # type: ignore qb.delete_permanently(torrent.get("hash")) # type: ignore print(f"Removed {torrent.get('name')}") # type: ignore torrent_files = os.listdir(tmp_dir) for torrent_file in torrent_files: with open(os.path.join(tmp_dir, torrent_file), "rb") as tf: qb.download_from_file(tf, category="distro") print( f"Added {os.path.basename(os.path.join(tmp_dir, torrent_file))}" )