Twitch.tv Stream-Erkennung

    • GM 8

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Twitch.tv Stream-Erkennung

      Willkommen bei meinem Tutorial über Twitch.tv-Anbindung!
      Wir werden nun mithilfe von Bl@ckSp@rks DLL ein Programm schreiben, das mithilfe der Twitch API überprüft, ob ein Stream online ist und den Titel davon anzeigt, den man auf der eigenen Kanalseite einstellen kann. Ihr könnt auch gerne damit verschiedene andere Infos auslesen, wie z.B. das Programm, das zum Streamen verwendet wird uvm.!

      Und was bringt das mir und den Spielern?
      Unter anderem könnt ihr natürlich mehr Zuschauer für euren Stream gewinnen. So könnt ihr am Release-Tag einer neuen Version diese mit einem Stream feiern, oder ihr veranstaltet für euer Online-Spiel ein kleines Turnier, über dieses jeder direkt im Spiel informiert wird. Dafür müsst ihr nur auf TTV online gehen, alles andere funktioniert automatisch! Eure Spieler müssen dann nicht einmal noch selbst nachsehen, ob ihr gerade streamt und werden leichter darauf aufmerksam.
      Ich empfehle, nur einen kleinen Hinweis im Hauptmenü einzublenden, sonst werden manche von diesem Feature eher genervt als begeistert sein. Die show_message Nachrichten habe ich nur zu Vereinfachung verwendet.

      Damit ihr alles verstehen könnt, solltet ihr wissen, wie man die HTTP DLL benutzt und die String-Funktionen kennen, da wir mit diesen arbeiten werden. Also, los gehts... noch nicht ganz ;(

      Zuerst brauchen wir leider noch etwas Theorie, um zu verstehen, wie die Twitch-API arbeitet:
      Wir senden unsere Anfragen an api.justin.tv/api/stream/list.json. Dahinter hängen wir noch ?channel=[kanalname in kleinbuchstaben] als Parameter an, also z.B.
      api.justin.tv/api/stream/list.json?channel=meinkanal, probiert es gerne in eurem Browser aus.

      Ist unser Stream offline, kommt nur "[]" zurück. Ist er aber online, kriegen wir eine langen, scheinbar undefinierbaren Wörterbrei. Dabei handelt es sich aber eigentlich um eine eine Tabelle in Textform im JSON-Format, voller Daten, die wir mit dem GM verarbeiten können!

      So, jetzt aber wirklich...
      Wir brauchen nur 1 Objekt: Im Create-Event erstellen wir eine HTTP-Anfrage und schicken sie an den TTV-Server:

      GML-Quellcode

      1. req = http_request_create()
      2. http_request_set_url(req, "http://api.justin.tv/api/stream/list.json?channel=meinkanal")
      3. //Füge statt meinkanal deinen eigenen Kanalnamen in Kleinbuchstaben (!) ein
      4. http_request_perform(req)



      Im Step überprüfen wir, ob der Download fertig und erfolgreich ist, ansonsten brechen wir ab:

      GML-Quellcode

      1. if !http_request_get_performing(req) { //Download beendet
      2. if !http_request_get_successful(req) { //Download gescheitert
      3. show_message("Keine Internetverbindung.")
      4. game_end()
      5. }

      Hat alles geklappt, speichern wir die Antwort von Twitch in data. Wir bereits erwähnt, bedeuten die Klammern, dass der Stream offline ist. Ist der Stream online, bauen wir uns schrittweise den Titel zusammen:

      GML-Quellcode

      1. else {
      2. data = http_request_get_buffer(req) //Holt unsere Daten aus dem Speicher
      3. if(data != "[]") { //Unsere erhaltene Tabelle ist nicht leer
      4. show_message("Stream online!")
      5. var pos, title, next_char;
      6. title = "" //Stream-Titel
      7. pos = string_pos('"title":', data) + 9
      8. /***************************************************
      9. Eine "Zeile" einer Json-Tabelle ist folgendermaßen aufgebaut:
      10. "title":"Test",
      11. Wir suchen also nach dem String "title":, der 9 Zeichen lang ist,
      12. da sich dahinter unser Stream-Titel befindet! Der Titel endet
      13. mit einem Anführungszeichen, also fügen wir unserer Variable
      14. title so lange ein Zeichen hinzu, bis der Titel zu Ende ist.
      15. ***************************************************/
      16. next_char = string_char_at(data, pos)
      17. while(next_char != '"') { //Solange das nächste Zeichen kein Anführungszeichen ist
      18. title += next_char
      19. pos += 1
      20. next_char = string_char_at(data, pos)
      21. }
      22. show_message("Titel: " + title)
      23. execute_shell("http://www.twitch.tv/meinkanal", "") //Twitch im Standardbrowser öffnen
      24. }
      25. else { //Unsere Tabelle ist leer, der Stream ist also offline.
      26. show_message("Stream offline bzw. Kanalname nicht vorhanden")
      27. }
      28. }
      29. http_request_destroy(req)
      30. game_end()
      31. }
      Alles anzeigen

      Gut, das war's auch schon! Danke fürs durchlesen, ich hoffe, ihr könnt damit etwas anfangen und habt auch etwas Spaß damit. Für Fragen stehe ich gerne bereit ;)

      EDIT: Fehler behoben; Twitch wird nun im Standardbrowser geöffnet, wenn der Stream läuft!
      Dateien
      • Tutorial.gmk

        (10,02 kB, 346 mal heruntergeladen, zuletzt: )

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von SkaillZ ()