[PYTHON] Ich möchte League of Legends-Daten erhalten ①

Ich möchte die Daten von League of Legends erhalten

Dies ist der erste Beitrag zum Gedenken.

Einführung

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)

Umgebung

Stand 29. Januar 2020 OS:windows10 Anaconda:4.8.1 python:3.7.6

Vorbereitungen

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.)

Daten bekommen

(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. image.png 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)

Untersuchen Sie den Inhalt der Daten

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

Schließlich

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

Ich möchte die Daten von League of Legends ③ erhalten
Ich möchte die Daten von League of Legends ② erhalten
Ich möchte League of Legends-Daten erhalten ①
Ich möchte eine WEB-Anwendung mit den Daten von League of Legends ① erstellen
Keras Ich möchte die Ausgabe einer beliebigen Ebene erhalten !!
Ich möchte benutzerdefinierte Datenattribute von HTML als Elemente mit Python Selenium erhalten
Ich möchte den Namen der ausgeführten Funktion / Methode erhalten
Wie auch immer, ich möchte JSON-Daten einfach überprüfen
Ich möchte 100 Datenwissenschaften mit Colaboratory schlagen
Ich habe versucht, CloudWatch-Daten mit Python abzurufen
Ich möchte das Erscheinungsbild von zabbix anpassen
Ich möchte den Pfad des Verzeichnisses abrufen, in dem die laufende Datei gespeichert ist.
Ich möchte den Transferstatus der 2020 J League visualisieren. Was soll ich tun?
Ich möchte Variablen / Funktionen / Klassen externer Dateien von Python abrufen / ausführen
Eine Bibliothek für Datenwissenschaft "Ich möchte das tun" auf dem Jupyter Notebook
Ich möchte Bilder von Katzen von Instagram erkennen
Ich möchte das Ausführungsergebnis von strace erfassen
Ich möchte ein Paket von Php Redis installieren
[Python] Ich habe versucht, Json von Tintenfischring 2 zu bekommen
Ich möchte sagen, dass es eine Datenvorverarbeitung gibt ~
Ich möchte die Sicherheit der SSH-Verbindung erhöhen
Ich möchte SUDOKU lösen
Ich möchte eine Python-Datenquelle in Re: Dash verwenden, um Abfrageergebnisse zu erhalten
Ich möchte Daten mit Python analysieren können (Teil 3)
Ich habe versucht, die Standortinformationen des Odakyu-Busses zu erhalten
Ich möchte eine andere Version von Python mit pyvenv angeben
Ich möchte Daten mit Python analysieren können (Teil 1)
[Python] Ich möchte einen gemeinsamen Satz zwischen numpy erhalten
Ich möchte viele Prozesse von Python aus starten
Ich möchte nur die SudachiPy-Normalisierungsverarbeitung verwenden
Ich möchte Daten mit Python analysieren können (Teil 4)
Ich möchte mit GAN Schwarzweißfotos von Erinnerungen ausmalen
Ich möchte Daten mit Python analysieren können (Teil 2)
Ich möchte die Authentizität eines Elements eines numpy-Arrays bestimmen
Ich möchte die Natur von Python und Pip kennenlernen
So erhalten Sie einen Überblick über Ihre Daten in Pandas
Ich habe versucht, mit pypyodbc schnell Daten von AS / 400 abzurufen
Ich habe die Daten von Raspberry Pi an GCP gesendet (kostenlos)
Ich möchte systemd grob verstehen
Ich möchte Bilder kratzen und trainieren
Ich möchte ○○ mit Pandas machen
Ich möchte Yolos Anmerkung kopieren
Ich möchte mit Python debuggen
[Pytorch] Ich möchte die Trainingsparameter des Modells manuell zuweisen
Ich habe versucht, mit Pandas eine Pferderenn-Datenbank zu erstellen
Ich habe versucht, den Index der Liste mithilfe der Aufzählungsfunktion abzurufen
Ich möchte die HTML-Version der OpenCV 3.1-Version "OpenCV-Python Tutorials" lesen
Ich möchte sowohl den Schlüssel als auch den Wert des Python-Iterators verwenden
Ich habe versucht, mit Boto3 eine Liste der AMI-Namen zu erhalten
Ich möchte japanische Bestandsdaten erfassen und auflisten, ohne sie zu kratzen
Ich möchte die Position meines Gesichts mit OpenCV überprüfen!
Python-Technik für diejenigen, die Anfänger loswerden wollen
Ich möchte die Bevölkerung jedes Landes der Welt kennenlernen.
[Python] Ich habe versucht, mithilfe der YouTube-Daten-API verschiedene Informationen abzurufen!
Ich möchte vertikal gehaltene Daten (langer Typ) in horizontal gehaltene Daten (breiter Typ) konvertieren.
Ich habe versucht, mit pypyodbc Preparation 1 schnell Daten von AS / 400 abzurufen
Ich möchte Spyder an die Taskleiste anheften
Ich möchte wütend auf meine Mutter werden, wenn die Erinnerung knapp ist
Ich möchte Objekte mit OpenCV erkennen