dl/commands/2hdp.py

86 lines
2.6 KiB
Python
Raw Normal View History

2024-11-30 11:40:39 +00:00
#!/usr/bin/env python3
from argparse import ArgumentParser
from csv import DictWriter
from sys import stdout
from xml.etree import ElementTree
from requests import get
2024-11-30 11:39:43 +00:00
from transmissionrpc import Client, DefaultHTTPHandler # type: ignore
parser = ArgumentParser()
parser.add_argument("-u", "--username", required=True)
parser.add_argument("-p", "--password", required=True)
args = parser.parse_args()
class CustomHTTPHandler(DefaultHTTPHandler):
def request(self, url, query, headers, timeout):
headers["User-Agent"] = (
"Mozilla/5.0 (X11; Linux x86_64; rv:111.0) Gecko/20100101 Firefox/111.0"
)
return super().request(url, query, headers, timeout)
client = Client(
"https://torrent.crystalyx.net/transmission/rpc",
port=443,
user=args.username,
password=args.password,
2024-11-30 11:39:43 +00:00
http_handler=CustomHTTPHandler(),
)
2024-11-30 11:39:43 +00:00
movies = []
torrents = client.get_torrents()
writer = DictWriter(stdout, fieldnames=["season", "title", "hash", "url"])
writer.writeheader()
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"})
2024-11-30 11:39:43 +00:00
if season is None or title is None or title.text is None:
continue
row = {
"title": title.text,
"season": f"Saison {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.lower() in torrent.name.lower():
row["hash"] = torrent.hashString
break
movies.append(title.text.lower())
writer.writerow(row)
tree = ElementTree.fromstring(
get("https://www.calvinballconsortium.fr/podcasts/leretourdujeudi/feed.xml").text
)
for item in tree.findall(".//item"):
title = item.find("title")
if title is None or title.text is None or title.text.lower() in movies:
continue
row = {
"title": title.text,
2024-11-30 11:39:43 +00:00
"season": "Jeudi",
"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:
2024-11-30 11:39:43 +00:00
if title.text.lower() in torrent.name.lower():
row["hash"] = torrent.hashString
break
2024-11-30 11:39:43 +00:00
movies.append(title.text.lower())
writer.writerow(row)