[閒聊] 查詢比賽資料的方法分享

作者: 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