From 71bd7641dcfffd56b10b050f57eba68d827a998a Mon Sep 17 00:00:00 2001 From: Thomas Peetz Date: Sun, 31 May 2026 23:17:32 +0200 Subject: [PATCH] add checking dirs to cjeck_kontor.py --- kontor-scripts/check_kontor.py | 38 ++++++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/kontor-scripts/check_kontor.py b/kontor-scripts/check_kontor.py index ccf221f..a921058 100644 --- a/kontor-scripts/check_kontor.py +++ b/kontor-scripts/check_kontor.py @@ -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)))