add checking dirs to cjeck_kontor.py
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 3s

This commit is contained in:
2026-05-31 23:17:32 +02:00
parent e70b3ab486
commit 71bd7641dc
+34 -4
View File
@@ -4,10 +4,10 @@ Checks the database kontor
from logging import Logger from logging import Logger
from pathlib import Path from pathlib import Path
import sys
from typing import Any, Dict, List, Optional from typing import Any, Dict, List, Optional
from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter
from urllib.parse import urlparse from urllib.parse import urlparse
import click
from simple_term_menu import TerminalMenu from simple_term_menu import TerminalMenu
from api import Server, get_api_config, get_logger 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") 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__": if __name__ == "__main__":
logger = get_logger(args.verbose, args.config) logger = get_logger(args.verbose, args.config)
logger.info("kontor.check_kontor started") logger.info("kontor.check_kontor started")
APICONFIG = get_api_config(logger, args.config) APICONFIG = get_api_config(logger, args.config)
first_server: Optional[Server] = APICONFIG.get_server(args.server) first_server: Optional[Server] = APICONFIG.get_server(args.server)
if not first_server: if not first_server:
SystemExit(2) sys.exit(2)
dirs: List[str] = args.add_dir dirs: List[str] = args.add_dir
if dirs is None: if dirs is None:
dirs = [args.dir] dirs = [args.dir]
@@ -112,8 +142,8 @@ if __name__ == "__main__":
logger.info(dirs) logger.info(dirs)
logger.info("kontor.check_kontor.check_duplicate_links") logger.info("kontor.check_kontor.check_duplicate_links")
check_duplicate_links(logger, first_server, dirs) check_duplicate_links(logger, first_server, dirs)
# logger.info("kontor.check_kontor.update_cloud_link_with_found_files") logger.info("kontor.check_kontor.check_media_dirs")
# update_cloud_link_with_found_files(data_dir, mariadb_conn, args.dry_run) check_media_dirs(logger, first_server, dirs)
# logger.info("kontor.check_kontor.get_ids_from_column_cloud_link") # logger.info("kontor.check_kontor.get_ids_from_column_cloud_link")
# get_ids_from_column_cloud_link(link_list, mariadb_cursor) # get_ids_from_column_cloud_link(link_list, mariadb_cursor)
# logger.info('found {} ids in column cloud_link'.format(len(link_list))) # logger.info('found {} ids in column cloud_link'.format(len(link_list)))