66 lines
1.7 KiB
Python
66 lines
1.7 KiB
Python
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()
|