44 lines
1.7 KiB
Python
44 lines
1.7 KiB
Python
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("=== Импорт завершен ===") |