modify scripts
This commit is contained in:
105
javhd/tools.py
Normal file
105
javhd/tools.py
Normal file
@ -0,0 +1,105 @@
|
||||
import json
|
||||
import sqlite3
|
||||
import os
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
home_dir = os.path.expanduser("~")
|
||||
global_host_data_dir = f'{home_dir}/hostdir/scripts_data'
|
||||
global_share_data_dir = f'{home_dir}/sharedata'
|
||||
|
||||
db_path = f"{global_share_data_dir}/shared.db"
|
||||
|
||||
def create_table():
|
||||
"""创建 SQLite 数据表"""
|
||||
conn = sqlite3.connect(db_path)
|
||||
cursor = conn.cursor()
|
||||
cursor.execute('''
|
||||
CREATE TABLE IF NOT EXISTS javhd_models (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
rank INTEGER,
|
||||
ja_name TEXT,
|
||||
zh_name TEXT,
|
||||
en_name TEXT,
|
||||
url TEXT UNIQUE,
|
||||
pic TEXT,
|
||||
height TEXT,
|
||||
weight TEXT,
|
||||
breast_size TEXT,
|
||||
breast_factor TEXT,
|
||||
hair_color TEXT,
|
||||
eye_color TEXT,
|
||||
birth_date TEXT,
|
||||
ethnicity TEXT,
|
||||
birth_place TEXT,
|
||||
created_at TEXT DEFAULT (datetime('now', 'localtime')),
|
||||
updated_at TEXT DEFAULT (datetime('now', 'localtime'))
|
||||
)
|
||||
''')
|
||||
conn.commit()
|
||||
conn.close()
|
||||
|
||||
def insert_data(data):
|
||||
"""插入 JSON 数据到数据库,处理冲突情况"""
|
||||
conn = sqlite3.connect(db_path)
|
||||
cursor = conn.cursor()
|
||||
|
||||
sql = '''
|
||||
INSERT INTO javhd_models (
|
||||
rank, ja_name, zh_name, en_name, url, pic, height, weight,
|
||||
breast_size, breast_factor, hair_color, eye_color, birth_date,
|
||||
ethnicity, birth_place, updated_at
|
||||
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, datetime('now', 'localtime'))
|
||||
ON CONFLICT(url) DO UPDATE SET
|
||||
rank=excluded.rank,
|
||||
ja_name=excluded.ja_name,
|
||||
zh_name=excluded.zh_name,
|
||||
en_name=excluded.en_name,
|
||||
pic=excluded.pic,
|
||||
height=excluded.height,
|
||||
weight=excluded.weight,
|
||||
breast_size=excluded.breast_size,
|
||||
breast_factor=excluded.breast_factor,
|
||||
hair_color=excluded.hair_color,
|
||||
eye_color=excluded.eye_color,
|
||||
birth_date=excluded.birth_date,
|
||||
ethnicity=excluded.ethnicity,
|
||||
birth_place=excluded.birth_place,
|
||||
updated_at=datetime('now', 'localtime');
|
||||
'''
|
||||
|
||||
for item in data:
|
||||
try:
|
||||
cursor.execute(sql, (
|
||||
item.get("rank"), item.get("ja_name"), item.get("zh_name"), item.get("en_name"),
|
||||
item.get("url"), item.get("pic"), item.get("Height"), item.get("Weight"),
|
||||
item.get("Breast size"), item.get("Breast factor"), item.get("Hair color"),
|
||||
item.get("Eye color"), item.get("Birth date"), item.get("Ethnicity"),
|
||||
item.get("Birth place")
|
||||
))
|
||||
except sqlite3.Error as e:
|
||||
print(f"[ERROR] 插入数据时发生错误: {e}")
|
||||
|
||||
conn.commit()
|
||||
conn.close()
|
||||
|
||||
def load_json(file_path):
|
||||
"""读取 JSON 文件并返回数据"""
|
||||
if not os.path.exists(file_path):
|
||||
print("[ERROR] JSON 文件不存在!")
|
||||
return []
|
||||
|
||||
with open(file_path, "r", encoding="utf-8") as f:
|
||||
try:
|
||||
data = json.load(f)
|
||||
return data
|
||||
except json.JSONDecodeError as e:
|
||||
print(f"[ERROR] 解析 JSON 文件失败: {e}")
|
||||
return []
|
||||
|
||||
if __name__ == "__main__":
|
||||
#create_table()
|
||||
json_data = load_json("./result/models_detail.json")
|
||||
if json_data:
|
||||
insert_data(json_data)
|
||||
print("[INFO] 数据导入完成!")
|
||||
Reference in New Issue
Block a user