From 8d9cf5380a25bcae25a1cd9bc3819c9e468e6759 Mon Sep 17 00:00:00 2001 From: Jeffrey Serio <23226432+hyperreal64@users.noreply.github.com> Date: Tue, 23 Jul 2024 20:02:06 -0500 Subject: [PATCH] Refactor --- bin/seed_armbian_torrents | 51 ++++++++++++++++++++++++++++----------- 1 file changed, 37 insertions(+), 14 deletions(-) diff --git a/bin/seed_armbian_torrents b/bin/seed_armbian_torrents index 9f7e9fc..41bd9d6 100755 --- a/bin/seed_armbian_torrents +++ b/bin/seed_armbian_torrents @@ -1,12 +1,27 @@ #!/usr/bin/env python3 -# -# 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. -# -# Python implementation of https://docs.armbian.com/Community_Torrent/ +"""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 @@ -14,19 +29,25 @@ from tempfile import TemporaryDirectory from zipfile import ZipFile import requests +from docopt import docopt from qbittorrent import Client if __name__ == "__main__": + args = docopt(__doc__) - qb = Client("http://localhost:8080/") - qb.login() + # 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 + "https://dl.armbian.com/torrent/all-torrents.zip", + stream=True, + timeout=60, ) - zip_file = ZipFile(BytesIO(req.content)) - zip_file.extractall(tmp_dir) + + with ZipFile(BytesIO(req.content)) as zip_file: + zip_file.extractall(tmp_dir) torrents = qb.torrents() for torrent in torrents: @@ -38,4 +59,6 @@ if __name__ == "__main__": 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))}") + print( + f"Added {os.path.basename(os.path.join(tmp_dir, torrent_file))}" + )