refactor: ⚡ add transmissionrpc_cf and 2hdp script
This commit is contained in:
parent
3a01e58244
commit
cf68462ae2
@ -9,10 +9,10 @@ RUN apt-get update && \
|
|||||||
apt-get install -y \
|
apt-get install -y \
|
||||||
vim p7zip* git mc lftp rename wget curl procps psmisc \
|
vim p7zip* git mc lftp rename wget curl procps psmisc \
|
||||||
openssh-client transmission-cli speedtest-cli \
|
openssh-client transmission-cli speedtest-cli \
|
||||||
python3-pip python3-requests python3-transmissionrpc && \
|
python3-pip python3-requests && \
|
||||||
apt-get install -y --no-install-recommends mame-tools && \
|
apt-get install -y --no-install-recommends mame-tools && \
|
||||||
rm -rf /var/lib/apt/lists/* && \
|
rm -rf /var/lib/apt/lists/* && \
|
||||||
pip install yt-dlp && \
|
pip install --extra-index-url https://git.crystalyx.net/api/packages/Xefir/pypi/simple/ transmissionrpc-cf yt-dlp \
|
||||||
curl -sSL https://raw.githubusercontent.com/MatanZ/tremc/main/tremc -o /usr/local/bin/tremc && \
|
curl -sSL https://raw.githubusercontent.com/MatanZ/tremc/main/tremc -o /usr/local/bin/tremc && \
|
||||||
curl -sSL https://raw.githubusercontent.com/putnam/binmerge/master/binmerge -o /usr/local/bin/binmerge && \
|
curl -sSL https://raw.githubusercontent.com/putnam/binmerge/master/binmerge -o /usr/local/bin/binmerge && \
|
||||||
update-alternatives --set editor /usr/bin/vim.basic
|
update-alternatives --set editor /usr/bin/vim.basic
|
||||||
|
49
commands/2hdp.py
Normal file
49
commands/2hdp.py
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
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)
|
@ -6,7 +6,7 @@ from sys import stdout
|
|||||||
from time import sleep
|
from time import sleep
|
||||||
|
|
||||||
from requests import head
|
from requests import head
|
||||||
from transmissionrpc import LOGGER, Client, DefaultHTTPHandler # type: ignore
|
from transmissionrpc_cf import LOGGER, Client # type: ignore
|
||||||
|
|
||||||
parser = ArgumentParser()
|
parser = ArgumentParser()
|
||||||
parser.add_argument("-u", "--username", required=True)
|
parser.add_argument("-u", "--username", required=True)
|
||||||
@ -16,21 +16,11 @@ args = parser.parse_args()
|
|||||||
LOGGER.setLevel(INFO)
|
LOGGER.setLevel(INFO)
|
||||||
LOGGER.addHandler(StreamHandler(stdout))
|
LOGGER.addHandler(StreamHandler(stdout))
|
||||||
|
|
||||||
|
|
||||||
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(
|
client = Client(
|
||||||
"https://torrent.crystalyx.net/transmission/rpc",
|
"https://torrent.crystalyx.net/transmission/rpc",
|
||||||
port=443,
|
port=443,
|
||||||
user=args.username,
|
user=args.username,
|
||||||
password=args.password,
|
password=args.password,
|
||||||
http_handler=CustomHTTPHandler(),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
for torrent in client.get_torrents():
|
for torrent in client.get_torrents():
|
||||||
|
34
poetry.lock
generated
34
poetry.lock
generated
@ -293,22 +293,34 @@ files = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "transmission-rpc"
|
name = "transmissionrpc-cf"
|
||||||
version = "7.0.11"
|
version = "0.2.1"
|
||||||
description = "Python module that implements the Transmission bittorent client JSON-RPC protocol"
|
description = "Fork of transmissionrpc-ng with CloudFlare support"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = "~=3.8"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
{file = "transmission_rpc-7.0.11-py3-none-any.whl", hash = "sha256:94fd008b54640dd9fff14d7ae26848f901e9d130a70950b8930f9b395988914f"},
|
{file = "transmissionrpc_cf-0.2.1-py3-none-any.whl", hash = "sha256:f1daf9f5e649250d64009f48a537d9f2f47eeba1687e304c0f073e6f8c484a9e"},
|
||||||
{file = "transmission_rpc-7.0.11.tar.gz", hash = "sha256:5872322e60b42e368bc9c4724773aea4593113cb19bd2da589f0ffcdabe57963"},
|
{file = "transmissionrpc_cf-0.2.1.tar.gz", hash = "sha256:dda3ab986bd07c674e0e6cf76721c699490cfb805c399fb81fa02406942601f9"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
requests = ">=2.23,<3.0"
|
transmissionrpc-ng = ">=0.13.1,<0.14.0"
|
||||||
typing-extensions = ">=4.5.0"
|
|
||||||
|
|
||||||
[package.extras]
|
[package.source]
|
||||||
dev = ["coverage (==7.6.0)", "furo (==2024.7.18)", "mypy (==1.11.1)", "pre-commit (==3.8.0)", "pytest (==8.3.2)", "pytest-github-actions-annotate-failures (==0.2.0)", "sphinx (>=7,<=8)", "sphinx-autobuild (==2024.4.16)", "sphinx-copybutton (==0.5.2)", "sphinx-github-style (==1.2.2)", "sphinx-new-tab-link (==0.5.2)", "types-requests (==2.32.0.20240712)", "yarl (==1.9.4)"]
|
type = "legacy"
|
||||||
|
url = "https://git.crystalyx.net/api/packages/Xefir/pypi/simple"
|
||||||
|
reference = "gitea"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "transmissionrpc-ng"
|
||||||
|
version = "0.13.1"
|
||||||
|
description = "Python module that implements the Transmission BitTorent client RPC protocol."
|
||||||
|
optional = false
|
||||||
|
python-versions = ">=3.6"
|
||||||
|
files = [
|
||||||
|
{file = "transmissionrpc-ng-0.13.1.tar.gz", hash = "sha256:97d9b25784205cdc90e60857ee713a8b9b0cf02db9066969509ab97efd22bdba"},
|
||||||
|
{file = "transmissionrpc_ng-0.13.1-py3-none-any.whl", hash = "sha256:092954f0571392cd6ff498ea9b5a55de3b20f68fd919d6fe94e4f5e112a750bc"},
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "types-requests"
|
name = "types-requests"
|
||||||
@ -376,4 +388,4 @@ test = ["pytest (>=8.1,<9.0)", "pytest-rerunfailures (>=14.0,<15.0)"]
|
|||||||
[metadata]
|
[metadata]
|
||||||
lock-version = "2.0"
|
lock-version = "2.0"
|
||||||
python-versions = "^3.10"
|
python-versions = "^3.10"
|
||||||
content-hash = "9b7f8022fffca9b43b709f43f1d20088d2557c1eccd5ac8c7708e89fe07d10cb"
|
content-hash = "085ce1422940a6bc32eea3d6c3ca975435aecbbfd2e25ebca4e1720f5a147b74"
|
||||||
|
@ -7,8 +7,8 @@ package-mode = false
|
|||||||
|
|
||||||
[tool.poetry.dependencies]
|
[tool.poetry.dependencies]
|
||||||
python = "^3.10"
|
python = "^3.10"
|
||||||
|
transmissionrpc-cf = "^0.2.1"
|
||||||
requests = "^2.32.3"
|
requests = "^2.32.3"
|
||||||
transmission-rpc = "^7.0.11"
|
|
||||||
yt-dlp = "^2024.11.27"
|
yt-dlp = "^2024.11.27"
|
||||||
|
|
||||||
[tool.poetry.group.dev.dependencies]
|
[tool.poetry.group.dev.dependencies]
|
||||||
@ -16,6 +16,11 @@ ruff = "^0.8.1"
|
|||||||
mypy = "^1.13.0"
|
mypy = "^1.13.0"
|
||||||
types-requests = "^2.32.0"
|
types-requests = "^2.32.0"
|
||||||
|
|
||||||
|
[[tool.poetry.source]]
|
||||||
|
name = "gitea"
|
||||||
|
url = "https://git.crystalyx.net/api/packages/Xefir/pypi/simple"
|
||||||
|
priority = "supplemental"
|
||||||
|
|
||||||
[tool.ruff]
|
[tool.ruff]
|
||||||
line-length = 100
|
line-length = 100
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user