YouTube-Kanal mit VB.NET verwalten, Teil 2

Lies in den Artikel rein und unten bekommst Du ein unschlagbares Angebot!

Im ersten Teil dieser Artikelreihe haben wir die Vorbereitungen auf der Seite von Google beziehungsweise YouTube erledigt. Dabei haben wir ein Google-Konto angelegt, dieses zum Entwickler-Konto erweitert und eine Anwendung für den Zugriff auf die YouTube-API registriert. Außerdem haben wir dort die für den Zugriff notwendigen Zugangsdaten erstellt, die wir in der nun zu programmierenden .NET-Lösung verwenden können. In der .NET-Lösung wollen wir verschiedene Informationen zu unserem YouTube-Kanal abrufen wie die Namen der Playlisten und Informationen zu den enthaltenen Videos. Außerdem wollen wir neue Videos anlegen und die Eigenschaften der vorhandenen Videos anpassen.

Die Ausgangsidee zu diesem Artikel war, dass ich einen YouTube-Kanal eröffnet habe und dort Access-Videos veröffentliche. Die Herausforderung dabei ist, dass ich beispielsweise im Beschreibungstext gern Links zu anderen, thematisch ähnlichen Videos hinzufügen würde und auch Links zu entsprechenden Artikeln aus meinen Magazinen. Das Problem dabei ist, dass es immer mehr Videos werden und Artikel gibt es ohnehin schon weit über 1.000 Stück. Außerdem sollen die Beschreibungstexte auch noch Links zu eventuell verfügbaren Beispieldatenbanken enthalten.

Aufwendige Pflege

Dies alles zu pflegen, indem man die Beschreibungstexte von Hand zusammenschreibt und einzeln über YouTube Studio hinzuzufügen, wäre sehr zeitintensiv und deshalb suchen wir einen alternativen Weg. Dieser sieht so aus, dass wir die notwendigen Daten lokal in einer Access-Datenbank speichern, wo sich die Informationen über YouTube-Videos, Artikel und ihre Verknüpfungen befinden. Diese sollen dann per Code zu Beschreibungstexten zusammengestellt und den Videos im YouTube-Kanal hinzugefügt werden.

Datenbankzugriff im zweiten Schritt

Den Schritt, die Daten aus der Datenbank zu beziehen, lassen wir vorerst aus – zunächst einmal wollen wir überhaupt in der Lage sein, auf die Videos des Kanals zuzugreifen, deren Daten auszulesen und Informationen wie den Titel oder den Beschreibungstext und gegebenenfalls auch weitere Eigenschaften zu aktualisieren.

Verwendete Technik

Dass wir die Lösung mit Visual Basic .NET entwickeln wollen, haben wir bereits im ersten Teil der Artikelreihe erläutert. Es gibt alle notwendigen Bibliotheken für den Zugriff auf die YouTube Data API v3 und wir können von einer .NET-Anwendung auch auf die Daten einer Access-Datenbank zugreifen.

Gegebenenfalls ist letzteres aber auch gar nicht notwendig – wir könnten auch eine DLL programmieren, die wir in das VBA-Projekt einer Access-Datenbank einbinden. Von dort können wir dann die Methoden und Eigenschaften dieser DLL nutzen und innerhalb der Access-Datenbank die darüber zu schreibenden Daten aus den Tabellen lesen.

Welcher Projekttyp?

Deshalb stellt sich die Frage, mit welchem Projekttyp wir starten. Auch wenn wir die Funktionen später in einer .NET-DLL veröffentlichen wollen, entscheiden wir uns an dieser Stelle für eine WPF-Anwendung. Den Zugriff auf die Access-Datenbank mit den Daten für die YouTube-Videos wollen wir zunächst aussparen und stattdessen erst einmal den Zugriff auf die Daten des YouTube-Kanals realisieren sowie einige Beispieldaten in bestehende YouTube-Videos schreiben.

Projekt erstellen und Pakete hinzufügen

Im ersten Ansatz und zum Experimentieren erstellen wir ein neues Projekt des Typs WPF-Anwendung für Visual Basic. In diesem Fall haben wir die Variante für .NET Core verwendet. Außerdem benötigen wir zwei NuGet-Pakete. Um diese hinzuzufügen, öffnen wir mit dem Menübefehl Projekt|NuGet-Pakete verwalten… das NuGet-Fenster.

