add checking dirs to cjeck_kontor.py

This commit is contained in:
2026-05-31 23:17:32 +02:00
parent 2d706cc3d8
commit c30bdd1cd5
+34 -4
View File
@@ -4,10 +4,10 @@ Checks the database kontor
from logging import Logger
from pathlib import Path
import sys
from typing import Any, Dict, List, Optional
from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter
from urllib.parse import urlparse
import click
from simple_term_menu import TerminalMenu
from api import Server, get_api_config, get_logger
@@ -97,13 +97,43 @@ def check_duplicate_links(log: Logger, server: Optional[Server], media_dirs: Lis
print("selection canceled")
def check_media_dirs(log: Logger, server: Optional[Server], media_dirs: List[str]):
"""
Check if contents of directories match MediaFiles.
"""
if server is None:
log.info("no server selected")
return
local_files = collect_files(media_dirs)
data = server.request(log=log, table="media_file")
for item in data:
file_name = Path(item["cloud_link"]).name
if file_name in local_files:
log.debug("File %s found", file_name)
local_files.remove(file_name)
def collect_files(media_dirs: List[str]) -> List[str]:
"""
Collect file names from given directories.
"""
collected_files: List[str] = []
for media_dir in media_dirs:
file_dir = Path(media_dir)
if file_dir.is_dir():
for entry in file_dir.iterdir():
if entry.is_file():
collected_files.append(entry.name)
return collected_files
if __name__ == "__main__":
logger = get_logger(args.verbose, args.config)
logger.info("kontor.check_kontor started")
APICONFIG = get_api_config(logger, args.config)
first_server: Optional[Server] = APICONFIG.get_server(args.server)
if not first_server:
SystemExit(2)
sys.exit(2)
dirs: List[str] = args.add_dir
if dirs is None:
dirs = [args.dir]
@@ -112,8 +142,8 @@ if __name__ == "__main__":
logger.info(dirs)
logger.info("kontor.check_kontor.check_duplicate_links")
check_duplicate_links(logger, first_server, dirs)
# logger.info("kontor.check_kontor.update_cloud_link_with_found_files")
# update_cloud_link_with_found_files(data_dir, mariadb_conn, args.dry_run)
logger.info("kontor.check_kontor.check_media_dirs")
check_media_dirs(logger, first_server, dirs)
# logger.info("kontor.check_kontor.get_ids_from_column_cloud_link")
# get_ids_from_column_cloud_link(link_list, mariadb_cursor)
# logger.info('found {} ids in column cloud_link'.format(len(link_list)))