Dies ist der erste Beitrag zum Gedenken.
In diesem Artikel wollte ich die Daten von "League of Legends" (im Folgenden: LOL), dem Spiel, von dem ich abhängig bin, abrufen und die Gewinnrate und die Champions, in denen ich gut bin, numerisch ausdrücken. (Nun, Websites wie OPGG und YOURGG existieren bereits, aber meine eigenen Zum Lernen)
Stand 29. Januar 2020 OS:windows10 Anaconda:4.8.1 python:3.7.6
Da die API beim Sammeln von LOL-Daten offiziell bereitgestellt wird, werden wir sie dieses Mal verwenden. Geben Sie dazu den folgenden Befehl ein, um *** riotwather *** zu installieren.
python -m pip install riotwatcher
Da Sie den API-SCHLÜSSEL erhalten müssen, melden Sie sich von hier an und merken Sie sich den ENTWICKLUNGS-API-SCHLÜSSEL. (Dieser API-SCHLÜSSEL muss aktualisiert und neu geschrieben werden, wenn er aufgrund des Ablaufdatums von 1 Tag unbrauchbar wird.)
(https://qiita.com/hyo_07/items/f106efbde82aeb47c8a0) Ich habe auf diesen Artikel verwiesen.
sample_1.py
from riotwatcher import RiotWatcher
API_KEY="{API KEY früher erworben}"
wather = RiotWatcher(API_KEY)
region = "jp1" #Serverauswahl: Japan Saba ist jp1
name = "Macha-Kun" #Geben Sie den Namen des Beschwörers ein
summoner = watcher.summoner.by_name(region,name) #Erfassung von Spielerdaten
print(summoner)
Wenn dies ausgeführt wird, kann der Inhalt des Beschwörertyp-Beschwörers ausgegeben werden. Tatsächlich lautet der Inhalt ["id": str, "accountId": str, "puuid": str, "fileIconId": int, "revisionDate": int, "summonerLevel": int].
sample_1.py
recentmatchlists = watcher.match.matchlist_by_account(region,summoner["accountId"]) #Holen Sie sich eine Liste der Daten für die letzten 20 Spiele
matches = recentmatchlists["matches"]
match_data = watcher.match.by_id(region,matches[0]["gameId"]) #Extrahieren Sie nur eine Übereinstimmung
print(match_data)
Fügen Sie diese dem vorherigen Code hinzu und geben Sie die Daten für ein Spiel aus. Wie Sie daran sehen können, gibt es selbst in einem Spiel eine große Datenmenge. (Ich konnte nicht drücken, weil es nicht auf den Bildschirm passte)
Schauen wir uns den Inhalt von ** match_data ** einzeln an.
Die Daten, die ich dieses Mal möchte, sind die Anzahl der Siege und Verluste, die Anzahl der Kills, die Anzahl der Todesfälle, die Anzahl der Assists, die Kill-Beteiligungsrate, der verwendete Champion, der Champion, der gespielt hat, die Lane, CS, das verdiente Gold, der dem Champion zugefügte Schaden, die Zeit des Spiels. Gehen. Der Spielmodus wird auf Rang eingegrenzt.
Lassen Sie uns den Artikel finden, der gerade aus der vorherigen Ausgabe erwähnt wurde. (Es ist schwer mit vielen Buchstaben zu finden: D) Match_data ist übrigens ein Diktattyp.
Objektname | Schimmel | Daten Beschreibung |
---|---|---|
gameId | int | Spielidentifikationsnummer |
platformId | str | Serverstandort |
gameCreation | int | Zeitstempel, wenn der Ladebildschirm angezeigt wird |
gameDuration | int | Spielzeit |
queueId | int | 420=Rang 430=Normal, 450=ARAM |
mapId | int | |
seasonId | int | 13=Season10 |
gameVersion | str | Spielversion |
gameMode | str | ARAM oder CLASSIC |
gameType | str | |
teams | list | Details unten |
participants | list | Details unten |
participantIdentities | list | Details unten |
Es sieht wie oben aus, wenn es grob geteilt ist. Zu diesem Zeitpunkt sind die gewünschten Informationen jedoch nur für ** gameDuration ** und ** gameMode ** klar. ** temas **, ** teilnehmer ** und ** partielle identitäten ** sind vom * listentyp *, daher müssen sie genauer hinsehen.
Schauen wir uns also nacheinander den Inhalt von ** Teams ** an.
match_data["teams"][0] #Team 1
match_data["teams"][1] #Team 2
Objektname | Schimmel | Daten Beschreibung |
---|---|---|
teamId | int | 100=Blaues Team,200=Rotes Team |
win | str | "Win" or "Fail" |
firstBlood | bool | Stimmt, wenn Sie das erste Blut nehmen |
firstTower | bool | Richtig, wenn Sie den ersten Turm nehmen |
firstInhibitor | boo | Richtig, wenn Sie den ersten Inhibitor einnehmen |
firstBaron | bool | Richtig, wenn Sie den ersten Baron nehmen |
firstDragon | bool | Stimmt, wenn du den ersten Drachen nimmst |
firstRiftHerald | bool | Richtig, wenn Sie den Herold des ersten Lifts nehmen |
towerKills | int | Anzahl der kaputten Türme |
inhibitorKills | int | Anzahl der defekten Inhibitoren |
baronKills | int | Häufigkeit, mit der Baron besiegt wurde |
dragonKills | int | Häufigkeit, mit der der Drache besiegt wurde |
vilemawKills | int | Ist es wie ein verdrehter Baumlinien-begrenzter Charakter? Anzahl der besiegten Male |
riftHeraldKills | int | Wie oft hast du Lift Herald besiegt? |
dominionVictoryScore | int | |
bans | list | Details unten |
** Bans ** ist ein * Listentyp *, also lasst uns tiefer gehen.
match_data["teams"][0]["bans"] #Team 1 BAN
match_data["teams"][1]["bans"] #Team 2 BAN
Objektname | Schimmel | Daten Beschreibung |
---|---|---|
championId | int | Champion Nummer |
pickTurn | int | Reihenfolge |
Schauen wir uns nun ** Teilnehmer ** an.
match_data["participants"][0] #Nehmen Sie Daten für eine Person
Objektname | ||
---|---|---|
participantsId | int | 1~ |
teamId | int | 100== |
championId | int | |
spell1Id | int | Datenbeschreibung 10 Spieler-Identifikationsnummern Blaues Team, 200 Rote Team-Champion-Identifikationsnummern Beschwörer Zauber 1 |
spell2Id | int | Beschwörerzauber 2 |
stats | dict | Details unten |
timeline | dict | Details unten |
Es gibt ** Statistiken ** und ** Zeitachse ** vom Typ * Dikt *. Überprüfen Sie die Details anhand des Beispiels.
match_data["participants"][0]["stats"] #Ausgabestatistiken für eine Person
Objektname | Schimmel | Daten Beschreibung |
---|---|---|
participantId | int | 1~Identifikationsnummer von 10 Spielern |
win | bool | Richtig, wenn Sie gewinnen |
item0 | int | Artikelidentifikationsnummer |
item1 | int | Artikelidentifikationsnummer |
item2 | int | Artikelidentifikationsnummer |
item3 | int | Artikelidentifikationsnummer |
item4 | int | Artikelidentifikationsnummer |
item5 | int | Artikelidentifikationsnummer |
item6 | int | Artikelidentifikationsnummer |
kills | int | Anzahl der Kills |
deaths | int | Anzahl der Todesfälle |
assists | int | Anzahl der Vorlagen |
largestKillingSpree | int | Maximaler Amoklauf |
largestMultiKill | int | Maximaler Multi-Kill |
killingSprees | int | Anzahl der Amokläufe |
longestTimeSpentLiving | int | |
doubleKills | int | Anzahl der Doppelkills |
tripleKills | int | Anzahl der Triple Kills |
quadraKills | int | Anzahl der Quadrakills |
pentaKills | int | Anzahl der Pentakills |
unrealKills | int | |
totalDamageDealt | int | Summe aller Schäden |
magicDamageDealt | int | Totaler magischer Schaden |
physicalDamageDealt | int | Totaler physischer Schaden |
trueDamageDealt | int | Insgesamt bestätigter Schaden |
largestCriticalStrike | int | |
magicDamageDealtToChampions | int | Totaler magischer Schaden für den Champion |
physicalDamageDealtToChampions | int | Totaler physischer Schaden des Champions |
trueDamageDealtToChampions | int | Insgesamt bestätigter Schaden für den Champion |
totalHeal | int | Gesamtbetrag der Wiederherstellung |
totalUnitsHealed | int | |
damageSelfMitigated | int | |
damageDealtToObjectives | int | Beschädigung von Gegenständen |
damageDealtToTurrets | int | Schäden am Turm |
visionScore | int | Sichtbarkeitsbewertung |
timeCCingOthers | int | Anzahl der Hindernisse |
totalDamageTaken | int | Gesamtschaden erhalten |
magicalDamageTaken | int | Insgesamt erhaltener magischer Schaden |
physicalDamageTaken | int | Insgesamt erhaltener physischer Schaden |
trueDamageTaken | int | Insgesamt bestätigter Schaden erhalten |
goldEarned | int | Gold verdienen |
goldSpent | int | |
turretKills | int | Anzahl der zerstörten Türme |
inhibitorKills | int | Anzahl der kaputten Inhibitoren |
totalMinionsKilled | int | Anzahl besiegter Einheiten |
neutralMinionsKilled | int | |
neutralMinionsKilledEnemyJungle | int | |
totalTimeCrowdControlDealt | int | |
champLevel | int | Champion Level |
visionWardsBoughtInGame | int | |
sightWardsBoughtInGame | int | |
wardsPlaced | int | Anzahl der platzierten Wörter |
wardsKilled | int | Anzahl der gebrochenen Wörter |
firstBloodKill | bool | Stimmt, wenn Sie das erste Blut nehmen |
firstBloodAssist | bool | Richtig mit First Blood Assist |
firstTowerKill | bool | Richtig, wenn Sie den ersten Turm nehmen |
firstTowerAssist | bool | Richtig, wenn Sie die Unterstützung des ersten Turms erhalten |
combatPlayerScore | int | |
objectivePlayerScore | int | |
totalPlayerScore | int | |
totalScoreRank | int | |
playerScore0 | int | |
playerScore1 | int | |
playerScore2 | int | |
playerScore3 | int | |
playerScore4 | int | |
playerScore5 | int | |
playerScore6 | int | |
playerScore7 | int | |
playerScore8 | int | |
playerScore9 | int | |
perk0 | int | |
perk0Var1 | int | |
perk0Var2 | int | |
perk0Var3 | int | |
perk1 | int | |
perk1Var1 | int | |
perk1Var2 | int | |
perk1Var3 | int | |
perk2 | int | |
perk2Var1 | int | |
perk2Var2 | int | |
perk2Var3 | int | |
perk3 | int | |
perk3Var1 | int | |
perk3Var2 | int | |
perk3Var3 | int | |
perk4 | int | |
perk4Var1 | int | |
perk4Var2 | int | |
perk4Var3 | int | |
perk5 | int | |
perk5Var1 | int | |
perk5Var2 | int | |
perk5Var3 | int | |
perkPrimaryStyle | int | |
perkSubStyle | int | |
statPerk0 | int | |
statPerk1 | int | |
statPerk2 | int |
Die Menge ist erstaunlich und ich habe keine Ahnung, was die Daten von der Mitte darstellen.
Lassen Sie uns einen zweiten Blick darauf werfen und die ** Zeitleiste ** auf die gleiche Weise betrachten.
match_data["participants"][0]["timeline"] #
Objektname | Schimmel | Daten Beschreibung |
---|---|---|
participantsId | int | 1~Identifikationsnummer von 10 Spielern |
creepsPerMinDeltas | dict | 1 Minute CS |
xpPerMinDeltas | dict | 1 Minute Erfahrungswert |
goldPerMinDeltas | dict | 1 Minute verdientes Gold |
csDiffPerMinDeltas | dict | |
xpDiffPerMinDeltas | dict | |
damageTakenPerMinDeltas | dict | Schaden in 1 Minute erhalten |
damageTakenDiffPerMinDeltas | dict | |
role | str | SOLO,DUO_SUPPORT,DUO_CARRY,NONE |
lane | str | TOP,JUNGLE,MIDDLE,Einer von UNTEN |
Wenn es sich um einen * Diktat-Typ * handelt, werden Daten in Intervallen von 10 Minuten wie * "0-10" * und * "10-20" * in * Float-Typ * gespeichert.
Lassen Sie uns abschließend ** Teilidentitäten ** untersuchen.
match_data["participantIdentities"][0] #
Objektname | Schimmel | Daten Beschreibung |
---|---|---|
participantId | int | 1~Identifikationsnummer von 10 Spielern |
player | dict | Details unten |
Überprüfen Sie den Inhalt von ** player **.
match_data["participantIdentities"][0]["player"] #Spielerinformationen für einen Spieler
Objektname | Schimmel | Daten Beschreibung |
---|---|---|
platformId | str | Der Speicherort des Servers, auf dem Sie das Konto zum ersten Mal erstellt haben |
accountId | str | Konto-ID |
summonerName | str | Name des Beschwörers |
summonerId | str | Beschwörer-ID |
currentPlatformId | str | Aktueller Serverstandort |
currentAccountId | str | Girokonto-ID |
matchHistoryUri | str | Kampfrekord Geschichte URI |
profileIcon | int | Symbol Identifikationsnummer |
Es erfordert viel Geduld, diese Datenmenge einzeln zu überprüfen. Der Ort, an dem die Erklärung der Daten leer ist, ist diesmal nicht erforderlich. Ich möchte es eines Tages füllen: D.
Als nächstes möchte ich mit der Analyse dieser extrahierten Daten beginnen.
Recommended Posts