Hier wechseln wir zum Bereich Durchsuchen und Suchen nacheinander nach den folgenden NuGet-Paketen und installieren diese jeweils mit einem Klick auf Installieren:

  • Google.Apis.Oauth2.v2: Ermöglicht die Authentifizierung für den Zugriff auf die YouTube-Daten
  • Google.Apis.YouTube.V3: Ermöglicht den Zugriff auf die YouTube-Daten.

Wenn wir nach der Installation zum Bereich Installiert wechseln, sollte dieser wie in Bild 1 aussehen.

Die für die Lösung benötigten NuGet-Pakete

Bild 1: Die für die Lösung benötigten NuGet-Pakete

Programmierung der Authentifizierung

Ziel der nachfolgend beschriebenen Authentifizierung ist es, ein Objekt des Typs YouTubeService zu erhalten, mit dem wir auf die Daten des YouTube-Kanals des Benutzers zugreifen können, in dessen Kontext wir uns anmelden. Diese Klasse (siehe Listing 1) bezeichnen wir mit Authentication und sie enthält nur eine Funktion namens AuthenticateOAuth. Diese Funktion liefert nach erfolgreicher Authentifizierung das gewünschte YouTubeService-Objekt zurück.

Imports System.IO
Imports System.Threading
Imports Google.Apis.Auth.OAuth2
Imports Google.Apis.Services
Imports Google.Apis.YouTube.v3
Public Class Authentication
     Public Shared Function AuthenticateOAuth() As YouTubeService
         Dim objYouTubeService As Google.Apis.YouTube.v3.YouTubeService
         Dim objUserCredential As UserCredential
         Dim objStream As FileStream
         objStream = New FileStream("client_secrets.json", FileMode.Open, FileAccess.Read)
         objUserCredential = GoogleWebAuthorizationBroker.AuthorizeAsync(
             GoogleClientSecrets.FromStream(objStream).Secrets,
             {YouTubeService.Scope.Youtube},
             "user",
             CancellationToken.None).Result
         objYouTubeService = New YouTubeService(New BaseClientService.Initializer() With {
             .HttpClientInitializer = objUserCredential
         })
         Return objYouTubeService
     End Function
End Class

Listing 1: Klasse zur Authentifizierung eines Google-Accounts

Die Frage ist nur: Woher bekommen wir die für die Authentifizierung notwendigen Daten? Dazu gehören zwei verschiedene Sätze von Informationen:

  • Die Daten für die App, mit der wir uns anmelden wollen und
  • die Daten für den Benutzer, in dessen Kontext die Anmeldung erfolgen soll.

Die Daten für die App haben wir im ersten Teil der Artikelreihe mit dem Titel YouTube-Kanal mit VB.NET verwalten, Teil 1 (www.vbentwickler.de/315) von unserem Google-Entwicklerkonto als JSON-Datei heruntergeladen und unter dem Namen client_secrets.json gespeichert. Den zweiten Satz von Daten, die Daten des Benutzers, geben wir bei der eigentlichen Authentifizierung an. Zunächst benötigen wir nur die Daten aus der Datei client_secrets.json. Der Einfachheit halber platzieren wir diese in dem Verzeichnis, in dem beim Debuggen der Anwendung auch die dabei erstellte .exe-Datei landet. Dabei handelt es sich um den Ordner \bin\Debug\net5.0-windows unterhalb unseres Projektordners.

Die Funktion AuthenticateOAuth liest diese Datei in ein FileStream-Objekt ein und übergibt die enthaltenen Daten als ersten Parameter der AuthorizeAsync-Methode der Klasse GoogleWebAuthroizationBroker. Daneben werden weitere Parameter übergeben. Der zweite lautet {YouTubeService.Scope.Youtube} und legt fest, auf welchen Bereich sich die Authentifizierung bezieht. Danach erstellen wir ein neues Objekt des Typs YouTubeService und übergeben diesem das UserCredential-Objekt als Initialisierer. Danach gibt die Funktion das neue YouTubeService-Objekt als Ergebnis zurück.

 

Schreibe einen Kommentar