initial commit (backend)
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
"""
|
||||
Загрузка предложений по уровням (A1, A2, B1).
|
||||
Каждый уровень загружается из отдельного CSV файла.
|
||||
Нумерация предложений начинается с 1 для каждого уровня.
|
||||
"""
|
||||
import asyncio
|
||||
import asyncpg
|
||||
import csv
|
||||
from config import DB_CONFIG
|
||||
|
||||
|
||||
def load_sentences_from_csv(filename):
|
||||
"""Загружает предложения из CSV файла (формат: polish,english,russian,ukrainian)."""
|
||||
sentences = []
|
||||
with open(filename, 'r', encoding='utf-8') as f:
|
||||
reader = csv.DictReader(f)
|
||||
for row in reader:
|
||||
sentences.append({
|
||||
"sentence_pl": row["polish"].strip(),
|
||||
"translation_ru": row.get("russian", ""),
|
||||
"translation_uk": row.get("ukrainian", ""),
|
||||
"translation_en": row.get("english", ""),
|
||||
})
|
||||
return sentences
|
||||
|
||||
|
||||
async def main():
|
||||
conn = await asyncpg.connect(**DB_CONFIG)
|
||||
|
||||
level_files = [
|
||||
("A1", "sentences_a1.csv"),
|
||||
("A2", "sentences_a2.csv"),
|
||||
("B1", "sentences_b1.csv"),
|
||||
]
|
||||
|
||||
total_added = 0
|
||||
|
||||
for level, filename in level_files:
|
||||
print(f"\n{'='*50}")
|
||||
print(f"Загружаю предложения уровня {level} из {filename}")
|
||||
print(f"{'='*50}")
|
||||
|
||||
sentences = load_sentences_from_csv(filename)
|
||||
|
||||
# Удаляем старые предложения этого уровня
|
||||
await conn.execute("DELETE FROM sentences WHERE level = $1", level)
|
||||
|
||||
# Нумерация начинается с 1 для каждого уровня
|
||||
max_num = 0
|
||||
|
||||
added = 0
|
||||
for s in sentences:
|
||||
max_num += 1
|
||||
words_count = len(s["sentence_pl"].split())
|
||||
difficulty = 1 if words_count <= 4 else 2 if words_count <= 6 else 3
|
||||
|
||||
await conn.execute(
|
||||
"""INSERT INTO sentences (sentence_number, sentence_pl, translation_ru, translation_uk, translation_en, difficulty, level)
|
||||
VALUES ($1, $2, $3, $4, $5, $6, $7)""",
|
||||
max_num, s["sentence_pl"],
|
||||
s["translation_ru"], s["translation_uk"], s["translation_en"],
|
||||
difficulty, level
|
||||
)
|
||||
added += 1
|
||||
print(f"✅ {level} #{max_num}: {s['sentence_pl'][:60]}...")
|
||||
|
||||
total_added += added
|
||||
print(f"Добавлено {added} предложений уровня {level}")
|
||||
|
||||
await conn.close()
|
||||
print(f"\n🎉 Готово! Всего добавлено {total_added} предложений")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
||||
Reference in New Issue
Block a user