Die Rocket Beans API

Kleiner Hinweis: Der API-Endpunkt https://api.rocketbeans.tv/v1/streamcount gibt momentan falsche Werte für YT aus. Auf YT schauen derzeit rund 13.000 Zuschauer, der Endpunkt gibt nur 2.300 an.

Liegt vermutlich daran, dass der extra Multicam-Stream nicht abgefasst wird und ist Euch vermutlich auch bewusst, aber wollt’s dennoch erwähnen. Vielleicht lässt sich das ja in Zukunft irgendwie abfangen. :v:

3 „Gefällt mir“

Lag am Multicam stream und der Art und Weise wie wir die Daten von der Google API / Youtube API ziehen…

Die Google Api hat sich leider Live anders verhalten als wir vorher vermutet haben - und für einen Hotpatch während der Show war es nicht wichtig genug :slight_smile:

3 „Gefällt mir“

Wird es über die API irgendwann auch mal möglich sein an Interaktionen wie zum Beispiel Umfragen / Abstimmungen teilzunehmen? Ich wäre eventuell daran interessiert eine Android TV App zu erstellen, dass dann als Feature zu haben wäre schon ganz nett.

5 „Gefällt mir“

Ich habe auf GitHub mal ein Issue hinterlassen. Aber ich weiß nicht, ob ihr da überhaupt aktiv hinguckt, deswegen wollte ich hier nochmal Bescheid sagen. Ich glaube, es gab API-Änderungen, die noch nicht in der Doku erfasst sind.

3 „Gefällt mir“

Moin zusammen,

wir konnten etwas Zeit freischaufeln und unsere API Dokumentation auf den aktuellsten Stand bringen → https://github.com/rocketbeans/rbtv-apidoc

Viel Spaß damit und lasst uns wissen, sollten sich Fehler eingeschlichen haben :slight_smile:

Grüße,
Ben

7 „Gefällt mir“

Moin @BenPlem :slight_smile: ,

ich wollte fragen, ob es bei euch schon mal Überlegungen gab auf eurem API Server einen Websocket zu integrieren für aktuelle Votes / Fragen an den Chat in Live-Events. So könnten Leute aus der Community z.B. ihre Apps mit Voting-Systemen erweitern oder dedizierte Voting-Systeme implementieren, wodurch Zuschauer nicht mehr einen Command per Freitext eingeben müssen (es sei denn es handelt sich um eine Freitext Frage :slight_smile: ).

Das würde vor allem Leuten helfen, die ein Live-Event über AirPlay oder Chromecast sehen, da man hier in vielen Voting Fällen auf dem Handy nur noch einen Button drücken müsste. Ebenfalls bekommt ihr auf eurer Seite viel homogenere Daten, was dann im Endeffekt weniger fehleranfällig und dadurch zu präziseren Umfrageergebnissen führen würde. Wenn man sich zusammen trifft und ein Live-Event schaut hätte das meiner Meinung nach sogar einen gewissen Partyspiel / „That’s You!“ Charakter, da dann jeder mit seinem Smartphone das Spiel per App beeinflusst :slight_smile: .

Viele Grüße,
Rob :slight_smile:

1 „Gefällt mir“

Ben war das letzte mal Ende Juni im Forum. Eine Antwort bei ihm könnte etwas dauern.

Damit du vielleicht früher eine Antwort erhältst hau ich noch @DoomDesign und @maexdaemaege an.

1 „Gefällt mir“

Man kann doch auf der Homepage bereits mit einem Klick abstimmen, ohne Chatbefehl.

1 „Gefällt mir“

Jau, das Feature hab ich vor längerer Zeit mal gesehen, finde es aber irgendwie nicht mehr. Demnach gibt es aber womöglich schon so eine Schnittstelle für potenzielle Voting Apps :thinking:. Das wäre natürlich der Hammer!

Hab auch eben gesehen, dass weiter oben 2019 sowas schon mal von galactico gefragt wurde, da aber noch nicht drauf eingegangen wurde. Sorry für den quasi repost :sweat_smile:

1 „Gefällt mir“

Hallo zusammen, ich wollte mal ein bisschen mit der API spielen, aber scheitere schon beim OAuth. Meine App ist angelegt, ich bekomme den OAuth Call hin und lande nach dem Login auch auf der Seite auf der ich die Verknüpfung der Daten mit meiner App akzeptieren kann.

