[闲聊] 查询比赛资料的方法分享

楼主: danny901203 (Danny)   2022-08-15 03:57:32
看了前几篇 LCK 的数据图,本来在 PCS 第四周的时候要完成,
不过最后还是太懒了加上有一场的纪录缺失 (刚刚发现补上了),所以就没弄了。
这里来分享几个可以找到职业比赛完整数据的方法。
1. Oracle's Elixir https://oracleselixir.com/
2. gol.gg https://gol.gg/esports/home/
这两个应该是大家比较常用的网站,所以就不多作介绍了。
优点是都帮大家整理好了,
缺点是有时候会少几场资料,或者无法看到自己想看的数据。
接下来分享一个可以用 Leaguepedia 提供的 api 查看完整的数据和游戏资料:
1. 进入到你想查询的联赛页面
eg. 2022 PCS Summer
→ https://lol.fandom.com/wiki/PCS/2022_Season/Summer_Season
eg. 2022 LCK Summer
→ https://lol.fandom.com/wiki/LCK/2022_Season/Summer_Season
2. 查询每一场的 RiotPlatformGameId (RPGID)
eg. 2022 PCS Summer
→ https://lol.fandom.com/wiki/Data:PCS/2022_Season/Summer_Season
eg. 2022 LCK Summer
→ https://lol.fandom.com/wiki/Data:LCK/2022_Season/Summer_Season
就是在原本网址 /wiki/ 后方加上 Data: 就可以了。
3. 有了每一场的 RPGID 后,就可以看到 Riot 有纪录的结算数据和每分钟发生什么事。
3-1. 查看结算数据 eg. 2022 PCS Summer / W1D1 / PSG vs CFO
在步骤二可以知道这一场的 RPGID 是 ESPORTSTMNT03_2820005
透过这个网址 https://lol.fandom.com/wiki/V5_data:ESPORTSTMNT03_2820005
就可以知道原始数据了,如果想看别场就把 V5_data: 后面的 RPGID 换掉。
在 participants 里面有 10 位选手的结算数据,数据名称是按照字典序排列的
像是第一个就是 assists (助攻) 接续下去
然后 challenges 那一大格里面有 111 的小格就是挑战系统,可以自己对照
https://bit.ly/3zVBY05 ← Reddit上有人整理的清单
提供几个比较常用的数据:
1. damagePerMinute (DPM)
2. goldPerMinute (GPM)
3. kda
4. killParticipation (KP%) 这项有时候会错,自己要验证看看
5. soloKills
6. teamDamagePercentage (输出占比)
7. visionScorePerMinute (每分钟视野分数)
8. doubleKills / tripleKills / quadraKills / pentaKills
9. FB% (首杀率) = (firstBloodAssist + firstBloodKill) / 场次
10. goldEarned (经济)
11. totalDamageDealtToChampions (对英雄造成的伤害)
12. CS = neutralMinionsKilled (野怪) + totalMinionsKilled (小兵)
13. DPG = totalDamageDealtToChampions / goldEarned
3-2. 查看游戏每一分钟发生什么事 (可用来计算 GD15、CSD15、XPD15)
eg. 2022 PCS Summer / W1D1 / PSG vs CFO
这时候只要在 3-1 的网址后方加上 /Timeline 就可以了
→ https://lol.fandom.com/wiki/V5_data:ESPORTSTMNT03_2820005/Timeline
因为 PCS 比较常用14分钟的对位差,所以就用14分钟来举例:
首先要先找到 14分钟 在哪里?
在 frames → participantFrames 的时间是切成每一分钟,也就是 60秒,
这里显示的单位是 毫秒,所以是 60000ms 一个间隔。
14分钟就是 840XXX (XXX可以算误差值,不用管),
就可以 Ctrl+F 搜寻 timestamp 是 840开头 的字段,
像这一场记录到的时间就是 840174。
然后那一大格子会有 10小格 (编号 1~10) (1~5就是蓝方) (6~10就是红方)
要注意的是10号格子在1号格子下面,因为也是按照字典序排列。
对位就是以下格子的数值相减,两边呈现相反数
1 ↔ 6 / 2 ↔ 7 / 3 ↔ 8 / 4 ↔ 9 / 5 ↔ 10
GD 看 totalGold
CSD 看 jungleMinionsKilled + minionsKilled
XPD 看 xp
https://i.imgur.com/hnjxNT8.png
如果要看10或15分钟的对位差距也是以此类推,
搜寻你要的 timestamp 就可以了。
以上就是简单的查询方法提供给大家参考,
有时候 RPGID 不一定会有,像是一开始提到缺的那场就是 第一周 DWT vs MFT。(已补上)
gol.gg 就没有那一场的数据 https://gol.gg/game/stats/41516/page-fullstats/
(进阶) 接下来再提供想要透过程式来整理数据的方法:
虽然网页查询很方便,但是就比较慢,而且有时候可能会看错,
这时候就可以透过一些简单的程式。
其实 3-1 和 3-2 的原始资料都是可以透过 api 网址拿到回传的 json 格式。
1. 将 RPGID 进行 URL编码
eg. V5_data:ESPORTSTMNT03_2820005 → V5_data%3AESPORTSTMNT03_2820005
(把 冒号: 换成 %3A)
2. 把黄色 RPGID 的地方换成 URL编码 过的格式
https://lol.fandom.com/api.php?action=query&
format=json&prop=revisions&titles=RPGID&rvprop=content&rvslots=main
(原始网址太长,使用时请自行接回)
缩网址 → https://bit.ly/3Pt6Lai (3-1的资料)
(浏览器可以直接点开,如果格式跑掉可以装扩充 JSONVue 等工具)
如果要看时间轴的资料,也是替换 RPGID 就好了
https://lol.fandom.com/api.php?action=query&format=json&
prop=revisions&titles=RPGID%2FTimeline&rvprop=content&rvslots=main
(原始网址太长,使用时请自行接回)
缩网址 → https://bit.ly/3QsHfTW (3-2的资料)
(浏览器可以直接点开,如果格式跑掉可以装扩充 JSONVue 等工具)
3. 这时候就看你要用什么程式语言比较方便去接 api 然后解析 json 格式的资料
以上方法分享给大家。
实作可以参考的连结
https://lol.fandom.com/wiki/Help:Leaguepedia_API
https://lol.fandom.com/wiki/Help:ACS_archive_%26_post-game_JSONs

Links booklink

Contact Us: admin [ a t ] ucptt.com