Donnerstag, 30. Dezember 2010

Youtube durchsuchen

In diesem Post möchte ich euch zeigen, wie man mit C# Youtube durchsuchen, also auf der Plattform nach bestimmten Videos suchen kann.
Hierfür benötigen wie die Google Data API, insbesondere das Youtube SDK. Mit diesen Programmierbibliotheken funktioniert der Zugriff auf Youtube & Co ganz einfach.
Zum Herunterladen gibt's die Google Data API auf dieser Seite, zum Zugriff auf Youtube brauchen wir aber nur diese Datei, das Youtube SDK.
Damit wir es später in das Projekt einbinden können, muss es installiert werden.
Das Durchsuchen von Youtube läuft über sogenannte Feeds.
Feeds sind so etwas wie Inhalte einer Website in Kurzform, meistens in reinem Textformat, so können sich Leser schnell über neueste Themen informieren, außerdem lesen viele Programme diese Textdateien (Suchmaschinen benutzen sie beispielsweise zur Indizierung).
Auch dieser Blog hat einen Feed, den man sogar abonnieren kann ;-)
Mit dem Youtube SDK können wir Feeds mit einem C# Programm auslesen, zum Durchsuchen von Youtube benutzen wir den Feed unter http://gdata.youtube.com/feeds/videos?q=Suchbegriff.
Dieser Feed wird von Youtube bereitgestellt und liefert die zu Suchbegriff passenden Ergebnisse in textueller Form, der Feed lässt sich auch im Browser betrachten.

Im Folgenden werde ich den Code erläutern, über den dieser Feed in C# ausgewertet werden kann.
Zuerst müssen die heruntergeladenen Bibliotheken Google.GData.Client.dll und Google.GData.Extensions.dll eingebunden werden.
Diese befinden sich im Redist Verzeichnis des Installationsordners (bei mir C:\Program Files (x86)\Google\Google YouTube SDK for .NET\Redist).
Das Einbinden lässt sich über Projekt - Verweis hinzufügen - Durchsuchen erledigen.
Zum benutzen im Projekt sind dann die Codezeilen

using Google.GData.Client;
using Google.GData.Extensions;

nötig.
Wichtig ist auch, dass unter Projekteigenschaften - Anwendung das Zielframework auf .Net Framework 4 und nicht etwa .Net Framework 4 Client Profile gestellt wird, denn für ersteres wurden die dlls kompilliert und nur hiermit funktioniert der Code.

Ich denke, der kommentierte Code ist eigentlich selbsterklärend, wesentlich hierbei ist, dass die Suchergebnisse letztendlich in Form eines Feeds (beim Programmieren als Objekt vom Typ AtomFeed) vorliegen, wessen Einträge dann ausgelesen werden können.

Das folgende Konsolenprogramm sucht auf Youtube nach dem Begriff "VLC einbinden" und gibt die ersten 10 Ergebnisse auf der Konsole aus:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Google.GData.Client;
using Google.GData.Extensions;

namespace YoutubeToolkit
{
    class YoutubeQuery
    {
        static void Main(string[] args)
        {
            FeedQuery Abfrage = new FeedQuery(); // Objekt zur Handhabung von Feeds
            Abfrage.Uri = new Uri("http://gdata.youtube.com/feeds/videos?q=VLC+einbinden"); // Feed URL
            Abfrage.StartIndex = 0; // Index, ab welchem die Suchergebnisse angezeigt werden sollen
            Abfrage.NumberToRetrieve = 10; // maximale Anzahl an anzuzeigenden Suchergebnissen

            Service Service = new Service(); // Objekt zur Durchführung der Suchabfrage über das FeedQuery Objekt
            AtomFeed Feed = Service.Query(Abfrage); // Ergebnis der Suchabfrage als Feed

            // für jedes Ergebnis den Titel des Videos ausgeben
            foreach (AtomEntry Ergebnis in Feed.Entries)
            {
                Console.WriteLine(Ergebnis.Title.Text);
            }
        }
    }
}

Kommentare:

  1. Hallo,

    Wie kriegst du das mit dem Syntax- Highlighting hin?

    AntwortenLöschen
  2. Hallo,

    das erledigt ein von mir geschriebenes in Programm, auch in C#.
    Hier gibt's den Post und den Quellcode dazu: http://csharp-tricks.blogspot.com/2010/09/c-syntax-highlighter-fur-html-version-2.html

    AntwortenLöschen
  3. Hallo,

    Da ich hier öfters mal vorbeischaue und schon lange kein neuer Artikel mehr erschienen ist, wollte ich fragen, ob es überhaupt noch weitere geben wird? Ich fände es gut.

    AntwortenLöschen
  4. Hey,

    vielen Dank für dein Interesse.
    Klar, natürlich soll es noch weitere Posts geben!
    Allerdings, wie du gemerkt hast, komme ich im Moment leider nicht dazu ... an der Stelle entschuldigung an alle!
    Ich hoffe bald habe ich wieder mehr Zeit.

    Viele Grüße
    Oliver

    AntwortenLöschen
  5. Hallo,
    danke für den Super Tutorial. Habe dennoch eine Frage: ich lasse die Ergebnisse in einer ListBox anzeigen doch sie sind da nur als Text. Wie mache ich das dass ich komplette Objekte da rein lade die ich dann mit einem Klick im MediaPlayer wiedergeben kann

    AntwortenLöschen
  6. Hallo,
    habe lange nach suchen müssen und endlich was einfaches gefunden. Funktioniert super. Vielen Dank!

    AntwortenLöschen