Вроде бы как работает. Должна брать последний id из монго, идти на сайт и парсиить мангу пока не наткнеться на этот id. потом собирать все в файл, а потом пушить в базу.

This commit is contained in:
zein
2025-11-02 23:33:31 +03:00
commit 960db31f1f
5 changed files with 298 additions and 0 deletions

44
test.py Normal file
View File

@@ -0,0 +1,44 @@
from pymongo import MongoClient
from pymongo.errors import DuplicateKeyError
import json
def import_from_json(file_path: str):
# Подключение к MongoDB
client = MongoClient("mongodb://localhost:27017/")
db = client["Manga"]
collection = db["Hentai_Manga"]
# Создаем индекс для нового поля original_id
collection.create_index("original_id", unique=True)
with open(file_path, "r", encoding="utf-8") as file:
data = json.load(file)
for manga_title, manga_data in data.items():
try:
# 1. Заменяем ключи
manga_data["original_title"] = manga_title
# Правильный способ заменить ключи:
if 'id' in manga_data:
manga_data['original_id'] = manga_data.pop('id') # Исправлено: pop() - это метод, а не индекс
if 'num' in manga_data:
manga_data['id'] = manga_data.pop('num') # Меняем num на id
# 2. Вставка документа
collection.insert_one(manga_data)
print(f"Успешно добавлено: {manga_title} (ID: {manga_data.get('id')})")
except DuplicateKeyError:
print(f"Дубликат, пропускаем: {manga_title} (original_id: {manga_data.get('original_id')})")
except Exception as e:
print(f"Ошибка с '{manga_title}': {type(e).__name__} - {str(e)}")
client.close()
if __name__ == "__main__":
print("=== Начало импорта ===")
import_from_json("BD_hentai_1.json")
print("=== Импорт завершен ===")