From 0d265dfacc4601fa14184ae74aefc02466c1ecb5 Mon Sep 17 00:00:00 2001 From: alex Date: Fri, 10 Dec 2021 10:08:12 +0100 Subject: [PATCH] initial commit --- daemon.py | 61 ++++++++++++++++++++++++++++++++++++++++++++++++ launcher.sh | 7 ++++++ requirements.txt | 5 ++++ 3 files changed, 73 insertions(+) create mode 100755 daemon.py create mode 100755 launcher.sh create mode 100755 requirements.txt diff --git a/daemon.py b/daemon.py new file mode 100755 index 0000000..ebb58ef --- /dev/null +++ b/daemon.py @@ -0,0 +1,61 @@ +import os + +import requests +from apscheduler.schedulers.blocking import BlockingScheduler +from bs4 import BeautifulSoup +from loguru import logger as log + +env = os.environ +base_url = env.get("UT_URL","") +login = env.get("LOGIN","") +passwd = env.get("PASSWD","") +autoload_dir = env.get("AUTOL_DIR","") + + +def process_autoloads(): + log.info("Processing autoloads") + sess = requests.Session() + auth = requests.auth.HTTPBasicAuth(login, passwd) + req = sess.get(base_url + "token.html", auth=auth) + + token = None + if req.status_code == 200: + soup = BeautifulSoup(req.text) + token = soup.text + else: + log.warning(f"Req status code {req.status_code}") + + if not token: + log.error("NO TOKEN RETRIEVED") + return + + flist = os.listdir(autoload_dir) + + if flist: + for fi in flist: + ext = fi.split(".")[-1] + fifi = f"{autoload_dir}{fi}" + if ext.lower() == "torrent": + log.info(f"found torrent {fifi}") + params = {"action": "add-file", "token": token} + files = {"torrent_file": open(fifi, "rb")} + r = requests.post(url=base_url, auth=auth, params=params, files=files) + os.remove(fifi) + elif ext.lower() == "magnet": + log.info(f"found magnet {fifi}") + headers = {"Content-Type": "application/json"} + st = open(fifi).read() + params = {"action": "add-url", "s": st, "token": token} + r = sess.get(url=base_url, auth=auth, params=params, headers=headers) + os.remove(fifi) + + +if __name__ == "__main__": + log.info("Launching script") + scheduler = BlockingScheduler(timezone="Europe/Paris") + log.info("initiating jobs") + scheduler.add_job(process_autoloads, "interval", seconds=30, misfire_grace_time=30) + log.info(f"jobs added : {scheduler.get_jobs()}") + scheduler.start() + log.info("running...") + diff --git a/launcher.sh b/launcher.sh new file mode 100755 index 0000000..a003dd0 --- /dev/null +++ b/launcher.sh @@ -0,0 +1,7 @@ +#apk add --no-cache --virtual .build-deps gcc libc-dev libxslt-dev && \ +# apk add --no-cache libxslt && \ +# pip install --no-cache-dir lxml>=3.5.0 && \ +# pip install -r requirements.txt && \ +# apk del .build-deps + +pip install -r requirements.txt diff --git a/requirements.txt b/requirements.txt new file mode 100755 index 0000000..b960c09 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,5 @@ +# lxml>=3.5.0 +requests==2.11.1 +bs4 +apscheduler +loguru \ No newline at end of file