dl/commands/2hdp.py
Michel Roux cf68462ae2
Some checks failed
dl / lint (push) Successful in 2m7s
dl / docker (push) Failing after 6m33s
refactor: add transmissionrpc_cf and 2hdp script
2024-11-30 01:50:46 +01:00

50 lines
1.5 KiB
Python

from argparse import ArgumentParser
from csv import DictWriter
from logging import INFO, StreamHandler
from sys import stdout
from xml.etree import ElementTree
from requests import get
from transmissionrpc_cf import LOGGER, Client # type: ignore
parser = ArgumentParser()
parser.add_argument("-u", "--username", required=True)
parser.add_argument("-p", "--password", required=True)
args = parser.parse_args()
LOGGER.setLevel(INFO)
LOGGER.addHandler(StreamHandler(stdout))
client = Client(
"https://torrent.crystalyx.net/transmission/rpc",
port=443,
user=args.username,
password=args.password,
)
torrents = client.get_torrents()
writer = DictWriter(stdout, fieldnames=["season", "title", "hash", "url"])
tree = ElementTree.fromstring(get("https://feed.ausha.co/Loa7srdWGm1b").text)
for item in tree.findall(".//item"):
title = item.find("title")
season = item.find("itunes:season", {"itunes": "http://www.itunes.com/dtds/podcast-1.0.dtd"})
if season is None or title is None:
continue
row = {
"title": title.text,
"season": season.text,
"hash": "",
"url": f"https://www.ygg.re/engine/search?name={title.text}&description=&file=&uploader=&category=2145&sub_category=2183&option_langue:multiple[0]=4&do=search&order=asc&sort=publish_date",
}
for torrent in torrents:
if title.text is not None and title.text.lower() in torrent.name.lower():
row["hash"] = torrent.hashString
break
writer.writerow(row)