75 lines
2.7 KiB
Python
75 lines
2.7 KiB
Python
"""
|
|
Загрузка предложений по уровням (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()) |