nikolaitolmachev/flashscore-lineups

GitHub: nikolaitolmachev/flashscore-lineups

通过逆向 Flashscore 内部 GraphQL API 直接获取并可视化足球与冰球比赛阵容、球员数据及赔率信息的跨平台桌面应用。

Stars: 0 | Forks: 0

Flashscore Lineups Logo

Flashscore Lineups

用于直接从 Flashscore 内部 GraphQL API 获取并可视化足球和冰球阵容的 桌面应用程序,无需浏览器自动化。

演示功能工程亮点架构安装

## 演示 ### 应用程序工作流程

Application Demo

Football Hockey
Football Ice Hockey
应用程序直接从 Flashscore 的内部 GraphQL API 和球队 HTML 页面获取数据,然后将其聚合到统一的桌面视图中:球队阵容、球员出场历史以及可用的 1X2 投注赔率。 不涉及 Selenium、浏览器自动化或 Web 渲染——所有数据均通过直接的 HTTP 请求收集。 ## 功能 * 直接从 Flashscore 获取足球和冰球阵容 * 显示首发阵容、替补球员和球员位置 * 使用颜色编码的点直观显示球员过去 4 场比赛的出场情况 * 获取球员详细信息,包括国籍、年龄、出场次数和进球数 * 显示冰球特有的守门员统计数据(SV%、GAA、零封) * 显示可用的 1X2 投注赔率及变化方向指示器 * 直接从 Flashscore CDN 加载球队队徽和国旗 * 单击即可打开球员的 Flashscore 个人资料 * 使用 PyQt5 构建的跨平台桌面界面 ## 工程亮点 * 逆向工程 Flashscore 的内部 GraphQL endpoint * 结合持久化 GraphQL 查询与 HTML 解析的多源数据 pipeline * 使用 Python dataclasses 实现的领域驱动数据模型 * 使用 pytest 进行自动化单元和集成测试 * 结构划分为领域、服务、UI 和测试层 * 使用轻量级 HTTP 请求代替浏览器自动化来优化请求流程 ## 架构 ``` Match URL │ ▼ Match ID Parser │ ▼ Flashscore GraphQL API │ ┌──────────┼──────────┐ │ │ ▼ ▼ dsof dlie2 (match info, (current team IDs, lineups, last events) status map) │ │ └──────────┬──────────┘ │ ▼ Previous Matches (dlie2 × N) │ ▼ Squad HTML Pages (×2 teams) │ ▼ Odds Pipeline ┌──────────┴──────────┐ ▼ ▼ pobtm → ope2 × N (bookmaker (1X2 odds list) per bookmaker) │ ▼ Data Aggregation Layer │ ▼ Domain Data Models (Match, Team, Player, Odds, LineupResult) │ ▼ PyQt5 GUI ``` 应用程序将持久化的 GraphQL 查询与辅助的 HTML 解析相结合,并在渲染最终桌面界面之前,将检索到的数据转换为强类型的领域模型。 ## 状态颜色 | 颜色 | 状态 | 含义 | | ----- |------------| ------------------------------------ | | 🟢 | 首发 | 球员首发上场 | | 🟡 | 替补 | 球员在替补席上 | | 🔴 | 缺席 | 球员未入选大名单 | | ⚪ | 未知 | 无历史数据 | ## 安装 克隆代码库: ``` git clone https://github.com/nikolaitolmachev/flashscore-lineups.git cd flashscore-lineups ``` 创建并激活虚拟环境: ``` python -m venv .venv ``` **Linux / macOS** ``` source .venv/bin/activate ``` **Windows** ``` .venv\Scripts\activate ``` 安装依赖项: ``` python -m pip install --upgrade pip pip install -r requirements.txt ``` ## 用法 启动应用程序: ``` python main.py ``` 将 Flashscore 比赛网址粘贴到输入框中,然后单击 **Check lineups**。 ## 下载 Releases 部分提供了预构建的 Windows 可执行文件。 无需安装 Python。 ## 构建可执行文件 使用 PyInstaller 构建独立可执行文件: ``` pip install pyinstaller pyinstaller -F -w --icon=assets/icon.ico --name Flashscore-Lineups main.py ``` 生成的可执行文件将位于 `dist/` 目录中。 ## 免责声明 本项目仅供教育目的使用。 它使用了 Flashscore 公开可访问的 Web 资源以及通过客户端分析发现的内部 GraphQL endpoint。所有商标、徽标和数据均归其各自所有者所有。 本项目未隶属于 Flashscore,也未获得其认可或与其有任何关联。 ## 许可证 本项目基于 MIT 许可证授权。详情请参阅 [LICENSE](LICENSE) 文件。
标签:API逆向, GraphQL, PyQt5, Python, 体育数据, 安全规则引擎, 无后门, 桌面应用, 漏洞挖掘, 逆向工具