This commit is contained in:
+17
-22
@@ -2,7 +2,6 @@
|
||||
download files with URLs from DB
|
||||
"""
|
||||
|
||||
import os
|
||||
import re
|
||||
import subprocess
|
||||
import sys
|
||||
@@ -10,16 +9,17 @@ from argparse import ArgumentDefaultsHelpFormatter, ArgumentParser
|
||||
from datetime import datetime
|
||||
from enum import Enum, auto
|
||||
from pathlib import Path
|
||||
from typing import Any, Dict
|
||||
from typing import Dict
|
||||
from logging import Logger
|
||||
from uuid import UUID
|
||||
|
||||
import requests
|
||||
|
||||
from config import get_api_config, get_logger
|
||||
from api import Server, get_api_config, get_logger
|
||||
|
||||
parser = ArgumentParser(formatter_class=ArgumentDefaultsHelpFormatter)
|
||||
parser.add_argument("--verbose", "-v", action="count", default=0)
|
||||
parser.add_argument("--config", "-c", default="kontor-docker")
|
||||
parser.add_argument("--config", "-c", default="kontor-api")
|
||||
parser.add_argument("--dir", "-d", default="/data/media")
|
||||
parser.add_argument("--limit", "-l", type=int, help="maximum number of links to check")
|
||||
parser.add_argument("--tool", "-t", default="yt-dlp")
|
||||
@@ -104,12 +104,8 @@ def is_file_downloaded(media_file: dict, dir: Path) -> FileStatus:
|
||||
return FileStatus.UNKNOWN
|
||||
|
||||
|
||||
def update_status(item_id: UUID, file_info: dict, api_data: Dict[str, Any]):
|
||||
host = api_data["host"]
|
||||
token = api_data["token"]
|
||||
url: str = f"http://{host}:{port}/api/media/files/{item_id}"
|
||||
headers: Dict[str, str] = {"Authorization": f"Bearer {token}"}
|
||||
update = requests.put(url, headers=headers, json=file_info)
|
||||
def update_status(item_id: UUID, file_info: dict, server: Server, log: Logger):
|
||||
update = server.update(log, "media_file", item_id, file_info)
|
||||
log.info(f"update status: {update.status_code}")
|
||||
log.info(f"update result: {update.json()}")
|
||||
|
||||
@@ -132,15 +128,14 @@ def rename_file(file_info: dict):
|
||||
if __name__ == "__main__":
|
||||
log = get_logger(args.verbose, args.config)
|
||||
log.info("kontor.download started")
|
||||
api_data = get_api_config(log, args.config)
|
||||
host = api_data["host"]
|
||||
port = api_data["port"]
|
||||
token = api_data["token"]
|
||||
url: str = f"http://{host}:{port}/api/media/files?download=true"
|
||||
headers: Dict[str, str] = {"Authorization": f"Bearer {token}"}
|
||||
response = requests.get(url, headers=headers)
|
||||
log.info(f"Status: {response.status_code}")
|
||||
data = response.json()
|
||||
apiConfig = get_api_config(log, args.config)
|
||||
server: Server = apiConfig.server[0]
|
||||
data = server.request(log=log, table="media_file", param="download=true")
|
||||
# url: str = f"http://{host}:{port}/api/media/files?download=true"
|
||||
# headers: Dict[str, str] = {"Authorization": f"Bearer {token}"}
|
||||
# response = requests.get(url, headers=headers)
|
||||
# log.info(f"Status: {response.status_code}")
|
||||
# data = response.json()
|
||||
entries_count = len(data)
|
||||
log.info(f"data: {entries_count}")
|
||||
mediafile_index = 1
|
||||
@@ -158,15 +153,15 @@ if __name__ == "__main__":
|
||||
match download_status:
|
||||
case FileStatus.DOWNLOADED:
|
||||
rename_file(item)
|
||||
update_status(file_id, item, api_data)
|
||||
update_status(file_id, item, server=server, log=log)
|
||||
case FileStatus.RENAMED:
|
||||
log.info("update status")
|
||||
update_status(file_id, item, api_data)
|
||||
update_status(file_id, item, server=server, log=log)
|
||||
case FileStatus.UNKNOWN:
|
||||
download_file(link, item, args.dir)
|
||||
rename_file(item)
|
||||
log.info(f"{item}")
|
||||
update_status(file_id, item, api_data)
|
||||
update_status(file_id, item, server=server, log=log)
|
||||
log.warning(f"processed {mediafile_index}/{entries_count}")
|
||||
if args.limit and args.limit <= mediafile_index:
|
||||
break
|
||||
|
||||
Reference in New Issue
Block a user