Files
playground/aria2_on_done.py
T

66 lines
1.8 KiB
Python
Executable File

#!/usr/bin/env python3
import base64
import logging
import os
import sys
from pathlib import Path
from urllib.error import HTTPError, URLError
from urllib.parse import quote
from urllib.request import Request, urlopen
logging.basicConfig(
filename=Path(__file__).with_suffix(".log"),
level=logging.INFO,
format="%(asctime)s - %(levelname)s - %(message)s",
)
logger = logging.getLogger(__name__)
def is_temp(file_path: Path) -> bool:
return ".PRT" in file_path.name
def delete_from_remote(file_path: Path) -> None:
url = f"https://u201686.your-storagebox.de/files/_raw/prt/{quote(file_path.name)}"
credentials = "u201686:T6672ICVoWAedECH"
request = Request(url, method="DELETE", headers={"Authorization": f"Basic {base64.b64encode(credentials.encode()).decode()}"})
try:
with urlopen(request, timeout=2):
return
except HTTPError as e:
if e.code == 404:
return
def main():
logger.info(sys.argv)
if len(sys.argv) < 3:
logger.error("Missing expected argument: downloaded file path.")
return
downloaded_path = Path(sys.argv[2])
if not downloaded_path.is_file():
logger.warning("File does not exist: %s", downloaded_path)
return
if not is_temp(downloaded_path):
logger.info("File evaluated as non-temp: %s", downloaded_path)
return
target_dir = Path("~/Downloads/temp/").expanduser()
target_dir.mkdir(parents=True, exist_ok=True)
target_path = target_dir / downloaded_path.name
downloaded_path.rename(target_path)
logger.info("Moved %s to %s", downloaded_path, target_path)
try:
delete_from_remote(downloaded_path)
except Exception as e:
logger.error("Error deleting %s from remote: %s", downloaded_path, e)
if __name__ == "__main__":
main()