66 lines
1.8 KiB
Python
Executable File
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()
|