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...")