Categories
Development

YouTube API Key

Ich möchte den programmatischen Zugriff auf YouTube ausprobieren um ggf. später mit ein paar Ideen zu experimentieren.

Nach der ersten Erkenntnis, dass das gar nicht so gut dokumentiert ist, wie ich es erwartet hätte, folgt die zweite Erkenntnis, dass man dafür einen Api Key braucht.

Hier also die Notizen, wie ich meinen API Key angelegt habe.

Eine schöne Anleitung

Auf Kodi-Tipps gibt es eine schöne, bebilderte Anleitung, der ich hier folge.

Da dort eigentlich alles ausführlich beschrieben zu sein scheint, notiere ich hier nur knapp die Schritte, die ich ausführen werde.

Die Google Developer Console

Den YouTube API Key gibt es über Google und da ich bisher noch nicht viele Erfahrungen mit den Google Produkten als Entwickler gemacht habe, hier die erste wichtige URL zum Einstieg: Die Google Developer Console

Vor ewigen Zeiten hatte ich dort schon mal etwas getestet (Google Auth/Login in KeyCloak eingebunden) und daher ist schon ein Projekt vorhanden, in welchem ich direkt nach Seitenaufruf arbeite:

Natürlich möchte ich nicht in dem Projekt weiterarbeiten, sondern ein neues anlegen:

Meine Schritte in Bildern

User data vs Public data ?
Ich bin mir nicht ganz sicher, was ich benötige. Ich brauche keine persönlichen Informationen, aber ich würde gerne zB die letzten angesehenen Videos meines YouTube Accounts abrufen können.

Starten wir mit Public data.
Die Kodi Anleitung hat User data ausgewählt. Vermutlich werde ich später auch auf User data umsteigen müssen.

Public Data

Für Tests & Entwicklung richte ich keine Restrictions ein.
Sollte mal irgendwann irgendwas irgendwie produktiv gehen, wird eh ein neuer API Key angelegt werden und der wird dann runter restrictiert so weit es geht.

Ganz klasse: Beim Testen des Keys erhalte ich immer "The request is missing a valid API key.". Toll.
Könnte natürlich auch daran liegen, dass ich keine Ahnung habe, was ich da treibe und das falsch mache.
Nützt alles nix, nächster Test mit Personal Data, das wird hoffentlich besser laufen.

Einen Hinweis habe ich noch gefunden, bracht mich aber erstmal nicht weiter:

Personal Data

Entweder finde ich den Einstieg von vorhin nicht mehr, oder durch Anlegen eines ersten API Keys hat sich die Oberfläche verändert und ich muss anders vorgehen.

Create geklickt, paar Sachen ausgefüllt, unsicher geworden, abgebrochen.

Nix besseres gefunden, später wieder auf "OAuth client ID" geklickt, dann sah es wieder anders aus, das ist dann die nächste Seite:

Erstmal mit einer Desktop App starten, später wird dann vielleicht mal eine Web App daraus.

Belohnt wird man dann mit einer OAuth Client-ID und Client-Secret. Sogar im JSON-Format, das ich mir abspeicher.

Ich habe dann noch ein paar Sachen getestet, aber irgendwie war der Wurm drin, nix ging.

Workaround: Projekt löschen, neu anfangen.

Was ein Spaß.

Zweiter Anlauf

Direkt mit User data weiter:

Scopes -> nix geändert -> "Save and continue"

Tja, leider kann ich aber keine User hinzufügen. Toll.

Nächster Anlauf:

Und noch einen API Key generieren:

Frust

Ich habe die Keys mit Postman und in Java Code ausprobiert, aber nichts hat funktioniert. Sehr frustrierend.

So wird das nichts. Ich brauche ein gutes Tutorial.

Die YouTube API Keys konnte ich anlegen, aber gebracht hat es mir nichts.

Der Tag danach

So ganz wollte ich doch nicht aufgeben und habe am Tag nach meinen YouTubeAPIGedöns Experimenten doch noch einen Versuch gewagt.

Über einen Stackoverflow Post habe ich ein Beispiel für eine API Query gefunden:

https://www.googleapis.com/youtube/v3/search?key={KEY}&channelId={CHANNEL-ID}&part=snippet&maxResults=1&order=date&type=video

Als KEY habe ich meinen gestern generierten API Key genommen, als CHANNEL-ID habe ich aus meiner YouTube Abo Liste einen Link zu einem Kanal, und daraus den letzten Teil, genommen.

In meinem Beispiel https://www.youtube.com/channel/UC0RBJwg8ZfRM8TLGOKTpArA -> UC0RBJwg8ZfRM8TLGOKTpArA

Diese Informationen habe ich in Postman eingetragen und konnte endlich eine erfolgreiche Anfrage absenden:

In der Authorization Section hatte ich zuerst den Type auf No Auth zurückgestellt. Das scheint aber nicht erforderlich zu sein.

YAY!

Glück

Bei der Auswahl des Kanals hatte ich Glück!

Denn der Kanal verwendet eine Kanal-URL.
Beispiel: youtube.com/channel/UCUZHFZ9jIKrLroW8LcyJEQQ

Viele andere Kanäle in meiner Abo Liste verwenden noch eine alte benutzerdefinierte URL.
Beispiel: youtube.com/c/YouTubeCreators

Mit einer alten benutzerdefinierten URL funktioniert der Aufruf nämlich nicht, sondern nur mit der Kanal-URL.

Details zu den YouTube Kanal URLs: Link

Kanal URL

Wie findet man in so einem Fall die Kanal URL heraus?

Einen API Call konnte ich nicht finden. Und auch sonst keine elegante, programmatische Lösung.

Zum Glück existiert aber eine Website, die die Kanal URL für einen herausfinden kann. Wie auch immer die das macht.

YOUTUBE CHANNEL ID