自动登录QQ邮箱,按日期搜索发票邮件,下载PDF附件并解压ZIP,过滤非发票,生成Excel分类报告
QQ邮箱发票下载器 SKILL是一项面向实际任务的技能,主要用于自动登录QQ邮箱,搜索指定时间段的发票邮件,下载PDF附件,处理压缩包,并生成Excel目录;修复 date_lt 参数,支持精确日期范围;
跳过 OFD/XML/CSV;保留原文件名;不添加时间戳前缀;MD5内容比对,不同加版本号;ZIP解压后删除。
它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
自动登录QQ邮箱,搜索指定时间段的发票邮件,下载PDF附件,处理压缩包,并生成Excel目录
# v8.2 最新版 (推荐) python invoice_downloader_v82.py 260201 260310 # 输出目录: Z:OpenClawInvoiceOC260201-260310_v1
| 特性 | 说明 |
|---|---|
| 智能搜索 | 修复 date_lt 参数,支持精确日期范围 |
| 智能自适应按钮识别 | 自动扫描"下载"/"批量zip下载"等关键词 |
| 只下载PDF/图片 | 跳过 OFD/XML/CSV |
| 保留原文件名 | 不添加时间戳前缀 |
| 重名处理 | MD5内容比对,不同加版本号 |
| ZIP解压后删除 | 自动解压并删除压缩包 |
| 跳过非发票 | 过滤堂食明细、小票等 |
| SSL自动降级 | SSL失败时自动禁用验证重试 |
| Excel详细报告 | 成功/跳过/失败/异常分表显示 |
| 发票类型 | 处理方式 |
|---|---|
| 直接附件 | HTTP直接下载 |
| 诺诺网 | 浏览器点击下载按钮 |
| 税务平台(预览) | 浏览器点击PDF下载 |
| 税务平台(直链) | HTTP直接下载 |
| 飒拉商业 | 筛选PDF链接+HTTP下载 |
| 中海油/批量下载 | 识别"批量zip下载"按钮 |
| 通行费发票 | ZIP解压 |
260201-260310_vX/ ├── attachments/ # 发票文件 ├── 发票目录.xlsx # Excel报告 │ ├── 全部记录 # 所有邮件处理记录 │ ├── 成功 # 成功下载 │ ├── 跳过_重复 # 内容重复跳过的 │ ├── 失败 # 下载失败 │ └── 处理异常 # 处理异常 └── detailed_results.json # 详细JSON日志
⚠️ Playwright 浏览器必须串行!多线程要加 Lock!
greenlet.error: cannot switch to a different thread — 这是多线程并行 Playwright 导致。解决方案:单浏览器串行,通过 threading.Lock() 保证线程安全。
InvoiceAnalyzerWithLLM 在以下情况自动调用 MiniMax LLM:
| 条件 | 说明 |
|---|---|
confidence < 0.7 |
硬编码置信度不足 |
invoice_type == "unknown" |
平台不在已知列表中 |
策略:硬编码优先 → 置信度不足或类型未知 → LLM fallback → 取置信度更高者
# 设置环境变量(Windows PowerShell) $env:MINIMAX_API_KEY = "your-api-key-here" # 或在 Python 中直接传入 from invoice_analyzer_v9 import InvoiceAnalyzerWithLLM analyzer = InvoiceAnalyzerWithLLM(api_key="your-api-key-here") # 不设置 → 纯硬编码模式(v8.2 兼容行为)
cd qq-invoice-downloader
# 语法检查
python -m py_compile invoice_downloader_v82.py
python -m py_compile invoice_analyzer_v9.py
# 导入验证
python -c "from invoice_analyzer_v9 import InvoiceAnalyzerWithLLM; print('import OK')"
# 运行集成测试(使用 unittest,pytest 可选)
python test/test_analyzer.py
# 或用 pytest
python -m pytest test/test_analyzer.py -v
| 测试类 | 验证点 |
|---|---|
TestKnownPlatforms |
和运国际/诺诺网/中海油 → 置信度 ≥ 0.7,不触发 LLM |
TestUnknownPlatformTriggersLLM |
未知平台 → LLM 被调用并胜出 |
TestLLMWinsWhenBetter |
LLM 置信度 > 硬编码 → 使用 LLM |
TestFallbackPreservesBaseResult |
LLM 异常 → 保留硬编码结果 |
TestNonInvoiceSkip |
非发票邮件 → unknown 类型 |
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 133.7万人学习
共49课时 | 82.4万人学习