import sys import yaml def load_yaml(filename): with open(filename, "r", encoding="utf-8") as file: return yaml.safe_load(file) or [] def save_yaml(filename, data): with open(filename, "w", encoding="utf-8") as file: yaml.safe_dump(data, file, allow_unicode=True, default_flow_style=False) def extract_existing_combinations(data): return { ( entry["fields"]["currency_from"], entry["fields"]["currency_to"], entry["fields"]["year"], ) for entry in data if entry["model"] == "games.exchangerate" } def filter_new_entries(existing_combinations, additional_files): new_entries = [] for filename in additional_files: data = load_yaml(filename) for entry in data: if entry["model"] == "games.exchangerate": key = ( entry["fields"]["currency_from"], entry["fields"]["currency_to"], entry["fields"]["year"], ) if key not in existing_combinations: new_entries.append(entry) return new_entries def main(): if len(sys.argv) < 3: print("Usage: script.py example.yaml additions1.yaml [additions2.yaml ...]") sys.exit(1) example_file = sys.argv[1] additional_files = sys.argv[2:] output_file = "filtered_output.yaml" existing_data = load_yaml(example_file) existing_combinations = extract_existing_combinations(existing_data) new_entries = filter_new_entries(existing_combinations, additional_files) save_yaml(output_file, new_entries) print(f"Filtered data saved to {output_file}") if __name__ == "__main__": main()