diff --git a/daemon.py b/daemon.py new file mode 100644 index 0000000..21b2953 --- /dev/null +++ b/daemon.py @@ -0,0 +1,60 @@ +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...") \ No newline at end of file