#!/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()