{"id":28926844,"url":"https://github.com/obsidianplusplus/5e_play_cs-go","last_synced_at":"2026-02-13T17:31:45.273Z","repository":{"id":298775661,"uuid":"924554803","full_name":"obsidianplusplus/5E_Play_CS-GO","owner":"obsidianplusplus","description":"Python工具，分析你在5EPlay的CS:GO比赛数据。抓取、分析、筛选并导出。 | Python tool to analyze your 5EPlay CS:GO match data. Fetches, analyzes, filters, and exports.","archived":false,"fork":false,"pushed_at":"2025-01-30T08:23:40.000Z","size":13,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-22T12:13:23.831Z","etag":null,"topics":["5eplay","analysis","api","automation","csgo","data","esports","excel","json","match","pandas","performance","player","python","reporting","scraping","stats","team"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/obsidianplusplus.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-01-30T08:22:37.000Z","updated_at":"2025-04-27T07:55:59.000Z","dependencies_parsed_at":"2025-06-12T21:59:11.122Z","dependency_job_id":"8cf89912-0267-4dd9-937d-387a1836c98a","html_url":"https://github.com/obsidianplusplus/5E_Play_CS-GO","commit_stats":null,"previous_names":["obsidianplusplus/5e_play_cs-go"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/obsidianplusplus/5E_Play_CS-GO","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/obsidianplusplus%2F5E_Play_CS-GO","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/obsidianplusplus%2F5E_Play_CS-GO/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/obsidianplusplus%2F5E_Play_CS-GO/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/obsidianplusplus%2F5E_Play_CS-GO/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/obsidianplusplus","download_url":"https://codeload.github.com/obsidianplusplus/5E_Play_CS-GO/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/obsidianplusplus%2F5E_Play_CS-GO/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29413385,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-13T06:24:03.484Z","status":"ssl_error","status_checked_at":"2026-02-13T06:23:12.830Z","response_time":78,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["5eplay","analysis","api","automation","csgo","data","esports","excel","json","match","pandas","performance","player","python","reporting","scraping","stats","team"],"created_at":"2025-06-22T12:12:13.303Z","updated_at":"2026-02-13T17:31:45.268Z","avatar_url":"https://github.com/obsidianplusplus.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 📊 CS:GO Match Data Analysis \u0026 Reporting Tool 🚀\n\n## 项目概述 🎯\n\n这款 Python 脚本工具箱，旨在帮助你从 [5EPlay](https://www.5eplay.com/) 平台轻松抓取、分析和报告你的 CS:GO 比赛数据。告别手动整理，让数据驱动你的游戏提升！ 📈\n\n**核心功能一览:**\n\n1. **数据抓取与导出 (`main_script.py`):**  🌊\n   - 从 5EPlay API 自动化获取你的 CS:GO 比赛历史，包括比赛概况和详尽的玩家数据。\n   - 内置**智能重试机制**，应对网络波动，确保数据抓取的稳定性。 💪\n   - 将抓取的数据高效整理成结构化的 **Pandas DataFrames**。 🐼\n   - 一键导出比赛汇总数据和玩家数据到 **Excel 文件 (`csgo_report.xlsx`)**，分 sheet 存储，清晰明了。 📁\n\n2. **数据分析与玩家统计 (`analysis_script.py`):** 🔍\n   - 轻松读取 `csgo_report.xlsx` 文件中的数据。\n   - **个性化玩家筛选**：输入玩家昵称，快速聚焦特定玩家的比赛数据。 🧑‍🤝‍🧑\n   - **灵活的数据筛选**：支持按时间范围和最近比赛场数筛选数据，满足不同分析需求。 ⏳\n   - **组队局数据分析**：智能查找多位玩家共同参与的比赛，深度分析团队配合。 🤝\n   - **详尽数据展示**：计算并展示玩家每场比赛数据和平均统计数据，洞察个人表现。 📊\n   - **便捷数据导出**：将玩家的详细统计数据导出到独立的 **Excel 文件 (`player_detailed_stats.xlsx`)**，方便分享和存档。 📤\n\n3. **Excel to JSON 转换 (`excel_to_json.py`):** 🔄\n   - 快速读取 `csgo_report.xlsx` 文件中的 \"比赛汇总\" sheet。\n   - 将比赛汇总数据无缝转换为 **JSON 格式 (`csgo_report.json`)**，方便与其他程序或应用集成使用。 🌐\n\n## 技术原理详解 ⚙️\n\n本项目巧妙地结合了以下技术和原理，打造高效的数据分析流程：\n\n**1. 🚀 强大的 API 数据抓取 (Powered by `requests` 库):**\n\n- **🌐 HTTP 请求:** 使用 `requests` 库向 5EPlay API 发送精准的 GET 请求，高效获取比赛数据。\n- **🔑 API 端点 \u0026 参数:**  通过深入分析 5EPlay 网页的开发者工具 (Network 面板)，精准定位 API 端点 (`https://gate.5eplay.com/crane/http/api/data`) 和必要的请求参数 (如 `match_type`, `page`, `uuid`, `start_time`, `end_time` 等)。\n- **👤 模拟浏览器请求头 (Headers):**  巧妙地模拟浏览器行为，设置 `User-Agent` 和 `Referer` 请求头，并通过 `Authorization: Bearer {BEARER_TOKEN}` 头部进行身份验证。\n- **🔄 智能重试机制 (Leveraging `urllib3.Retry` \u0026 `requests.adapters.HTTPAdapter`):**  为了应对不可预测的网络波动或服务器瞬时故障，精心配置请求重试策略。当 API 返回特定错误状态码 (500, 502, 503, 504) 时，程序将自动重试请求，显著提升程序的健壮性。\n- **⚠️  SSL 证书验证 (开发阶段临时关闭 `verify=False`):**  在开发阶段为了简化流程，*临时* 关闭了 SSL 证书验证。 **🚨 重要提示：生产环境中，请务必启用 SSL 证书验证 (`verify=True`)，以确保数据传输的安全性！**\n- **❗ 健壮的错误处理:**  运用 `try-except` 结构捕获 `requests.exceptions.RequestException` 异常，妥善处理 API 请求失败的情况，并输出清晰的错误信息，方便问题排查。\n\n**2. 🐼 高效的数据处理与分析 (Driven by `pandas` 库):**\n\n- **📊 数据结构化:**  将 API 返回的原始 JSON 数据巧妙地转化为 Pandas DataFrames，构建起结构化数据，为后续的数据操作和分析奠定坚实基础。\n- **🧹 精细的数据清洗 \u0026 转换:**\n    - **⏱️ 时间戳转换:**  运用 `datetime.fromtimestamp` 函数，将原始时间戳数据转换为易于理解的日期时间格式。\n    - **🗺️ 字段名称映射:**  借助 `FIELD_MAPPING` 字典，将 API 返回的专业英文技术字段名，映射为用户友好的中文名称，提升可读性。\n    - **🔢 数据类型转换:**  根据数据特性，精确地将特定字段转换为合适的数值类型 (`float`, `int`)，为后续的数值计算铺平道路。\n    - **🏆 胜负结果解读:**  智能解析 API 返回的布尔值 `is_win`，将其转换为直观的 \"胜利\" 或 \"失败\" 文字，结果一目了然。\n    - **⏱️ 比赛时长计算:**  通过精妙的时间差计算，即 \"结束时间\" 减去 \"开始时间\"，精确获取比赛的持续时间，量化比赛时长。\n- **🔎 灵活的数据筛选 \u0026 过滤:**  `analysis_script.py` 脚本中，巧妙运用 Pandas 强大的条件筛选功能，根据用户指定的玩家昵称、时间范围、比赛场数等多元条件，精准过滤数据，聚焦分析目标。\n- **📈 深入的数据聚合 \u0026 统计:**  巧妙结合 `groupby` 和 `mean` 等 Pandas 核心函数，对数据进行分组聚合，计算玩家的关键平均统计数据，例如平均击杀数、平均死亡数等，量化玩家的整体表现。\n- **🔗 无缝数据合并:**  巧妙运用 `pd.merge` 函数，以 \"比赛ID\" 为桥梁，将玩家数据与比赛汇总数据进行高效合并，补充比赛开始时间等关键信息，构建完整的数据视图。\n\n**3. 📤 便捷的数据导出 (Powered by `pandas` 库):**\n\n- **📊 Excel 导出:**  借助 `pd.ExcelWriter`，将精心处理的 DataFrames 数据，以 sheet 页的形式导出到 Excel 文件 (`.xlsx`) 中，方便用户在熟悉的 Excel 环境中进行查阅和深入分析。\n- **📜 JSON 导出:**  运用 `df.to_json` 函数，将 DataFrame 数据导出为轻量级的 JSON 文件，`orient=\"records\"` 参数确保 JSON 数据以记录列表的形式存储，`force_ascii=False` 和 `indent=4` 参数则保证生成的中文 JSON 文件具有良好的可读性。\n\n**4. ⏰ 精确的时区处理 (`datetime` 库 \u0026 `timezone.utc`):**\n\n- 为了消除潜在的时区警告，在时间戳转换环节，明确指定 `timezone.utc`，确保时间转换的精准性和一致性，避免因时区差异导致的数据偏差。\n\n## 🛠️ 使用准备\n\n在开始使用本项目之前，请确保你的环境满足以下条件：\n\n1. **🐍 Python 版本:**  需要 **Python 3.6 或更高版本**。 建议使用最新稳定版 Python。\n2. **📦 Python 依赖库:**  安装以下必要的 Python 库：\n   - `requests`: 用于发送 HTTP 请求。 `pip install requests`\n   - `pandas`: 用于数据处理和分析。 `pip install pandas`\n   - `urllib3`:  `requests` 库的依赖，用于配置重试策略 (通常随 `requests` 安装)。 `pip install urllib3`\n   - `openpyxl`: 用于写入 Excel 文件 (Pandas 安装时通常会自动安装)。 `pip install openpyxl`\n\n3. **🔑 5EPlay API 密钥 (BEARER_TOKEN) \u0026 用户 UUID:**\n   - 你需要拥有一个 5EPlay 账号，并登录 [5EPlay 竞技平台](https://www.5eplay.com/)。\n   - **🔑 获取 BEARER_TOKEN:** 登录 5EPlay 网页后，按 **F12** 打开浏览器开发者工具，切换到 **\"Network\" (网络)** 面板。随便刷新页面，找到任意一个 API 请求 (例如获取比赛列表的请求)。查看该请求的 **\"Headers\" (请求头)**，找到 `Authorization: Bearer {YOUR_TOKEN}`，复制 `Bearer` 后面的 **Token 值**。\n   - **🆔 获取 UUID:**  在 5EPlay 个人主页的 **URL** 中，或者在 API 返回的 **用户信息** 中可以找到你的 UUID。\n   - 将获取到的 `BEARER_TOKEN` 和 `UUID` 填入 `main_script.py` 脚本的 **配置参数** 部分。\n\n## 🚀 快速上手指南\n\n**1. ⚙️ 配置 `main_script.py`:**\n\n   - 打开 `main_script.py` 文件。\n   - 找到 **配置参数** 部分，填入你的 `BEARER_TOKEN` 和 `UUID`。\n   - 可选：根据需要调整 `max_pages` (默认 3，限制抓取页数)、 `start_time` 和 `end_time` (时间戳格式，设置抓取比赛数据的时间范围)。\n\n**2. 🏃 运行 `main_script.py` (数据抓取):**\n\n   - 打开 **命令行** 或 **终端**，导航到脚本所在目录。\n   - 执行命令： `python main_script.py`\n   - 脚本开始从 5EPlay API 抓取数据，并将结果导出到 `csgo_report.xlsx` 文件。\n\n**3. 📊 运行 `analysis_script.py` (数据分析):**\n\n   - 确保已运行 `main_script.py` 并生成 `csgo_report.xlsx`。\n   - 在 **命令行** 或 **终端** 中，导航到脚本目录。\n   - 执行命令： `python analysis_script.py`\n   - 按照提示，输入要对比的玩家昵称 (逗号分隔)、时间范围、比赛场数、是否组队局等信息。\n   - 脚本将在终端展示分析结果，并询问是否导出详细数据到 `player_detailed_stats.xlsx`。\n\n**4. 🔄 运行 `excel_to_json.py` (Excel 转 JSON):**\n\n   - 确保已运行 `main_script.py` 并生成 `csgo_report.xlsx`。\n   - 在 **命令行** 或 **终端** 中，导航到脚本目录。\n   - 执行命令： `python excel_to_json.py`\n   - 脚本会将 `csgo_report.xlsx` 的 \"比赛汇总\" sheet 转换为 `csgo_report.json` 文件。\n\n## 📤 输出文件说明\n\n- **`csgo_report.xlsx`:**  核心数据报告 Excel 文件。\n    - **Sheet: 比赛汇总:**  包含所有抓取比赛的概览信息，例如：\n        - `比赛ID`: 比赛的唯一标识符。\n        - `地图`: 比赛地图名称。\n        - `胜负`: 比赛结果（胜利/失败）。\n        - `开始时间`, `结束时间`: 比赛开始和结束的时间戳（已转换为易读格式）。\n        - ... 以及其他比赛基本信息。\n    - **Sheet: 玩家数据:**  包含每场比赛中所有玩家的详细统计数据，例如：\n        - `比赛ID`: 关联的比赛 ID。\n        - `玩家_username`: 玩家昵称。\n        - `玩家_kill`, `玩家_death`: 玩家的击杀数和死亡数。\n        - `fight_RWS评分`, `fight_Rating`, `fight_ADR`: 玩家在比赛中的 RWS, Rating, ADR 等战斗数据。\n        - ... 以及其他玩家详细比赛数据。\n\n- **`player_detailed_stats.xlsx`:** (由 `analysis_script.py` 生成)  玩家详细统计 Excel 文件。\n    - 针对每个分析的玩家，生成独立的 Sheet 页：\n        - **Sheet: `{玩家昵称}_每场比赛数据`:**  列出该玩家筛选出的每场比赛的详细数据记录，方便逐场分析。\n        - **Sheet: `{玩家昵称}_平均数据`:**  展示该玩家在筛选出的所有比赛中的各项关键数据的平均值，用于评估玩家的整体水平。\n\n- **`csgo_report.json`:** (由 `excel_to_json.py` 生成)  比赛汇总 JSON 文件。\n    - 包含 `csgo_report.xlsx` 文件中 \"比赛汇总\" sheet 的 JSON 格式数据，方便程序化读取和使用。\n\n## ✨ 未来展望\n\n- **⚙️ 配置文件化:**  将 API 密钥、UUID、时间范围、页数等配置项移至独立的配置文件 (如 `.ini` 或 `.json`)，提升配置管理的便捷性。\n- **📈 更丰富的数据分析功能:**  在 `analysis_script.py` 中拓展更多高级数据分析功能，例如：\n    -  计算更全面的玩家指标：胜率、KD 比率、爆头率、KAST 等。\n    -  多维度数据分析：按地图、比赛模式、武器等维度进行数据分组和深度分析。\n    -  可视化报表生成：集成图表库 (如 `matplotlib`, `seaborn`, `plotly`)，生成直观的统计图表，辅助数据解读。\n- **🖥️ 图形用户界面 (GUI):**  为数据分析脚本开发友好的图形用户界面 (例如使用 `Tkinter`, `PyQt`, `wxPython` 等)，降低使用门槛，提升用户体验。\n- **💾 数据持久化:**  引入数据库 (如 SQLite, MySQL, PostgreSQL) 对抓取的数据进行持久化存储，实现数据的长期管理和高效检索，避免重复抓取。\n- **⏰ 自动化数据抓取:**  集成定时任务工具 (如 `cron` 或 Windows 任务计划程序)，实现定期自动运行 `main_script.py`，抓取最新的比赛数据，保持数据更新。\n- **📝 完善的日志记录:**  使用 `logging` 模块记录程序运行日志，包括错误、警告、信息等，方便问题追踪和程序维护。\n- **✅ 强化数据验证与清洗:**  在数据处理流程中，增加数据验证和清洗环节，处理异常值、缺失值等，提高数据质量和分析结果的可靠性。\n\n## ⚠️ 重要声明\n\n本项目仅为 **学习交流和个人使用** 而设计。请务必遵守 5EPlay 平台的服务条款和 API 使用协议。 **请勿滥用 API 接口，避免对平台服务器造成不必要的压力。**\n\n**🔒 API 密钥 (BEARER_TOKEN) 属于敏感信息，请务必妥善保管，切勿泄露！**\n\n**本项目不对因使用此工具可能产生的任何问题承担责任。**  请使用者自行承担所有风险。","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fobsidianplusplus%2F5e_play_cs-go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fobsidianplusplus%2F5e_play_cs-go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fobsidianplusplus%2F5e_play_cs-go/lists"}