add authentication for kontor-scripts
This commit is contained in:
@@ -2,15 +2,20 @@
|
|||||||
download files with URLs from DB
|
download files with URLs from DB
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
import re
|
import re
|
||||||
import subprocess
|
import subprocess
|
||||||
from argparse import ArgumentDefaultsHelpFormatter, ArgumentParser
|
from argparse import ArgumentDefaultsHelpFormatter, ArgumentParser
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from enum import Enum, auto
|
from enum import Enum, auto
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
import sys
|
||||||
|
from typing import Any, Dict
|
||||||
from uuid import UUID
|
from uuid import UUID
|
||||||
|
|
||||||
|
from platformdirs import PlatformDirs
|
||||||
import requests
|
import requests
|
||||||
|
import yaml
|
||||||
|
|
||||||
from config import get_logger
|
from config import get_logger
|
||||||
|
|
||||||
@@ -102,9 +107,9 @@ def is_file_downloaded(media_file: dict, dir: Path) -> FileStatus:
|
|||||||
|
|
||||||
|
|
||||||
def update_status(item_id: UUID, file_info: dict):
|
def update_status(item_id: UUID, file_info: dict):
|
||||||
update = requests.put(
|
url: str = f"http://127.0.0.1:8800/api/media/files/{item_id}"
|
||||||
f"http://127.0.0.1:8800/api/media/files/{item_id}", json=file_info
|
headers: Dict[str, str] = {"Authorization": f"Bearer {bearer_token}"}
|
||||||
)
|
update = requests.put(url, headers=headers, json=file_info)
|
||||||
log.info(f"update status: {update.status_code}")
|
log.info(f"update status: {update.status_code}")
|
||||||
log.info(f"update result: {update.json()}")
|
log.info(f"update result: {update.json()}")
|
||||||
|
|
||||||
@@ -127,14 +132,50 @@ def rename_file(file_info: dict):
|
|||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
log = get_logger(args.verbose, args.config)
|
log = get_logger(args.verbose, args.config)
|
||||||
log.info("kontor.download started")
|
log.info("kontor.download started")
|
||||||
response = requests.get("http://127.0.0.1:8800/api/media/files?download=true")
|
api_data: Dict[str, Any] = {}
|
||||||
|
token: str | None = None
|
||||||
|
host: str | None = None
|
||||||
|
port: int = 0
|
||||||
|
dirs = PlatformDirs(args.config)
|
||||||
|
api_config = Path(dirs.user_config_dir, 'api.yaml')
|
||||||
|
with open(api_config, 'rt') as f:
|
||||||
|
api_data = yaml.safe_load(f.read())
|
||||||
|
if not api_data:
|
||||||
|
log.fatal("API configuration is missing")
|
||||||
|
sys.exit(1)
|
||||||
|
host = api_data["host"]
|
||||||
|
port = api_data["port"]
|
||||||
|
if not token:
|
||||||
|
log.info("Call login first")
|
||||||
|
login_url = f"http://{host}:{port}/login"
|
||||||
|
login_data = {}
|
||||||
|
login_data['user'] = api_data["user"]
|
||||||
|
login_data['pass'] = api_data["pass"]
|
||||||
|
response = requests.post(login_url, data=login_data)
|
||||||
|
status = response.status_code
|
||||||
|
log.info(f"Status: {status}")
|
||||||
|
if status != 200:
|
||||||
|
log.fatal("authentication failed")
|
||||||
|
sys.exit(0)
|
||||||
|
data = response.json()
|
||||||
|
token = data['token']
|
||||||
|
api_data['token'] = token
|
||||||
|
with open(api_config, 'w') as f:
|
||||||
|
yaml.dump(api_data, f)
|
||||||
|
else:
|
||||||
|
token = api_data['token']
|
||||||
|
url: str = f"http://{host}:8500/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}")
|
log.info(f"Status: {response.status_code}")
|
||||||
data = response.json()
|
data = response.json()
|
||||||
entries_count = len(data)
|
entries_count = len(data)
|
||||||
log.info(f"data: {entries_count}")
|
log.info(f"data: {entries_count}")
|
||||||
mediafile_index = 1
|
mediafile_index = 1
|
||||||
log.debug(f"data: {len(data)}")
|
log.debug(f"data: {data}")
|
||||||
missing_actors = {}
|
missing_actors = {}
|
||||||
|
if args.dry_run:
|
||||||
|
sys.exit(0)
|
||||||
if args.limit:
|
if args.limit:
|
||||||
log.warning(f"check the first {args.limit} links")
|
log.warning(f"check the first {args.limit} links")
|
||||||
for item in data:
|
for item in data:
|
||||||
|
|||||||
Reference in New Issue
Block a user