# /// script # requires-python = ">=3.13" # dependencies = [ # "markdownify", # "pyyaml", # ] # /// import os import sys import yaml from utils.custom_formats import collect_custom_formats from utils.regex_patterns import collect_regex_patterns from utils.profiles import collect_profiles from utils.media_management import collect_media_management # Prevent aliases from showing up yaml.Dumper.ignore_aliases = lambda *args: True def clear_output_dir(output_dir): if not os.path.exists(output_dir): print(f"Output directory does not exist, skipping clearing") else: for filename in os.listdir(output_dir): file_path = os.path.join(output_dir, filename) os.remove(file_path) print(f"Cleared output directory: {output_dir}") def main(): if len(sys.argv) != 3: print("Usage: python generate.py ") sys.exit(1) input_dir = sys.argv[1] output_dir = sys.argv[2] regex_patterns_dir = os.path.join(output_dir, "regex_patterns") os.makedirs(regex_patterns_dir, exist_ok=True) clear_output_dir(regex_patterns_dir) custom_formats_dir = os.path.join(output_dir, "custom_formats") os.makedirs(custom_formats_dir, exist_ok=True) clear_output_dir(custom_formats_dir) profiles_dir = os.path.join(output_dir, "profiles") os.makedirs(profiles_dir, exist_ok=True) clear_output_dir(profiles_dir) media_management_dir = os.path.join(output_dir, "media_management") os.makedirs(media_management_dir, exist_ok=True) clear_output_dir(media_management_dir) for service in ["radarr", "sonarr"]: trash_custom_formats_dir = os.path.join(input_dir, f"{service}/cf") if not os.path.exists(trash_custom_formats_dir): print( f"Custom format directory {trash_custom_formats_dir} does not exist, skipping." ) continue custom_regex_patterns = collect_regex_patterns( service, trash_custom_formats_dir, regex_patterns_dir, ) for service in ["radarr", "sonarr"]: trash_custom_formats_dir = os.path.join(input_dir, f"{service}/cf") if not os.path.exists(trash_custom_formats_dir): print( f"Custom format directory {trash_custom_formats_dir} does not exist, skipping." ) continue trash_profiles_dir = os.path.join(input_dir, f"{service}/quality-profiles") if not os.path.exists(trash_profiles_dir): print( f"Custom format directory {trash_profiles_dir} does not exist, skipping." ) continue trash_id_to_scoring_mapping = collect_custom_formats( service, trash_custom_formats_dir, custom_formats_dir, custom_regex_patterns ) collect_profiles( service, trash_profiles_dir, profiles_dir, trash_id_to_scoring_mapping, ) collect_media_management(input_dir, media_management_dir) if __name__ == "__main__": main()