Beim Klick auf Akzeptieren wird dann im Hintergrund https://api.rocketbeans.tv/v1/oauth2/acknowledge aufgerufen, aber der Request läuft immer in einen Timeout und ich erhalte die Meldung der Server sei nicht erreichbar.

Macht der OAuth Server gerade Faxen oder habe ich doch noch irgendein Konfigurationsproblem? Wenn ich Dinge falsch konfiguriere oder nötige Parameter weglasse erhalte ich immer sinnvolle Fehlermeldungen, daher gehe ich eigentlich davon aus, dass ich gerade alles richtig mache.

1 „Gefällt mir“

Moin :slight_smile:

hmmm seltsam. Ich prüfe das. Danke für den Hinweis!

Grüße

1 „Gefällt mir“

Moin! Spätes, dafür sehr kurzes Update:
Das Problem sollte sich mit dem letzten Patch eben behoben haben! :slight_smile:

4 „Gefällt mir“

Ahhhhh moin @Novalis!

Holy Debugger, warum hab ich deinen Post nicht mitbekommen? Erm, ja, ich lass mal alle Ausreden weg und stelle mich direkt der Frage. Die ist vll auch 7 Monate später noch aktuell :cold_sweat:

Die Homepage verarbeitet die Votes bereits über WebSockets. Dazu müsste man eigentlich nur die Authentifikation/Authorisierung eben über jenen WebSocket durchführen und könnte im Anschluss Vote messages absetzen. Auch eine OAuth App wäre denkbar. Ein erster Blick in die Code Base hat mir verraten, dass das eigentlich schon heute möglich sein sollte. Die entsprechenden Socket Messages habe ich für ein anderes Projekt bereits implementiert →

Erfolgreich authentifizierte Clients bekommen dann ein Event vom Typ AC_DYNINTERACTION_START und damit hat man eigentlich alle Infos, um ein CA_DYNINTERACTION_EVENT mit entsprechenden Werten für den Typ „votese“ absetzen zu können. Das müsste den Flow vervollständigen. Sollte da was entstehen, hau’ mich gerne an :wink:

PS: Ich versuche im Forum aktiver zu sein :neutral_face:

5 „Gefällt mir“

Vielen Dank. Der Authorization Endpunkt ist damit durchgespielt. Jetzt habe ich allerdings Probleme beim Token Endpunkt. Ich hoffe ich stelle mich nicht nur dumm an :sweat_smile:.
Ich nutze gerade RapidAPI zum Testen (ehemals Paw).

Wenn ich Client ID und Passwort in den Auth Header packe, erhalte ich die Fehlermeldung, dass die Parameter client_id und client_secret fehlen. Ich gehe daher davon aus, dass die im Body sein sollen.

POST https://api.rocketbeans.tv/v1/oauth2/token
Accept: application/json, text/json, text/javascript, application/xml, text/xml, application/x-plist, application/x-www-form-urlencoded, text/plain, text/html, application/xhtml+xml
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
Authorization: Basic HierStehenClientIDUndClientSecretInBase64Form
---Body---
code=HierStehtDerCodeDenIchGeradePerRedirectErhaltenHabe&scope=user.info&redirect_uri=http%3A%2F%2Flocalhost&grant_type=authorization_code

Error OAuth 2 Response 'Access Token' Request failed: bad request (400)
HTTP 400
---Body---
{"error":"invalid_request","error_description":"Missing Parameters: client_id,client_secret"}

Wenn ich sie in den Body packe, erhalte ich die Fehlermeldung, dass der Code nicht bekannt oder abgelaufen sei. Den habe ich aber Millisekunden davor per Redirect vom Authorization Endpunkt erhalten.

Event OAuth 2 Request 'Access Token'
POST https://api.rocketbeans.tv/v1/oauth2/token
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
Accept: application/json, text/json, text/javascript, application/xml, text/xml, application/x-plist, application/x-www-form-urlencoded, text/plain, text/html, application/xhtml+xml
---Body---
code=HierStehtDerCodeDenIchGeradePerRedirectErhaltenHabe&scope=user.info&redirect_uri=http%3A%2F%2Flocalhost&client_id=ClientID&client_secret=ClientSecret&grant_type=authorization_code

