welcome gitea
This commit is contained in:
89
first.py
Normal file
89
first.py
Normal file
@@ -0,0 +1,89 @@
|
||||
import json
|
||||
import os
|
||||
from datetime import datetime, timezone
|
||||
|
||||
def generate_vocabulary_import(
|
||||
category_name: str,
|
||||
lang_first_id: int,
|
||||
lang_second_id: int,
|
||||
word_pairs: list,
|
||||
output_filename: str = "import_ready_vocab.json"
|
||||
):
|
||||
"""
|
||||
Generates a Polly-compatible JSON import file for a new vocabulary category,
|
||||
saving it in the same directory as this script.
|
||||
"""
|
||||
|
||||
# Generate a current timestamp in the exact ISO format Kotlin's Instant expects
|
||||
now_iso = datetime.now(timezone.utc).strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3] + 'Z'
|
||||
|
||||
# Base structure for a CategoryExport
|
||||
export_data = {
|
||||
"type": "Category",
|
||||
"exportDate": now_iso,
|
||||
"metadata": {
|
||||
"itemCount": len(word_pairs),
|
||||
"categoryCount": 1,
|
||||
"exportScope": f"Category: {category_name}"
|
||||
},
|
||||
"category": {
|
||||
"type": "TagCategory",
|
||||
"id": 99999, # Dummy ID; your app's ID remapping will fix this on import
|
||||
"name": category_name
|
||||
},
|
||||
"items": [],
|
||||
"states": [], # Left empty because these are brand new words
|
||||
"stageMappings": []
|
||||
}
|
||||
|
||||
# Populate items and stage mappings
|
||||
start_id = 100000
|
||||
|
||||
for idx, (word_first, word_second) in enumerate(word_pairs, start=start_id):
|
||||
|
||||
export_data["items"].append({
|
||||
"id": idx,
|
||||
"languageFirstId": lang_first_id,
|
||||
"languageSecondId": lang_second_id,
|
||||
"wordFirst": word_first,
|
||||
"wordSecond": word_second,
|
||||
"createdAt": now_iso,
|
||||
"features": "{}" # Empty features block
|
||||
})
|
||||
|
||||
export_data["stageMappings"].append({
|
||||
"vocabularyItemId": idx,
|
||||
"stage": "NEW"
|
||||
})
|
||||
|
||||
# --- NEW: Get the directory of the current script and build the full path ---
|
||||
script_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
full_output_path = os.path.join(script_dir, output_filename)
|
||||
|
||||
# Save to file using the absolute path
|
||||
with open(full_output_path, 'w', encoding='utf-8') as f:
|
||||
json.dump(export_data, f, indent=2, ensure_ascii=False)
|
||||
|
||||
print(f"Successfully generated {len(word_pairs)} items!")
|
||||
print(f"Saved to: {full_output_path}")
|
||||
|
||||
|
||||
# --- Example Usage ---
|
||||
if __name__ == "__main__":
|
||||
GERMAN_ID = 15
|
||||
PORTUGUESE_ID = 7
|
||||
|
||||
new_words = [
|
||||
("Krankenwagen", "ambulância"),
|
||||
("Blutdruck", "pressão arterial"),
|
||||
("Rollstuhl", "cadeira de rodas"),
|
||||
("Fieberthermometer", "termômetro")
|
||||
]
|
||||
|
||||
generate_vocabulary_import(
|
||||
category_name="termos médicos - extra",
|
||||
lang_first_id=GERMAN_ID,
|
||||
lang_second_id=PORTUGUESE_ID,
|
||||
word_pairs=new_words,
|
||||
output_filename="polly_import_med_extra.json"
|
||||
)
|
||||
Reference in New Issue
Block a user