# Changelog ## v3.6 - 改进TBD比赛处理机制 - **放宽TBD比赛时间匹配条件**: - 将TBD事件匹配的时间窗口从5分钟扩大到1小时 - 更好地处理比赛时间调整的情况 - 添加时间差异显示,方便调试 - **自动删除过期TBD事件**: - 新增 `delete_calendar_event()` 方法 - 自动检测并删除超过2小时的过期TBD事件 - 避免日历中积累无效的占位事件 - **增强的TBD事件管理**: - 跟踪已更新的TBD事件,避免误删 - 在同步摘要中显示删除的TBD事件数量 ## v3.5 - 修复TBD比赛标记问题 - **修复TBD比赛错误标记为完成**: - 修改比分解析逻辑,只匹配破折号而不匹配冒号 - 避免将时间(19:00)误识别为比分 - 添加日期格式检查,防止误识别 - **TBD比赛保护机制**: - 确保TBD vs TBD的比赛永远不会被标记为有比分或已完成 - 如果错误解析了TBD比赛的比分,会自动删除 - 增强比分验证逻辑 ## v3.4 - 修复重复事件问题 - **修复进行中比赛更新创建重复的问题**: - 改进事件匹配逻辑,增强基于队伍名称的查找 - 即使比分变化也能正确识别同一场比赛 - 避免在比分更新时(如从 1-0 到 1-1)创建新事件 - **新增重复事件清理工具**: - 添加 `cleanup_duplicates.py` 用于查找和删除重复事件 - 添加 `delete_duplicates.py` 用于手动清理特定重复 - **增强的事件查找机制**: - 不仅通过 ID 查找,还通过 team+tournament 组合查找 - 支持忽略比分差异的模糊匹配 - 改进对时间变更和 TBD 更新的处理 ## v3.3 - 支持进行中比赛的实时比分 - **使用 BeautifulSoup 解析 HTML 结构**: - 重写了 `_parse_match` 方法,使用 DOM 结构而非正则表达式 - 准确提取队名、比分、赛制和锦标赛信息 - 解决了 "Aurora1:0(Bo3)YkBros" 格式的解析问题 - **区分系列赛进行中和已完成状态**: - 新增 `has_score` 标记,表示比赛是否有比分 - Bo3 需要 2 胜才标记为完成,Bo5 需要 3 胜 - 进行中的比赛显示当前比分(如 1-0),但不显示✓标记 - **新增进行中比分更新功能**: - 添加 `update_event_with_score` 方法处理进行中比赛 - 在日历标题显示实时比分(如 "1-0 Team1 vs Team2") - 在描述中添加 "📊 CURRENT SCORE" 标记 - **扩展处理时间范围**: - 处理最近 12 小时内的比赛,捕获正在进行的比赛 - 确保进行中的比赛比分能及时同步 ## v3.2.1 - 修复比分识别问题 - **修复错误的比分解析**: - 修复了将日期时间误识别为比分的问题(如 "19-00") - 改进比分识别逻辑,只在包含 "vs" 的上下文中查找比分 - 添加比分范围验证(0-5),排除不合理的数值 - 增强时间模式识别,避免将时间戳识别为比分 ## v3.2 - TBD 比赛优化 - **智能去重机制**: - 相同时间、相同轮次的多个 TBD 比赛只保留一个代表 - 避免日历中出现大量重复的 TBD 条目 - **TBD 比赛自动更新**: - 当 TBD 比赛的队伍确定后,自动更新对应的日历事件 - 通过时间和锦标赛信息智能匹配 TBD 事件 - 新增 `update_event_with_teams` 方法专门处理队伍更新 - **改进的事件匹配逻辑**: - 三层匹配机制:ID 匹配 → 队伍+锦标赛匹配 → 时间+锦标赛匹配 - 确保 TBD 比赛更新后仍能正确跟踪 ## v3.1 - 格式优化更新 - **新的标题格式**: - 之前: `Dota 2 - The International 2025: Team1 vs Team2` - 现在: `Team1 vs Team2 [The International 2025]` - **简化的完成标记**: - 之前: `[COMPLETED] Dota 2 - Tournament: Team1 vs Team2` - 现在: `✓ 2-0 Team1 vs Team2 [Tournament]` - 移除了 "Dota 2" 字样,让日历更简洁 - 比分紧跟在✓后面,更加紧凑 ## v3.0 - 时间变更检测 - 新增比赛时间变更自动检测 - 当赛程调整时自动更新日历 - 支持 `--no-time-updates` 参数跳过时间更新 ## v2.0 - 比赛结果更新 - 自动获取已完成比赛的结果 - 更新日历事件显示比分和获胜队伍 - 支持 `--no-results` 参数跳过结果更新 ## v1.0 - 基础同步 - 从 Liquipedia 获取 Tier 1 比赛 - 同步到 Google Calendar - 避免重复添加 - 支持 dry-run 模式 ## 功能对比 | 版本 | 同步比赛 | 更新结果 | 时间变更 | 新格式 | TBD优化 | 实时比分 | |------|---------|---------|---------|--------|---------|----------| | v1.0 | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | | v2.0 | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | | v3.0 | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | | v3.1 | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ | | v3.2 | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ | | v3.3 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | v3.4 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | v3.5 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ## 使用建议 推荐使用最新的 v3 版本,它包含所有功能: ```bash ./run_sync.sh ``` 或手动运行: ```bash python sync_dota2_matches_v3.py --calendar-id "YOUR_CALENDAR_ID" ```