ehentai-qt开发者指南:从源码结构到API调用的实战教程

ehentai-qt开发者指南:从源码结构到API调用的实战教程

ehentai-qt是一款功能强大的e-hentai/exhentai看图、搜索和下载工具,本指南将带你从源码结构入手,逐步掌握核心API调用方法,轻松上手二次开发。

项目架构概览

ehentai-qt采用模块化设计,主要分为以下核心目录:

  • src/:核心源代码目录
    • component/:UI组件库,包含自定义按钮、对话框等
    • config/:配置管理模块
    • interface/:UI界面定义
    • server/:网络请求处理
    • task/:任务管理系统
    • tools/:工具函数库
    • view/:视图层实现

ehentai-qt加载动画效果

快速启动项目

通过以下命令克隆并运行项目:

git clone https://gitcode.com/gh_mirrors/eh/ehentai-qt cd ehentai-qt # 安装依赖 pip install -r src/requirements.txt # 启动应用 python src/start.py

启动流程在src/start.py中定义,主要完成:

  • 初始化日志和配置
  • 设置高DPI支持
  • 创建主窗口并加载视图

核心模块解析

1. 任务管理系统

任务系统是ehentai-qt的核心,位于src/task/目录,主要包含:

  • task_http.py:网络请求任务

    def AddHttpTask(self, req, callBack=None, backParam=None, cleanFlag=None): # 添加HTTP请求任务
  • task_download.py:下载任务管理

    def DownloadTask(self, url, path, downloadCallBack=None, completeCallBack=None): # 下载文件并支持回调
  • task_waifu2x.py:图片放大任务

    def AddConvertTaskByPath(self, loadPath, savePath, callBack, backParam=None): # 通过路径添加图片转换任务

2. 网络请求处理

src/server/req.py定义了各类API请求封装,例如:

# 书籍信息请求 def __init__(self, bookId, page=1, token="", site=""): # 构造请求参数

3. UI组件系统

自定义UI组件位于src/component/,包含:

  • 自定义按钮(button/)
  • 对话框(dialog/)
  • 布局管理器(layout/)
  • 列表控件(list/)

API调用实战

发起网络请求

from server.req import BookInfoReq from task.qt_task import QtTask # 创建请求 req = BookInfoReq(bookId="12345", page=1) # 添加到任务队列 QtTask().AddHttpTask(req, callBack=self.OnBookInfoBack)

处理下载任务

# 添加下载任务 QtTask().AddDownloadTask( url="https://example.com/image.jpg", path="/save/path/image.jpg", completeCallBack=self.OnDownloadComplete )

图片处理任务

# 添加Waifu2x图片放大任务 QtTask().AddConvertTaskByPath( loadPath="/input/image.jpg", savePath="/output/image_2x.jpg", callBack=self.OnConvertComplete )

开发注意事项

  1. 配置管理:使用src/config/setting.py管理应用设置
  2. 日志系统:通过tools/log.py记录调试信息
  3. 多线程处理:所有耗时操作通过任务系统异步执行
  4. 异常处理:使用qt_error.py中的工具函数捕获和显示错误

总结

本指南介绍了ehentai-qt的基本架构和核心API使用方法。通过任务系统、网络请求和UI组件的灵活组合,你可以快速扩展功能或定制个性化需求。更多细节请参考源码中的具体实现。

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考