一个基于 Flask 的业余无线电奖状申请系统,支持解析 LOTW 导出的 ADIF 日志文件并检查各种奖状的申请条件。
使用trae生成,使用请检查代码可用性
用于验证ai编程效果
- ADIF 文件解析:支持解析 LOTW 导出的详细版本 ADIF 日志文件,处理大文件更高效
- 奖状条件检查:支持多种业余无线电奖状的条件检查
- WAPC(中国各省份通联奖状)
- WACZ(中国大陆0-9区通联奖状,显示DXCC 318标识)
- DXCC(不同DXCC实体通联奖状,支持多阶段,排除DXCC0)
- 呼号识别:自动识别呼号对应的国家、省份、分区等信息
- 用户友好界面:基于 Flask 的 Web 界面,易于使用
- 准确的DXCC计数:只计算有效的数字形式DXCC代码,排除非数字值和DXCC0,但有些日志会识别错误,还需要迭代
pip install -r requirements.txtpython app.py应用将在 http://127.0.0.1:5000 启动。
- 上传日志:在首页点击"上传日志"按钮,选择从 LOTW 导出的详细版本 ADIF 文件
- 查看结果:系统自动解析日志并显示各奖状的申请条件满足情况
- 申请奖状:选择符合条件的奖状进行申请
- 必须是从 LOTW (Logbook of the World) 导出的详细版本 ADIF 文件
- 应该包含APP_LoTW_DXCC_ENTITY_STATUS、GRIDSQUARE等信息
.
├── awards/ # 奖状相关模块
│ ├── callsign_parser.py # 呼号解析器
│ ├── checker.py # 奖状条件检查器
│ ├── china_callsign_province_map.py # 中国呼号省份映射
│ └── conditions.py # 奖状条件定义
├── src/ # 核心模块
│ └── adif_parser/ # ADIF 解析器
├── static/ # 静态资源
├── templates/ # 网页模板
├── app.py # 主应用文件
├── cty.dat # 呼号前缀数据文件
└── requirements.txt # 依赖列表
- app.py:Flask 应用主入口,处理 HTTP 请求和响应
- awards/checker.py:奖状条件检查逻辑
- src/adif_parser/parser.py:ADIF 文件解析逻辑
- templates/:Jinja2 模板文件
- 在
awards/conditions.py中定义新奖状的条件 - 在
awards/checker.py中添加条件检查逻辑 - 更新模板文件以显示新奖状的信息
- 本系统仅用于检查奖状申请条件,不实际提交申请
- 提交申请需后期慢慢迭代
- 请确保上传的日志文件符合 LOTW 详细版本的格式要求
- 系统会自动识别呼号信息,但可能存在识别错误的情况
感谢以下业余无线电爱好者提供的测试数据和支持:
- BD4SDO
- BG7LFX
- BG7QIW
- BG7XWF
- BI4IVE
- BH2VSQ
- BH7GZB
- BH7HHR
MIT License
下面这段话是为了测试git提交,如果你在仓库主页看到这段话,说明git提交成功