Error OAuth 2 Response 'Access Token' Request failed: bad request (400)
HTTP 400
---Body---
{"error":"invalid_request","error_description":"The provided code is expired or unknown"}

Die OAuth2 Implicit Methode scheint allerdings zu funktionieren. Damit kann ich erstmal weitermachen.

Mit ganz viel Tricksen und Raten habe ich es jetzt geschafft, dass Gregor die neuste Folge Speedrundale als RBSCVideo auf meinem Apple TV Simulator anmoderiert. :tada:

Ich musste allerdings den Video Token über die Webseite auslesen. Wenn ich versuche den über die API zu bekommen, erhalte ich immer einen 403er. Mit dem Token, dass ich durch OAuth bekommen habe (s.u.). Dürfen Apps keinen RBSCVideo Token abrufen? Ich habe auch einmal versucht alle Scopes für die App zu aktivieren um auszuschließen, dass es daran liegt. Andere authentifizierte Calls gehen mit dem Token (bspw. Nutzerdaten abrufen).

Sorry, wenn ich den Thread hier vereinnahme :sweat_smile:

Request
GET /v1/rbsc/video/token/a0e7dcd882c19e542b45684746cbe638 HTTP/1.1
Authorization: Bearer HierStehtMeinToken
Cookie: RBLB=613c6ff09e7bc007
Host: api.rocketbeans.tv
Connection: close
User-Agent: RapidAPI/4.1.3 (Macintosh; OS X/13.1.0) GCDHTTPRequest

Response
HTTP/1.1 403 Forbidden
Date: Fri, 10 Feb 2023 20:18:21 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 69
Connection: close
strict-transport-security: max-age=15768000
access-control-allow-origin: *
CF-Cache-Status: DYNAMIC
Server: cloudflare
CF-RAY: 7977889138172187-DUS
alt-svc: h3=":443"; ma=86400, h3-29=":443"; ma=86400

{"success":false,"message":"Permission Denied","code":2003,"data":{}}

Kein Ding, genau für solche Fragen ist der Thread doch da :slight_smile:

Aktuell können durch OAuth Apps generierte Access Token keine RBSC Video Token abrufen. Ich kann dir allerdings anbieten, das Thema mal mit in unser Team zu nehmen, um dort zu diskutieren, ob man einen solchen Scope einführen könnte. Eigentlich sollte nichts dagegen sprechen. Der Access Token der durch einen „klasssischen“ Login Flow, wie ich ihn hier im Thread weiter oben angedeutet habe, könnte das ja auch jetzt schon.

2 „Gefällt mir“

Stimmt, guter Hinweis. Über nen OAuth-Scope wärs für ne Drittanbieter-App gefühlt sauberer, daher wäre so ein Scope super. Aber ich probier’s erstmal über den klassischen Login Flow. :+1:

Ah, sehr schön danke dir vielmals Ben :slight_smile:. Ich sag auf jeden Fall Bescheid, sobald ich da mal was fertig habe (leider selber kaum Zeit für persönliche Projekte :sweat_smile:.

Da haben sich bei mir doch glatt noch ein paar Fragen aufgetan, wenn’s dir nix ausmacht. Ich hau die einfach mal hier drunter :slight_smile::

  1. Hab ich richtig verstanden, dass VoteSEFrontendData, bzw. votese der Successor zu VoteFrontendData, bzw. vote ist?
  2. Ist in VoteSEFrontendData die Property theme die Art der Frage, also z.B. Volltext oder Single Choice
  3. wofür genau existiert die Property votedOption?

Danke dir nochmal für deine Hilfe :slight_smile:.

Hey Novalis!

  1. Ja, das ist richtig
  2. theme ist bei uns eigentlich nur in Benutzung wenn man dem Vote ein bestimmtes Aussehen (ein Design) geben will
  3. votedOption ist der Optionsindex, für den der Benutzer abgestimmt hat. Wird erst nach dem Abstimmen ausgegeben. So kann dir deine ausgewählte Option angezeigt werden auch wenn du die Seite neulädst und alle Votingdaten erneut übermittelt werden.
2 „Gefällt mir“