AnimeTracker
Showcase以 PyQt6 打造的 Windows 桌面動畫瀏覽器,串接巴哈姆特動畫瘋 API,全程非同步載入不卡 UI。
專案概述
整合巴哈姆特動畫瘋的 mobile 與 web 兩套 API,提供首頁熱播、本季新番、標籤篩選、關鍵字搜尋與我的最愛等功能。所有 API 與封面圖下載均透過 QRunnable + QThreadPool 在背景執行緒處理,搭配執行緒安全的限流重試、磁碟圖片快取(7 天 TTL)與本機 JSON 收藏持久化,UI 全程不卡頓。
關鍵亮點
- 以 QRunnable + QThreadPool 將所有 API 與圖片下載移至背景執行緒,圖片以 bytes 跨執行緒傳遞、QPixmap 僅在主執行緒建立,確保 UI 不阻塞。
- 執行緒安全的 API 客戶端:以 Lock 序列化請求並強制 1 秒冷卻、失敗 3 次指數退避重試;在官方 v2 端點失效後改以 v3 與 web API 取得替代內容。
技術棧
PythonPyQt6requestsQThreadPoolpytestPyInstaller
挑戰與取捨
官方 mobile v2/list.php 回傳「APP版本過舊」而失效,改以 v3/index.php 各分區與 web API 拼湊出等效的分類與標籤篩選內容;評分需於詳情載入後才取得,因此設計評分快取機制,讓卡片評分在切換頁面後仍能保留。