{"id":29875944,"url":"https://github.com/zxp19821005/aur-update-checker-python","last_synced_at":"2026-04-12T00:03:46.408Z","repository":{"id":306886890,"uuid":"1027503303","full_name":"zxp19821005/aur-update-checker-python","owner":"zxp19821005","description":"A personal project, mainly used to check if there are updates available upstream for the software packages I maintain. All the code was completed with the help of an AI programming assistant.一个个人项目，主要用于检查我维护的软件包的上游是否存在更新。","archived":false,"fork":false,"pushed_at":"2025-07-28T08:02:00.000Z","size":367,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-28T09:10:45.404Z","etag":null,"topics":["archlinux","aur","axel","gitee","github","gitlab","linux","npm","playwright","pyside6","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zxp19821005.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"security_scan.sh","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-28T05:42:13.000Z","updated_at":"2025-07-28T08:02:03.000Z","dependencies_parsed_at":"2025-07-28T09:11:03.127Z","dependency_job_id":"4c17dd42-0c5f-47b7-8580-8e7d739e1e0a","html_url":"https://github.com/zxp19821005/aur-update-checker-python","commit_stats":null,"previous_names":["zxp19821005/aur-update-checker-python"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/zxp19821005/aur-update-checker-python","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zxp19821005%2Faur-update-checker-python","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zxp19821005%2Faur-update-checker-python/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zxp19821005%2Faur-update-checker-python/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zxp19821005%2Faur-update-checker-python/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zxp19821005","download_url":"https://codeload.github.com/zxp19821005/aur-update-checker-python/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zxp19821005%2Faur-update-checker-python/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278258603,"owners_count":25957310,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-04T02:00:05.491Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["archlinux","aur","axel","gitee","github","gitlab","linux","npm","playwright","pyside6","python"],"created_at":"2025-07-31T03:00:31.201Z","updated_at":"2025-10-04T03:15:04.229Z","avatar_url":"https://github.com/zxp19821005.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AUR Update Checker (Python版)\n\n![AUR Update Checker](assets/icon.png)\n\nA personal project, mainly used to check if there are updates available upstream for the software packages I maintain. All the code was completed with the help of an AI programming assistant.\n\n一个个人项目，主要用于检查我维护的软件包的上游是否存在更新。所有代码都是通过AI编程助手完成的。\n\n使用到的AI编程助手包括：\n- [CodeGeeX](https://codegeex.cn/)\n- [FittenCode](https://www.fittencode.cn/)\n- [CodeBuddy](https://codebuddy.ai/)\n\n项目图标由[豆包](https://www.doubao.com/)生成。\n\n[![Build and Package](https://github.com/zxp19821005/aur-update-checker-python/actions/workflows/build.yml/badge.svg)](https://github.com/zxp19821005/aur-update-checker-python/actions/workflows/build.yml)\n\n## 功能特点\n\n- **多源检查**：同时检查 AUR 软件包和上游源的最新版本\n- **丰富的上游源支持**：\n  - GitHub Releases/Tags\n  - GitLab Releases/Tags\n  - Gitee Releases/Tags\n  - NPM 包\n  - PyPI 包\n  - 通用 JSON API\n  - 网页内容解析\n  - 重定向链接解析\n- **友好的用户界面**：\n  - 简洁直观的单页面设计\n  - 系统托盘支持\n  - 深色/浅色主题切换\n  - 可自定义的表格显示\n- **高级功能**：\n  - 批量检查和更新\n  - 定时自动检查\n  - 版本更新通知\n  - 详细的日志记录\n  - 代理设置支持\n  - 本地数据库缓存\n\n## 技术架构\n\nAUR Update Checker 采用了现代化的架构设计：\n\n- **前端**：PySide6 (Qt for Python) 提供跨平台桌面应用支持\n- **后端**：\n  - Python 3.x 作为主要编程语言\n  - SQLite 作为本地数据库存储\n  - Requests 处理 HTTP 请求\n  - Playwright 处理复杂网页交互\n  - BeautifulSoup4 + lxml 解析 HTML/XML\n  - Loguru 提供高级日志管理\n- **架构模式**：\n  - 依赖注入设计模式\n  - 异步编程模型\n  - 模块化组件设计\n\n## 安装方法\n\n### 从 AUR 安装 (推荐)\n\n```bash\n# 使用 paru (推荐)\nparu -S aur-update-checker-python\n\n# 或使用 yay\nyay -S aur-update-checker-python\n```\n\n### 使用 pipx 安装\n\n```bash\n# 安装 pipx (如果尚未安装)\npython -m pip install --user pipx\npython -m pipx ensurepath\n\n# 安装应用\npipx install aur-update-checker-python\n\n# 运行应用\naur-update-checker-python\n```\n\n### 从源码安装 (开发者)\n\n```bash\n# 克隆仓库\ngit clone https://github.com/zxp19821005/aur-update-checker-python.git\ncd aur-update-checker-python\n\n# 创建虚拟环境\npython -m venv .venv\nsource .venv/bin/activate\n\n# 安装依赖\npip install -r requirements.txt\n\n# 运行应用\npython src/main.py\n```\n\n### 运行环境要求\n\n基础依赖：\n\n```bash\n# Arch Linux 系统\nsudo pacman -S python pyside6 python-beautifulsoup4 python-requests python-lxml python-playwright\n\n# 其他 Linux 发行版\npip install PySide6 requests beautifulsoup4 lxml playwright\n```\n\n**注意**：打包后的可执行文件默认使用系统安装的 PySide6 和 playwright 库，而不是将它们打包到可执行文件中。这样可以减小可执行文件的大小，但要求系统中必须安装这些依赖。\n\n如果在运行时遇到 `ModuleNotFoundError: No module named 'PySide6'` 错误，请确保已安装 PySide6：\n\n```bash\n# 检查 PySide6 是否已安装\npacman -Q pyside6\n\n# 如果未安装，则安装 PySide6\nsudo pacman -S pyside6\n```\n\n## 使用方法\n\n### 基本使用\n\n1. **添加软件包**：点击右下角的 \"+\" 按钮，输入 AUR 软件包名称\n2. **检查版本**：\n   - 单个软件包：点击软件包行中的 \"检查 AUR\" 或 \"检查上游\" 按钮\n   - 批量检查：选中多个软件包，然后使用顶部的批量操作按钮\n3. **查看结果**：软件包状态会自动更新，显示最新版本和检查时间\n4. **过滤软件包**：使用搜索框和过滤选项快速定位软件包\n5. **查看日志**：切换到 \"日志\" 标签页查看详细操作记录\n\n### 命令行选项\n\n```bash\npython main.py [选项]\n```\n\n可用选项：\n- `--config`, `-c`: 指定配置文件路径\n- `--log-level`, `-l`: 设置日志级别 (debug, info, warning, error, critical)\n- `--version`, `-v`: 显示版本信息\n\n## 配置\n\n### 配置文件位置\n\n配置文件默认位于 `~/.config/aur-update-checker-python/config.json`，可以通过以下方式指定：\n\n1. **环境变量**：设置 `AUR_UPDATE_CHECKER_CONFIG` 环境变量\n   ```bash\n   AUR_UPDATE_CHECKER_CONFIG=/path/to/config.json ./main.py\n   ```\n\n2. **命令行参数**：使用 `--config` 或 `-c` 参数\n   ```bash\n   ./main.py --config /path/to/config.json\n   ```\n\n### 主要配置选项\n\n配置文件采用 JSON 格式，包含以下主要部分：\n\n- **database**: 数据库设置（路径、备份数量）\n- **logging**: 日志设置（级别、文件路径、控制台输出）\n- **aur**: AUR 源设置（基础 URL、超时时间）\n- **upstream**: 上游源通用设置（超时、用户代理、缓存时间）\n- **github/gitee/gitlab**: 代码托管平台设置（API URL、令牌）\n- **npm/pypi**: 包管理器设置\n- **system**: 系统设置（临时目录、并发检查数）\n- **scheduler**: 调度器设置（启用状态、检查间隔）\n- **ui**: 界面设置（主题、字体大小、托盘图标）\n\n详细配置选项请参考项目中的 `config.template.json` 文件。\n\n## 高级功能\n\n### 虚拟环境中使用\n\n如果您在 Python 虚拟环境中使用打包后的可执行文件，需要确保虚拟环境中也安装了所需的依赖：\n\n```bash\n# 创建并激活虚拟环境\npython -m venv venv\nsource venv/bin/activate\n\n# 安装依赖\npip install PySide6 requests beautifulsoup4 lxml playwright\n\n# 运行程序\n./dist/aur-update-checker-python\n```\n\n或者，您可以修改 package.py 文件，取消 `--nofollow-import-to=PySide6` 和 `--nofollow-import-to=playwright` 选项，将这些依赖打包到可执行文件中：\n\n```python\n# 将这些行注释掉\n# \"--nofollow-import-to=PySide6\",  # 排除 PySide6 依赖\n# \"--nofollow-import-to=playwright\",  # 排除 playwright 依赖\n\n# 添加这些行\n\"--plugin-enable=pyside6\",\n\"--include-qt-plugins=platforms\",\n\"--include-package-data=playwright\",\n```\n\n### 定时检查\n\n启用定时检查功能后，应用会按照设定的时间间隔自动检查更新：\n\n1. 在 \"设置\" 标签页中启用定时检查\n2. 设置 AUR 和上游源的检查间隔时间\n3. 可选择是否在启动时自动检查\n4. 可启用或禁用更新通知\n\n### 代理设置\n\n支持通过环境变量或配置文件设置 HTTP/HTTPS/SOCKS 代理：\n\n```json\n\"network\": {\n  \"proxy\": {\n    \"http\": \"http://127.0.0.1:7890\",\n    \"https\": \"http://127.0.0.1:7890\",\n    \"socks5\": \"socks5://127.0.0.1:1080\"\n  }\n}\n```\n\n### 自定义上游源\n\n可以为每个软件包单独配置上游源检查方式：\n\n1. 右键点击软件包，选择 \"编辑上游源\"\n2. 选择检查器类型（GitHub/GitLab/NPM/PyPI/Web等）\n3. 填写相应的仓库信息或 URL 模式\n4. 保存设置后，系统将使用自定义方式检查该软件包\n\n## 开发指南\n\n### 项目结构\n\n```\naur-update-checker-python/\n├── assets/                 # 图标和资源文件\n├── docs/                   # 开发文档\n├── src/                    # 源代码\n│   ├── modules/            # 核心功能模块\n│   │   ├── checkers/       # 各类检查器实现\n│   │   └── ...\n│   └── ui/                 # 用户界面组件\n│       ├── logs_tab/       # 日志标签页\n│       ├── main_window/    # 主窗口\n│       └── settings_tab/   # 设置标签页\n├── .github/                # GitHub Actions 工作流\n├── main.py                 # 程序入口\n├── package.py              # 打包脚本\n├── deploy.py               # 部署脚本\n└── requirements.txt        # 依赖列表\n```\n\n### 核心设计模式\n\n项目采用了多种设计模式和最佳实践：\n\n1. **依赖注入**：通过 `DependencyContainer` 实现组件解耦\n2. **工厂模式**：用于创建不同类型的检查器\n3. **策略模式**：实现不同的版本检查策略\n4. **观察者模式**：用于 UI 更新和事件通知\n5. **异步编程**：使用 asyncio 和 qasync 处理并发任务\n\n详细开发指南请参考 `docs/` 目录下的文档：\n- `dependency_injection_guide.md`: 依赖注入使用指南\n- `error_handling_guide.md`: 错误处理指南\n- `http_client_guide.md`: HTTP 客户端使用指南\n- `thread_safety_guide.md`: 线程安全指南\n\n## 贡献指南\n\n欢迎提交 Pull Requests 或 Issues 来帮助改进这个项目。\n\n### 贡献步骤\n\n1. Fork 本仓库\n2. 创建您的特性分支 (`git checkout -b feature/amazing-feature`)\n3. 提交您的更改 (`git commit -m 'Add some amazing feature'`)\n4. 推送到分支 (`git push origin feature/amazing-feature`)\n5. 打开一个 Pull Request\n\n### 代码规范\n\n- 遵循 PEP 8 Python 代码风格\n- 使用类型注解增强代码可读性\n- 为新功能编写单元测试\n- 保持文档和注释的更新\n\n## 故障排除\n\n### 常见问题\n\n1. **ModuleNotFoundError: No module named 'PySide6'**\n   - 原因：打包的可执行文件依赖系统安装的 PySide6\n   - 解决方法：`sudo pacman -S pyside6` 或在虚拟环境中 `pip install PySide6`\n\n2. **ModuleNotFoundError: No module named 'playwright'**\n   - 原因：打包的可执行文件依赖系统安装的 playwright\n   - 解决方法：`sudo pacman -S python-playwright` 或在虚拟环境中 `pip install playwright`\n\n3. **缺少共享库错误（如 libicudata.so.66）**\n   - 原因：playwright 依赖的系统库缺失\n   - 解决方法：修改 package.py，取消注释 `--include-package-data=playwright` 选项，重新打包\n\n4. **无法找到 Qt 平台插件**\n   - 原因：Qt 平台插件未包含在可执行文件中\n   - 解决方法：修改 package.py，添加 `--plugin-enable=pyside6` 和 `--include-qt-plugins=platforms` 选项，重新打包\n\n### 调试技巧\n\n如果遇到其他问题，可以尝试以下调试方法：\n\n```bash\n# 启用调试日志\n./dist/aur-update-checker-python --log-level debug\n\n# 使用 strace 跟踪系统调用\nstrace -f ./dist/aur-update-checker-python\n\n# 检查动态链接库依赖\nldd ./dist/aur-update-checker-python\n```\n\n## 许可证\n\n本项目采用 MIT 许可证 - 详情请参见 [LICENSE](LICENSE) 文件\n\n## 致谢\n\n- [PySide6](https://wiki.qt.io/Qt_for_Python) - Qt for Python\n- [Requests](https://requests.readthedocs.io/) - 人性化的 HTTP 客户端\n- [Playwright](https://playwright.dev/) - 现代浏览器自动化工具\n- [Loguru](https://github.com/Delgan/loguru) - Python 日志库\n- [BeautifulSoup4](https://www.crummy.com/software/BeautifulSoup/) - HTML/XML 解析库\n- [SQLite](https://www.sqlite.org/) - 轻量级数据库引擎\n\n---\n\n**AUR Update Checker** © 2023-2024 Z.ai. 保留所有权利。","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzxp19821005%2Faur-update-checker-python","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzxp19821005%2Faur-update-checker-python","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzxp19821005%2Faur-update-checker-python/lists"}