Финальная сборка.

Собраны все ссылки, удалены дубликаты. Осталось 85к ссылок. Парсим рецепты
This commit is contained in:
zein
2025-11-24 03:24:08 +03:00
parent 8ff6022d8c
commit 12c4dcf33b
5 changed files with 85221 additions and 191 deletions

View File

@@ -1,4 +1,7 @@
from pymongo import MongoClient
import log_err as lg
from pymongo import MongoClient, ReplaceOne
def connect_to_mongo():
"""Подключение к MongoDB"""
@@ -8,16 +11,34 @@ def connect_to_mongo():
def import_json_in_mongo(recipe_data):
"""Сохраняет один рецепт (для обратной совместимости и ошибок)"""
collection = connect_to_mongo()
print(recipe_data)
try:
collection.replace_one({"_id": recipe_data["_id"]}, recipe_data, upsert=True)
print(f"Рецепт '{recipe_data.get('recipe_name', recipe_data['_id'])}' успешно сохранён.")
print(f"Рецепт '{recipe_data.get('recipe_name', recipe_data['_id'])}' успешно сохранён.")
except Exception as e:
print(f"Ошибка при сохранении рецепта {recipe_data.get('_id')}: {e}")
print(f"Ошибка при сохранении рецепта {recipe_data.get('_id')}: {e}")
url = recipe_data.get('url', 'unknown')
lg.log_error(url, str(e), 'Buff_err.json')
def bulk_write_recipes(recipes_list):
"""Сохраняет список рецептов массово с помощью bulk_write"""
if not recipes_list:
return
collection = connect_to_mongo()
try:
requests = [
ReplaceOne({"_id": r["_id"]}, r, upsert=True)
for r in recipes_list
]
result = collection.bulk_write(requests, ordered=False)
print(f"✅ Bulk-запись: {len(recipes_list)} рецептов "
f"(upserted: {result.upserted_count}, modified: {result.modified_count})")
except Exception as e:
print(f"❌ Ошибка при bulk-записи: {e}")
# Опционально: можно сохранить recipes_list в файл для повторной обработки