iBook/review_worker.py

33 lines
1.2 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from PyQt6.QtCore import QThread, pyqtSignal
class BookReviewWorker(QThread):
"""后台获取书籍 AI 简评的线程(迁移自 ibook_export_app.py"""
finished = pyqtSignal(str, str) # bookname, review
def __init__(self, bookname, prompt, json_path, parent=None):
super().__init__(parent)
self.bookname = bookname
self.prompt = prompt
self.json_path = json_path
def run(self):
import json
try:
from ai_interface import DashScopeChatClient
chat = DashScopeChatClient()
review = chat.ask(self.prompt)
except Exception as e:
review = f"[AI简评获取失败: {e}]"
try:
try:
with open(self.json_path, 'r', encoding='utf-8') as f:
intro_dict = json.load(f)
except Exception:
intro_dict = {}
intro_dict[self.bookname] = review
with open(self.json_path, 'w', encoding='utf-8') as f:
json.dump(intro_dict, f, ensure_ascii=False, indent=2)
except Exception as e:
print(f"写入 bookintro.json 失败: {e}")
self.finished.emit(self.bookname, review)