Die weiteren Teile dieser Mini-Serie findest du hier: Teil #1 - Einleitung und Authentifizierung Teil #2 - Architektur eines Twitch Client Teil #4 - AccessToken erstellen Teil #5 - Schreiben per TwitchAPI - Follow Channel Client
Links zu den im Video genannten Seiten und Ressourcen findest du am Ende dieses Artikels.
Nach der ganzen Theorie geht es nun endlich in die Praxis. Als ersten Schritt zeige ich dir wie du lesend die TwitchAPI nutzt um Daten über Benutzer, Kanäle, Videos usw. abrufen kannst. Damit kannst du beispielsweise Statistiken erstellen.
In diesem Video erfährst du, wie du:
- die TwitchLib in ein Konsolenprojekt bekommst,
- die Client-Id an der TwitchAPI (
TwitchAPI.SetClientId
) setzt um im nächsten Schritt Daten abzufragen und - Informationen über einen Twitch-Benutzer mit
TwitchAPI.GetUser
bekommst.
Die TwitchAPI und async / await
Die wichtigsten Punkte zur TwitchAPI habe ich dir bereits in Architektur eines Twitch Client erläutert. Hier geht es mir nun mehr um die Syntax.
Wie du im Quellcode zur Klasse TwitchAPI
sehen kannst, handelt es sich um eine statische Klasse. Das bedeutet du brauchst kein Objekt von dieser Klasse sondern nimmst einfach den Klassennamen und kannst damit alle zur Verfügung gestellten Methoden aufrufen. Das macht in diesem Kontext auch Sinn, weil es keinen Zustand gibt, der in einem Objekt zwischen verschiedenen Methodenaufrufen gespeichert werden müsst.
Wenn du eine Methode wie beispielsweise TwitchAPI.GetUser()
ausführst, dann macht die TwitchAPI nichts anderes als dem Twitch-Server eine Nachricht (per HTTP) zu schicken und auf eine entsprechende Antwort zu warten. Sobald der Server die Antwort gesendet hat, wird diese in ein Objekt einer entsprechenden C#-Klasse (z.B. User
- hier der Quellcode dieser Klasse) extrahiert und an dein Programm zurück gegeben. Damit ist die Aufgabe erledigt. Da alle Methoden in der TwitchAPI als asynchron definiert sind, reicht ein Methodenaufruf aus, um den Vorgang komplett abzuarbeiten und alle relevanten Resultate zurück zugeben. Die nächste Anfrage beim Twitch-Server ist dann komplett unabhängig und somit ist es gut und richtig, dass die Klasse TwitchAPI
komplett static
ist.
Was aber nun bedeutet dieses async
? Mit den Schlüsselwörtern async
und await
wird eine Technologie in .NET verwendet die sich Task Parallel Library (TPL) nennt. Die Idee ist, dass du Aufgaben die eine gewisse Zeit dauern in den Hintergrund auslagerst. Somit ist es möglich, dass der Benutzer Eingaben macht und Ausgaben sieht während “nebenbei” andere Aufgaben ablaufen. In unserem Fall ist das die Interaktion mit dem Twitch-Server. Das ganze nennt sich asynchrone Programmierung und ist insbesondere bei Anwendungen mit grafischer Oberfläche oder “rechenintensiven” Anwendungen wichtig. Für unsere Konsolenanwendung ist das nun nicht unbedingt wichtig, weil wir ein paar Sekunden warten könnten bis die TwitchAPI alle Daten gesammelt und extrahiert hat. Da jedoch alle Methoden in der Klasse TwitchAPI
als async
definiert sind, haben wir hier keine andere Möglichkeit als die Methoden asychron aufzurufen.
Was bei der Verwendung von async
und await
passiert, habe ich im Artikel Einführung in Async / Await bereits erklärt. Wenn du die TwitchAPI in deinem Projekt verwenden willst, dann solltest du folgende Punkte berücksichtigen:
- Alle Methoden der
TwitchAPI
(mit Ausnahme vonSetClientId()
) müssen mitawait
aufgerufen werden. - Das Schlüsselwort
await
kann nur in einer Methode verwendet werden die selber als asynchron definiert ist und den RückgabewertTask
verwendet. - Du definierst eine Methode als asynchron in dem du das Schlüsselwort
async
vor dem Rückgabewert im Methodenkopf verwendest. - Im
Main
eines Konsolenprojekts kannst du nichtawait
verwenden. Du musst eine eigene Methode definieren (egal ob diesestatic
ist oder nicht). - In einem Projekt mit Grafischeroberfläche kannst du
async
in EventHandlern verwenden. Somit kannst du Methoden vonTwitchAPI
aufrufen, wenn beispielsweise ein Button gedrückt wird.
Du kennst static nicht, oder weißt nicht wie du Methoden definierst?
Hier geht's zum Online-Kurs "Einstieg in C#" >>In wenigen Schritten die passenden Daten bekommen
Nachdem wir uns nun mit den Grundlagen vertraut gemacht haben, geht das eigentliche holen der entsprechenden Daten sehr einfach. Ich habe dir im folgenden die wichtigsten Schritte nochmals aufgeschrieben:
TwitchAPI.SetClientId
aufrufen, oder sicherstellen, dass es bereits aufgerufen wurde.- Herausfinden welche Methode der
TwitchAPI
die von dir gewünschten Daten liefert. Dieser Überblick sollte dir eine erste Idee liefern. Machmal ist es auch notwendig, dass du mehrere Methoden aufrufst um alle gewünschten Informationen zu bekommen. - Erstelle eine statische und asychrone Methode in der du die entsprechende Methode der
TwitchAPI
mitawait
aufrufst und dir erstmal die für dich relevanten Werte der Antwort auf der Konsole ausgibst. Du siehst du genau was zurück kommt und du kannst dir Überlegen wie du die Daten weiterverarbeiten möchtest.
Nun kommt es auf deine Anwendung an. Möchtest du die Daten einfach nur ausgeben, dann bist du ja bereits fertig. Vielleicht möchtest du die Daten aber auch sammeln. Dann kannst du das erhaltene Objekt mit der Antwort einfach in einer Kollektion speichern. Eine weitere Möglichkeit ist, dass du die Daten in eine Datei schreibst. Diese könntest du dann beispielsweise mit Excel einlesen und darin weiterverarbeiten. Das schreiben von Daten in eine Textdatei habe ich im C# Tutorial Deutsch - Dateien lesen und schreiben mit File beschrieben.
Weitere Links
- Wenn du nicht weißt, wie du mit NuGet die TwitchLib in dein Projekt bekommst, dann habe ich das in dieser Episode des C# Tutorials Deutsch für dich erklärt.
- Das GitHub Projekt beinhaltet den kompletten Quellcode von mir zu diesem Client (inkl. weiterer Beispiele die ich nicht im Video gezeigt habe).
- Weitere Infos zu
async
undawait
gibt es im Artikel Einführung in Async / Await - Auf Twitch Developers findest du viele Informationen über Daten die der Twitch-Server zurück liefert. Darunter auch beispielsweise eine genau Beschreibung der Benutzerdaten. Diese Beschreibung sind häufig etwas umfangreicher als die Dokumentation der TwitchLib. Allerdings geht es dort immer um HTTP und nicht C#.
- C# Tutorial Deutsch - Dateien lesen und schreiben mit File beschreibt wie du Daten in eine Textdatei schreiben kannst.
Viel Erfolg beim Erstellen deines Clients
Jan