Entwicklerleitfaden: Python

Mit der YouTube Data API können Client-Anwendungen YouTube-Inhalte in Form von Google Data API-Feeds abrufen und aktualisieren. Ihre Clientanwendung kann die YouTube Data API-Feeds verwenden, um Videos, Kommentare, Antworten, Playlists, Nutzerprofile und Nutzerkontakte abzurufen, zu suchen und zu aktualisieren sowie um Videos zu suchen, die bestimmten Kriterien entsprechen.

Neben einem Hintergrund zu den Funktionen der YouTube Data API enthält dieses Dokument Beispiele für die Interaktion mit der API mithilfe der Python-Clientbibliothek. Zur Verwendung der Python-Clientbibliothek benötigen Sie Python 2.0 oder höher sowie die Elemente Tree, httplib und urllib. Weitere Informationen finden Sie unter Abhängigkeitsmodule.

Wenn Sie Hilfe beim Einrichten der Python-Clientbibliothek benötigen, finden Sie entsprechende Informationen im Startleitfaden. Weitere Informationen zum zugrunde liegenden Protokoll, das von der Python-Clientbibliothek für die Interaktion mit YouTube verwendet wird, findest du auf der Seite Protokoll für Entwickler.

Informationen zu diesem Dokument

Zielgruppe

Dieses Dokument richtet sich an Programmierer, die Client-Anwendungen schreiben möchten, die über die Python-Clientbibliothek mit YouTube interagieren können. Es enthält eine Reihe von Beispielen für grundlegende Daten-API-Interaktionen.

Referenzinformationen zur YouTube Data API finden Sie im Referenzhandbuch.

In diesem Dokument wird davon ausgegangen, dass Sie mit den allgemeinen Ideen des Google Data APIs-Protokolls vertraut sind und wissen, wie man in Python programmiert.

Referenzinformationen zu den Python-Klassen und -Methoden finden Sie unter pyDocs (für die Dienstklasse und Datenklassen), die im Quellcode enthalten sind.

Dokumentstruktur

Diese FAQ sind in folgende Abschnitte gegliedert:

  • Im Abschnitt Authentifizierung werden die zwei verschiedenen Authentifizierungsmethoden beschrieben, die zum Verknüpfen von API-Vorgängen mit einem bestimmten Nutzerkonto zur Verfügung stehen. In diesem Abschnitt werden auch die Unterschiede zwischen der Authentifizierung für die YouTube Data API und anderen Google Data APIs erläutert. In diesem Dokument wird in den Erläuterungen bestimmter API-Funktionen deutlich angegeben, ob die Funktion eine Nutzerauthentifizierung erfordert. Im Allgemeinen müssen alle Anfragen zur Änderung von Video- oder Feeddaten authentifiziert werden. Für schreibgeschützte Anfragen an öffentliche Videos ist keine Authentifizierung erforderlich.

  • Der Abschnitt Videofeeds und -einträge enthält eine Beispiel-API-Antwort und erklärt, wie du Informationen zu einem einzelnen Video aus einer Videoliste oder einer Reihe von Suchergebnissen extrahieren kannst. In diesem Abschnitt wird auch erläutert, wie Sie auf Metadaten zu einem bestimmten Videoeintrag zugreifen können. Zuletzt wird der Mechanismus zum Aktualisieren eines einzelnen Videoeintrags erläutert.

  • Im Abschnitt Videos abrufen und suchen wird erklärt, wie bestimmte Videolisten abgerufen werden können, z. B. ein Standardfeed der beliebtesten Videos auf YouTube. Andere Videolisten umfassen Videos, die von einem bestimmten Nutzer hochgeladen wurden, sowie Videolisten, die sich auf ein bestimmtes Video beziehen. In diesem Abschnitt wird auch erläutert, wie Nutzer mithilfe der API in der Videobibliothek von YouTube nach bestimmten Suchbegriffen oder Kategorien suchen können.

  • Im Abschnitt Videos hochladen werden zwei Möglichkeiten erläutert, wie du Nutzern das Hochladen von Videos aus YouTube über deine Anwendung ermöglichen kannst. Außerdem wird in diesem Abschnitt erklärt, wie du Videos als Antworten auf andere Videos hochlädst.

  • Im Abschnitt Videos aktualisieren und löschen wird beschrieben, wie du mithilfe der API Informationen zu einem YouTube-Video aktualisieren kannst. Außerdem wird beschrieben, wie ein Video über die API entfernt werden kann.

  • Im Abschnitt Community-Funktionen verwenden werden API-Funktionen beschrieben, mit denen Nutzer mit YouTube-Videos interagieren können. Diese Funktionen erklären, wie du ein Video zu einer Bewertung, einem Kommentar oder einer Beschwerde einreichen kannst. Du kannst auch die API verwenden, um Listen mit Videokommentaren abzurufen.

  • Im Abschnitt Videos speichern und erfassen wird erläutert, wie Sie mit der API Ihre Lieblingsvideos, -playlists und Abos für YouTube-Kanäle aufrufen, erstellen und aktualisieren. Außerdem erfahren Sie, wie Sie Playlists und Favoriten ändern, indem Sie Videos hinzufügen oder entfernen.

  • Im Abschnitt Nutzerinteraktion aktivieren wird erläutert, wie Sie Nutzerprofile mit der API abrufen und aktualisieren. In diesem Abschnitt wird auch erläutert, wie Sie Nutzerkontakte abrufen, hinzufügen, aktualisieren und löschen.

Erste Schritte

Voraussetzungen

Deine Clientanwendung kann die YouTube Data API-Feeds zum Suchen, Abrufen und Aktualisieren von Videos, Kommentaren, Antworten, Playlists, Abos und Nutzerprofilen verwenden.

Neben einem Hintergrund zu den Funktionen der YouTube Data API enthält dieses Dokument Beispiele für die Interaktion mit der API mithilfe der Python-Clientbibliothek. Zur Verwendung der Python-Clientbibliothek benötigen Sie Python 2.2 und höher sowie die Elemente Tree, httplib und urllib. Weitere Informationen finden Sie unter Abhängigkeitsmodule.

Weitere Informationen zum Konfigurieren Ihrer Umgebung finden Sie im Startleitfaden. Weitere Informationen zum zugrunde liegenden Protokoll, das von der Python-Clientbibliothek für die Interaktion mit YouTube verwendet wird, findest du auf der Seite Protokoll für Entwickler.

Die folgenden Beispiel-Snippets können kopiert und in den Code eingefügt werden.

Bevor Sie Vorgänge mit der YouTube Data API ausführen können, müssen Sie wie unten gezeigt ein gdata.youtube.service.YouTubeService-Objekt initialisieren. Mit den unten aufgeführten import-Anweisungen werden automatisch weitere Importe aus den Modulen gdata.media und gdata.geo durchgeführt. Beachten Sie, dass für alle Aktionen außer dem Abrufen öffentlicher Inhalte eine Authentifizierung erforderlich ist.

import gdata.youtube
import gdata.youtube.service

yt_service = gdata.youtube.service.YouTubeService()

# Turn on HTTPS/SSL access.
# Note: SSL is not available at this time for uploads.
yt_service.ssl = True

Die meisten Methodenbeispiele in dieser Anleitung basieren auf einer Instanz von gdata.youtube.service.YouTubeService. Es kann sinnvoll sein, die nicht authentifizierten Anfragen des interaktiven Python-Interpreters zu testen.

Hinweis: Die Python-Clientbibliothek muss im Pfad korrekt hinzugefügt werden. Installieren Sie sie, indem Sie das bereitgestellte setup.py-Skript ausführen. Weitere Informationen finden Sie im Startleitfaden.

Authentifizierung

Die Python-Clientbibliothek kann für öffentliche oder private Feeds verwendet werden. Öffentliche Feeds sind schreibgeschützt und erfordern keine Authentifizierung. Bei privaten Feeds ist eine Authentifizierung bei den YouTube-Servern erforderlich.

Die Authentifizierung kann über ClientLogin-Authentifizierung (für Desktop-Apps) oder über AuthSub-Authentifizierung (für Webanwendungen) erfolgen.

Entwicklerschlüssel und Client-ID festlegen

Ein Entwicklerschlüssel identifiziert den YouTube-Entwickler, der eine API-Anfrage einreicht. Eine Client-ID identifiziert Ihre Anwendung zu Logging- und Fehlerbehebungszwecken.

Wenn Sie eine API-Anfrage mit der Python-Clientbibliothek stellen, wird der Anfrageheader X-GData-Key verwendet, um den Entwicklerschlüssel anzugeben, und der X-GData-Client-Header, um die Client-ID anzugeben. Der Entwicklerschlüssel und die Client-ID können für das Objekt YouTubeService unabhängig vom verwendeten Authentifizierungsschema festgelegt werden:

yt_service.developer_key = 'ABCxyz123...'
yt_service.client_id = 'My-Client_id'

Sie müssen sich für einen YouTube-Entwicklerschlüssel registrieren.

AuthSub-Authentifizierung für Webanwendungen

Die AuthSub-Proxy-Authentifizierung wird von Webanwendungen verwendet, die ihre Nutzer für YouTube-/Google-Konten authentifizieren müssen. Der Operator benötigt für den YouTube-Nutzer keinen Zugriff auf den Nutzernamen und das Passwort – es sind nur spezielle AuthSub-Tokens erforderlich.

Wenn der Nutzer Ihre Anwendung zum ersten Mal besucht, ist er noch nicht bei Google-Diensten authentifiziert. In diesem Fall müssen Sie dem Nutzer einen Link zur Verfügung stellen, über den der Nutzer zu Google weitergeleitet wird, um die Zugriffsanfrage für Ihr YouTube-Konto zu autorisieren. Die Python-Clientbibliothek bietet eine Funktion zum Generieren dieser URL. Mit dem folgenden Code wird ein Link zur Seite AuthSubRequest eingerichtet.

def GetAuthSubUrl():
  next = 'http://www.example.com/video_upload.pyc'
  scope = 'http://gdata.youtube.com'
  secure = False
  session = True

yt_service = gdata.youtube.service.YouTubeService()
return yt_service.GenerateAuthSubURL(next, scope, secure, session)

authSubUrl = GetAuthSubUrl()
print '<a href="%s">Login to your Google account</a>' % authSubUrl

Beachten Sie die Parameter, die an die Methode GenerateAuthSubURL des Dienstobjekts gesendet werden:

  • Weiter: Die URL der Seite, zu der YouTube den Nutzer weiterleiten soll, nachdem er deine App für den Zugriff auf sein Konto autorisiert hat.
  • scope: Gibt an, dass die Anwendung nur auf YouTube API-Feeds zugreift.
  • secure – Gibt an, dass das zurückgegebene Token kein sicheres Token ist.
  • session (Sitzung): Gibt an, dass dieses Token gegen ein Mehrzwecktoken (Sitzung) ausgetauscht werden kann.

Die zurückgegebene URL sieht in etwa so aus:

https://www.google.com/accounts/AuthSubRequest?scope=http%3A%2F%2Fgdata.youtube.com&session=1&secure=0&next=http%3A%2F%2Fwww.example.com%2Fvideo_upload.pyc

Der Nutzer kann dann auf den Link klicken, um sich in seinem YouTube-Konto anzumelden. Nachdem der Nutzer Ihre Anwendung für den Zugriff auf sein Konto autorisiert hat, wird er wieder zur next-URL weitergeleitet. An die URL wird ein Einmal-Tokenwert als Suchparameter angehängt. Die URL sieht ungefähr so aus:

http://www.example.com/video_upload.pyc?token=Abc123...

Im nächsten Abschnitt wird gezeigt, wie Sie dieses Token upgraden. Das folgende Snippet zeigt eine der Möglichkeiten, dieses Token von der URL abzurufen:

import cgi
parameters = cgi.FieldStorage()
authsub_token = parameters[[]'token' ]

Upgrade auf ein Sitzungstoken ausführen

Aus Sicherheitsgründen ist dieses Token nur einmal verwendbar. Daher müssen Sie es jetzt gegen ein Sitzungstoken austauschen. Dieser Vorgang wird in der AuthSub-Dokumentation beschrieben. Das folgende Code-Snippet zeigt, wie das Token aktualisiert wird.

yt_service = gdata.youtube.service.YouTubeService()
yt_service.SetAuthSubToken(authsub_token)
yt_service.UpgradeToSessionToken()

Dieser Tokenwert steht für ein Einmal-AuthSub-Token. Da session = True oben angegeben wurde, kann dieses Token mit der Methode UpgradeToSessionToken gegen ein AuthSub-Sitzungstoken ausgetauscht werden. Dadurch wird der Dienst AuthSubSessionToken aufgerufen.

Dein YouTubeService-Objekt ist jetzt vollständig authentifiziert und kann für alle weiteren Anfragen mit der YouTube API verwendet werden. AuthSub-Sitzungstokens laufen nur ab, wenn Sie ausdrücklich eine Anfrage zum Widerrufen senden oder der Nutzer den Zugriff über die Seite Autorisierte Websites in seinem YouTube-Konto widerrufen möchte.

ClientLogin-Authentifizierung für installierte Anwendungen

Die ClientLogin-Authentifizierung wird in installierten Anwendungen verwendet, die Ihren Nutzer speichern und nach seinem Nutzernamen und Passwort fragen können. Um diese Form der Authentifizierung zu verwenden, rufen Sie die ProgrammaticLogin-Methode von YouTubeService auf, die von der gdata.service.GDataService-Klasse übernommen wurde, und geben Sie die ID und das Passwort des Nutzers an, in dessen Client Ihr Client die Anfrage zur Authentifizierung sendet.

yt_service = gdata.youtube.service.YouTubeService()
yt_service.email = 'jo@gmail.com'
yt_service.password = 'mypassword'
yt_service.source = 'my-example-application'
yt_service.ProgrammaticLogin()

Nachdem die Anmeldedaten festgelegt wurden, kann das Objekt YouTubeService zur Verarbeitung aller weiteren Anfragen verwendet werden. Wenn du Uploads und andere Schreibanfragen (Kommentare hinzufügen usw.) für die YouTube API ausführen möchtest, achte bei der Authentifizierung darauf, dass du deinen Entwicklerschlüssel und deine Client-ID an das yt_service-Objekt übergibst:

# A complete client login request
yt_service.email = 'jo@gmail.com'
yt_service.password = 'mypassword'
yt_service.source = 'my-example-application'
yt_service.developer_key = 'ABC123...'
yt_service.client_id = 'my-example-application'
yt_service.ProgrammaticLogin()

Das YouTubeService-Objekt legt automatisch die richtigen Header für X-GData-Key und X-GData-Client fest, wenn die Attribute developer_key und client_id festgelegt sind.

Hinweis: Weitere Informationen zu AuthSub und ClientLogin finden Sie in der Authentifizierungsdokumentation für Google Data APIs.

Videofeeds und -einträge

Die YouTube Data API bietet mehrere Videofeeds, die Listen mit Videos enthalten, darunter Standardfeeds, Uploads, Abos und Favoriten. Die URL für die einzelnen Feeds ist im Referenzhandbuch dokumentiert.

Feed von Videos anzeigen

Viele Feeds in der YouTube API bestehen aus Videoeinträgen. Diese Feeds lassen sich am einfachsten als gdata.youtube.YouTubeVideoFeed-Objekte modellieren, die jeweils eine Anzahl von gdata.youtube.YouTubeVideoEntry-Objekten enthalten. Jeder Videoeintrag entspricht genau einem Video auf YouTube und enthält Informationen zum Video.

Die grundlegende Struktur zum Abrufen einer Liste von Videos besteht darin, eine URL zu einem Videofeed zu erstellen und dann die einzelnen Einträge zu verarbeiten, ähnlich wie im folgenden Code:

def GetAndPrintVideoFeed(uri):
  yt_service = gdata.youtube.service.YouTubeService()
  feed = yt_service.GetYouTubeVideoFeed(uri)
  for entry in feed.entry:
    PrintEntryDetails(entry) # full documentation for this function

Im Bereich Videos abrufen und suchen findest du Informationen zu häufigen Feed-URLs und dazu, wie du verschiedene Videofeeds abrufen kannst.

Bestimmten Videoeintrag abrufen

Wenn Sie die Video-ID kennen, können Sie nur die Informationen für einen bestimmten Videoeintrag abrufen. Die URL des Eintrags basiert auf der Video-ID:

http://gdata.youtube.com/feeds/api/videos/videoID

Mit dem folgenden Code wird ein gdata.youtube.YouTubeVideoEntry abgerufen, der einem Video auf YouTube entspricht:

entry = yt_service.GetYouTubeVideoEntry(video_id='the0KZLEacs')

Videoeintragsinhalte

Es gibt viele Metadaten, die aus einem gdata.youtube.YouTubeVideoEntry-Objekt abgerufen werden können, z. B. Thumbnails, Player-URLs und Videodauer. Der folgende Code zeigt, wie Sie auf einige dieser Informationen zugreifen können. Die Python-Clientbibliothek abstrahiert die meisten dieser Funktionen durch die Zuordnung von XML-Elementen zu Klassen. Die wichtigsten Informationen zu einem YouTubeVideoEntry-Eintrag finden Sie in den untergeordneten Elementen des Attributs media (mit einem gdata.media.Group-Objekt) im Eintrag (für das XML-media:group-Element). Hier ein Beispiel für das Abrufen von Video-Metadaten:

def PrintEntryDetails(entry):
  print 'Video title: %s' % entry.media.title.text
  print 'Video published on: %s ' % entry.published.text
  print 'Video description: %s' % entry.media.description.text
  print 'Video category: %s' % entry.media.category[[]0].text
  print 'Video tags: %s' % entry.media.keywords.text
  print 'Video watch page: %s' % entry.media.player.url
  print 'Video flash player URL: %s' % entry.GetSwfUrl()
  print 'Video duration: %s' % entry.media.duration.seconds

  # non entry.media attributes
  print 'Video geo location: %s' % entry.geo.location()
  print 'Video view count: %s' % entry.statistics.view_count
  print 'Video rating: %s' % entry.rating.average

  # show alternate formats
  for alternate_format in entry.media.content:
    if 'isDefault' not in alternate_format.extension_attributes:
      print 'Alternate format: %s | url: %s ' % (alternate_format.type,
                                                 alternate_format.url)

  # show thumbnails
  for thumbnail in entry.media.thumbnail:
    print 'Thumbnail url: %s' % thumbnail.url

Hinweis: Weitere Informationen zum Generieren der erforderlichen Informationen zum Einbetten eines Videos mit einem Player in deine Seite findest du im Protokollleitfaden.

Videos abrufen und suchen

Standardfeeds abrufen

Die YouTube Data API bietet einen Standardfeed der beliebtesten Videos auf YouTube. Bisher wurden von der API andere Standardfeeds unterstützt, die inzwischen eingestellt wurden. Weitere Informationen finden Sie im Entwicklerhandbuch.

Die URL für den Feed der beliebtesten Videos auf YouTube hat das folgende Format:

http://gdata.youtube.com/feeds/api/standardfeeds/most_popular

Hinweis:Sie können auch gebietsspezifische Standardfeeds abrufen. Geben Sie dazu eine localeID im folgenden Format an: http://gdata.youtube.com/feeds/api/standardfeeds/localeID/feedID. Die beliebtesten Videos in Japan sind beispielsweise: http://gdata.youtube.com/feeds/api/standardfeeds/JP/most_popular. Eine vollständige Liste der mutmaßlichen localeIDs finden Sie im Referenzhandbuch.

def PrintVideoFeed(feed):
  for entry in feed.entry:
    PrintEntryDetails(entry)

def GetAndPrintFeedByUrl:
  yt_service = gdata.youtube.service.YouTubeService()

  # You can retrieve a YouTubeVideoFeed by passing in the URI
  uri = 'http://gdata.youtube.com/feeds/api/standardfeeds/JP/most_popular'
  PrintVideoFeed(yt_service.GetYouTubeVideoFeed(uri))

Videos abrufen, die von einem bestimmten Nutzer hochgeladen wurden

Jeder YouTube-Nutzer hat unter http://gdata.youtube.com/feeds/api/users/username/uploads einen Videofeed, der den hochgeladenen Videos entspricht. Der folgende Code zeigt, wie ein Feed für Uploads von Nutzern abgerufen und angezeigt wird:

def GetAndPrintUserUploads(username):
  yt_service = gdata.youtube.service.YouTubeService()
  uri = 'http://gdata.youtube.com/feeds/api/users/%s/uploads' % username
  PrintVideoFeed(yt_service.GetYouTubeVideoFeed(uri))

Hinweis: Du kannst anstelle von username auch den String „Standard“ verwenden, um Videos für den aktuell authentifizierten Nutzer abzurufen.

Übergeben Sie die Video-ID des gdata.youtube.YouTubeVideoEntry-Objekts an die GetYouTubeRelatedVideoFeed-Methode des gdata.youtube.service.YouTubeService-Objekts, um ähnliche Videos abzurufen. Dadurch wird ein YouTubeVideoFeed-Objekt abgerufen, das zugehörige Einträge enthält.

related_feed = yt_service.GetYouTubeRelatedVideoFeed(video_id='abc123')

Videos suchen

Mit der YouTube Data API können Sie eine Reihe von Einträgen anfordern, die bestimmten Kriterien entsprechen, z. B. das Anfordern von Videoeinträgen, die von einem bestimmten Autor veröffentlicht wurden, nach Videoformat oder nach einem bestimmten Suchbegriff. Dazu erstellen Sie ein gdata.service.YouTubeVideoQuery-Objekt mit Ihren spezifischen Suchkriterien und übergeben es an die Methode YouTubeQuery von gdata.youtube.service.YouTubeService.

Das folgende Beispiel zeigt, wie eine Suchanfrage ausgeführt wird, wobei die Ergebnisse nach der Anzahl der Aufrufe geordnet sind, einschließlich eingeschränkter Videos (von der API als „Racy“ bezeichnet):

def SearchAndPrint(search_terms):
  yt_service = gdata.youtube.service.YouTubeService()
  query = gdata.youtube.service.YouTubeVideoQuery()
  query.vq = search_terms
  query.orderby = 'viewCount'
  query.racy = 'include'
  feed = yt_service.YouTubeQuery(query)
  PrintVideoFeed(feed)

Die Klasse gdata.service.Query und die abgeleiteten Klassen wie YouTubeVideoQuery sind für das Erstellen von Feed-URLs verantwortlich. Mit dem oben gezeigten VideoQuery wird eine URL erstellt, die der folgenden entspricht:

http://gdata.youtube.com/feeds/api/videos?vq=<searchTerms>&racy=include&orderby=viewCount

Hier sind einige der gängigsten YouTubeVideoQuery-Properties zum Festlegen von Suchparametern:

author
Legt den Autor des Eintrags fest. Autor ist gleichbedeutend mit YouTube-Nutzername.
format
Gibt das Videoformat an. Akzeptiert numerische Parameter zur Angabe einer von zwei RTSP-Streaming-URLs für die Videowiedergabe auf Mobilgeräten oder einer HTTP-URL für den einbettbaren Flash-Player
racy
Gibt an, ob eingeschränkte Inhalte in den Ergebnissen enthalten sein sollen. Zulässig sind nur die Parameter „include“ und „exclude“.
max_results
Bestimmt die maximale Anzahl gleichzeitig zurückgegebener Einträge.
start_index
Legt den 1-basierten Index des ersten abzurufenden Ergebnisses fest (für das Paging).
orderby
Bestimmt die Reihenfolge, in der Einträge aufgelistet werden, z. B. nach relevance, viewCount, published oder rating.
time
Legt einen Zeitraum fest, um die Ergebnisse des Standardfeeds auf today, this_week, this_month oder all_time zu beschränken.
vq
Legt einen Suchbegriff fest. Sucht in allen Videometadaten wie Titel, Tags und Beschreibungen nach dem angegebenen String.

Hinweis: Weitere Informationen zu Abfrageparametern finden Sie im Referenzhandbuch für die YouTube Data API und im Referenzhandbuch für die Google Data APIs.

Mit Kategorien und Suchbegriffen suchen

Du kannst die Suchergebnisse so einschränken, dass nur Videos angezeigt werden, die bestimmten Kategorien und Keywords entsprechen. Im Referenzhandbuch wird beschrieben, wie Sie vordefinierte YouTube-Kategorien wie Musik, Personen und Blogs sowie benutzerdefinierte Keywords (Tags) festlegen.

Der folgende Code zeigt, wie Sie mit Suchbegriffen (Tags) suchen, indem Sie die Suchbegriffe in Kleinschreibung ändern. Hinweis: Da einige Wörter (z. B. "Comedy") sowohl eine YouTube-Kategorie als auch ein Keyword sein können, beziehen sich Suchanfragen auf Kategorie- und Keyword-Ebene auf die Konvention, dass ein Wort in Großbuchstaben ("Comedy") eine YouTube-Kategorie bezeichnet, während ein Kleinbuchstabe ("comedy") für ein Keyword steht.

def SearchAndPrintVideosByKeywords(list_of_search_terms):
  yt_service = gdata.youtube.service.YouTubeService()
  query = gdata.youtube.service.YouTubeVideoQuery()
  query.orderby = 'viewCount'
  query.racy = 'include'
  for search_term in list_of_search_terms:
    new_term = search_term.lower()
    query.categories.append('/%s' % new_term)
  feed = yt_service.YouTubeQuery(query)
  PrintVideoFeed(feed)

Anhand von Entwickler-Tags suchen

Entwickler-Tags sind zusätzliche, versteckte Keywords, mit denen Entwickler Inhalte kennzeichnen können, die Endnutzer in ihrer App hochgeladen haben. Entwickler-Tags werden mit dem Entwicklerschlüssel abgeglichen, der während des Uploads in den Headern festgelegt ist. Diese Keywords sind nicht öffentlich sichtbar und können zum Abrufen von Videos verwendet werden. Wenn Sie nach Videos mit einem bestimmten Entwickler-Tag suchen möchten, senden Sie eine allgemeine YouTube Data API-Suchanfrage mit Ihrem Entwicklerschlüssel. Gib unbedingt das Kategorieschema und das Entwickler-Tag an, mit dem Videos übereinstimmen müssen. Über die unten stehende URL können Sie einen Feed mit Videos abrufen, die zu Ihrem Entwickler-Tag passen (in unserem Beispiel Ihr_tag_here).

developer_tag_uri = 'http://gdata.youtube.com/feeds/videos/-/%7Bhttp%3A%2F%2Fgdata.youtube.com%2Fschemas%2F2007%2Fdevelopertags.cat%7Dyour_tag_here'
yt_service = gdata.youtube.service.YouTubeService()
PrintVideoFeed(yt_service.GetYouTubeVideoFeed(developer_tag_uri))

Hochladen von Videos

Einen allgemeinen Überblick über den Uploadvorgang finden Sie in den Diagrammen im Protokollleitfaden. Sie haben zwei Möglichkeiten, Videos hochzuladen:

  • Entweder durch Hochladen des Videos direkt von Ihren Servern über die Direktupload-Methode
  • oder zuerst die Metadaten senden und dann den Nutzer bitten, das Video über die browserbasierte Uploadmethode direkt auf YouTube hochzuladen.

Direkter Upload

Um ein Video hochzuladen, musst du zuerst ein neues gdata.youtube.YouTubeVideoEntry-Objekt erstellen und ihm ein gdata.media.Group-Objekt übergeben, das die erforderlichen Metadaten enthält. Im folgenden Beispiel wird das Quicktime-Video „mytestmovie.mov“ mit den folgenden Eigenschaften auf YouTube hochgeladen:

AttributWert
TitleMein Testfilm
KategorieAutomatisch
KeywordsAutos, lustig
BeschreibungMeine Beschreibung
Dateinamemytestmovie.mov
MIME-Typ der Dateivideo/quicktime
Privatsphäre?falsch
Aufnahmeort37,-122 (lat,long)
Entwickler-Tagsmydevelopertag, anotherdevelopertag

Mit dem Code unten wird eine leere YouTubeVideoEntry erstellt, die hochgeladen werden kann. Für die Methode InsertVideoEntry in YouTubeService sind die folgenden Parameter erforderlich:

  • video_entry: Das gdata.youtube.VideoEntry-Objekt, das Metadaten enthält
  • filename_or_handle: ein dateiähnliches Objekt oder der Dateiname, aus dem das Video gelesen wird
  • youtube_username: Ein optionaler String, der den Nutzernamen für das Konto angibt, in das dieses Video hochgeladen werden soll. Natürlich benötigt Ihr Konto die entsprechenden Berechtigungen. Standardmäßig wird das aktuell authentifizierte Nutzerkonto verwendet.
  • content_type: Ein optionaler String, der den MIME-Typ des hochzuladenden Videos angibt.
Bei diesen Beispielen wird davon ausgegangen, dass die Variable yt_service auf ein vollständig authentifiziertes YouTubeService-Objekt verweist.

# prepare a media group object to hold our video's meta-data
my_media_group = gdata.media.Group(
  title=gdata.media.Title(text='My Test Movie'),
  description=gdata.media.Description(description_type='plain',
                                      text='My description'),
  keywords=gdata.media.Keywords(text='cars, funny'),
  category=[[]gdata.media.Category(
      text='Autos',
      scheme='http://gdata.youtube.com/schemas/2007/categories.cat',
      label='Autos')],
  player=None
)


# prepare a geo.where object to hold the geographical location
# of where the video was recorded
where = gdata.geo.Where()
where.set_location((37.0,-122.0))

# create the gdata.youtube.YouTubeVideoEntry to be uploaded
video_entry = gdata.youtube.YouTubeVideoEntry(media=my_media_group,
                                              geo=where)

# set the path for the video file binary
video_file_location = '/path/to/my/file.mov'

new_entry = yt_service.InsertVideoEntry(video_entry, video_file_location)

Wenn wir unser Video mit optionalen Entwickler-Tags versehen möchten (weitere Informationen findest du unter Nach Entwickler-Tags suchen), hätten wir die AddDeveloperTags-Methode verwenden können, bevor du InsertVideoEntry aufgerufen hast:

developer_tags = [[]'some_tag_01', 'another_tag']
video_entry.AddDeveloperTags(developer_tags)

Hinweis: Damit Videos als privat hochgeladen werden können, muss ein privates Attribut an gdata.media.Group übergeben werden:

my_media_group = gdata.media.Group(
  title=gdata.media.Title(text='My Test Movie'),
  description=gdata.media.Description(description_type='plain',
                                      text='My description'),
  keywords=gdata.media.Keywords(text='cars, funny'),
  category=[[]gdata.media.Category(
      text='Autos',
      scheme='http://gdata.youtube.com/schemas/2007/categories.cat',
      label='Autos')],
  player=None,
  private=gdata.media.Private()
)

video_entry = gdata.youtube.YouTubeVideoEntry(media=my_media_group)

# assuming that video_file_location points to a valid path
new_entry = yt_service.InsertVideoEntry(video_entry, video_file_location)

Browserbasierter Upload

Der browserbasierte Upload erfolgt fast gleich wie der direkte Upload, mit der Ausnahme, dass das Dateibinär nicht in derselben Anfrage hochgeladen wird, die Sie zum Senden der Metadaten des Videos verwenden. Stattdessen erstellen Sie eine YouTubeVideoEntry, die nur Metadaten enthält. Dieser Videoeintrag wird dann in einem speziellen Link auf dem YouTube API-Server gepostet. Die XML-Antwort enthält eine token und eine url, mit denen dann die Binärdatei unter Verwendung eines Standard-HTML-Formulars hochgeladen werden kann.

# create media group as usual
my_media_group = gdata.media.Group(
  title=gdata.media.Title(text='My Test Movie'),
  description=gdata.media.Description(description_type='plain',
                                      text='My description'),
  keywords=gdata.media.Keywords(text='cars, funny'),
  category=[[]gdata.media.Category(
      text='Autos',
      scheme='http://gdata.youtube.com/schemas/2007/categories.cat',
      label='Autos')],
  player=None
)

# create video entry as usual
video_entry = gdata.youtube.YouTubeVideoEntry(media=my_media_group)

# upload meta data only
response = yt_service.GetFormUploadToken(video_entry)

# parse response tuple and use the variables to build a form (see next code snippet)
post_url = response[[]0]
youtube_token = response[[]1]

Der Code oben druckt einen Link und ein Token aus, mit dem ein HTML-Formular erstellt wird, das im Browser des Nutzers angezeigt wird. Unten sehen Sie ein einfaches Beispielformular, in dem youtube_token den Inhalt des zurückgegebenen Tokenelements darstellt, wie er oben aus YouTubeVideoEntry abgerufen wird. Damit der Nutzer nach dem Senden des Formulars auf deine Website weitergeleitet werden kann, musst du einen next-Parameter an post_url anhängen (siehe unten). Er funktioniert auf dieselbe Weise wie der next-Parameter eines AuthSub-Links. Der einzige Unterschied ist, dass hier anstelle eines Einweg-Tokens eine status- und eine id-Variable als URL-Parameter zurückgegeben werden.

next = 'http://example.com/post_video_upload.pyc'

form = """<form action="%s?nexturl=%s" method="post" enctype="multipart/form-data">
          <input name="file" type="file"/>
          <input name="token" type="hidden" value="%s"/>
          <input value="Upload Video File" type="submit" />
          </form>""" % (post_url, next, youtube_token)

Die Antwort auf einen erfolgreichen Upload würde dann so aussehen:

http://example.com/post_video_upload.pyc?status=200&id=ABC123

Der Parameter status gibt den HTTP-Transaktionsstatus der Uploadtransaktion zurück. Der Parameter id gibt die YouTube-Video-ID zurück, die dem hochgeladenen Video zugewiesen wurde.

Uploadstatus wird geprüft

Nach dem Hochladen eines Videos wird es sofort im Uploadfeed eines authentifizierten Nutzers angezeigt. Sie wird jedoch erst auf der Website veröffentlicht, wenn sie verarbeitet wurde. Videos, die abgelehnt oder nicht hochgeladen wurden, sind nur im Uploadfeed des authentifizierten Nutzers zu sehen. Mit dem folgenden Code wird der Status einer YouTubeVideoEntry geprüft, um festzustellen, ob sie noch nicht aktiv ist oder abgelehnt wurde.

upload_status = yt_service.CheckUploadStatus(new_entry)

if upload_status is not None:
  video_upload_state = upload_status[[]0]
  detailed_message = upload_status[[]1]

Videos aktualisieren und löschen

Videoinformationen werden aktualisiert

Wenn Sie Metadaten zu Videos aktualisieren möchten, aktualisieren Sie einfach das Objekt YouTubeVideoEntry und verwenden dann die Methode UpdateVideoEntry des YouTubeService-Objekts. Diese Methode verwendet als Parameter einen YouTubeVideoEntry, der aktualisierte Metadaten enthält.

# assuming we have a video entry that was just posted in our 'new_entry' variable
new_entry.media.title.text = 'My Updated Video Title'
new_entry.media.description.text = 'Just updated'

updated_entry = yt_service.UpdateVideoEntry(new_entry)

Ein Video löschen

Das Löschen eines Videos ist sehr einfach und erfordert lediglich einen Aufruf der DeleteVideoEntry des YouTubeService-Objekts.

response = yt_service.DeleteVideoEntry(entry_to_be_deleted)

if response:
  print 'Video successfully deleted!'

Community-Funktionen verwenden

Bewertung hinzufügen

Verwenden Sie zum Bewerten eines Videos die Methode AddRating des YouTubeService-Objekts. Du kannst deine eigenen Videos nicht bewerten. Die Bewertungen müssen zwischen 1 und 5 (einschließlich) liegen:

video_id_to_rate = 'Ncakifd_16k'
video_entry = yt_service.GetYouTubeVideoEntry(video_id=video_id_to_rate)
response = yt_service.AddRating(3, video_entry)

Kommentare

Kommentare für ein Video abrufen

Mit einem YouTubeVideoEntry-Objekt oder einer einfachen Video-ID kannst du einen Feed mit den Kommentaren für das Video mithilfe der Methode GetYouTubeVideoCommentFeed des YouTubeService-Objekts abrufen und ausdrucken. Der resultierende Feed ist ein gdata.youtube.YouTubeCommentFeed, der aus gdata.youtube.YouTubeCommentEntry-Objekten besteht. Der Feed kann wie jeder andere Feed geparst werden:

video_id = 'ABC123...'
comment_feed = yt_service.GetYouTubeVideoCommentFeed(video_id=video_id)

for comment_entry in comment_feed.entry:
  print comment_entry.ToString()

Kommentar hinzufügen

Wenn Sie einen neuen Kommentar hinzufügen möchten, verwenden Sie die Methode AddComment des Objekts YouTubeService. Die Methode erfordert ein vollständiges YouTubeVideoEntry-Objekt, das kommentiert werden muss, sowie einen String, der den Kommentar darstellt:

my_comment = 'what a boring test video'
video_id = '9g6buYJTt_g'
video_entry = yt_service.GetYouTubeVideoEntry(video_id=video_id)
yt_service.AddComment(comment_text=my_comment, video_entry=video_entry)

Videoantworten

Eine YouTube-Videoantwort war ein Video, das als Antwort einem zweiten Video zugeordnet wurde. Die Funktion für Videoantworten wurde wie in dieser Mitteilung beschrieben eingestellt. Vorhandene Videoantworten sind zwar weiterhin verfügbar, YouTube kann aber keine Liste mit Videoantworten für ein Video mehr abrufen, keine neuen Videoantworten hochladen und keine Videoantworten mehr löschen. Du hast allerdings die Möglichkeit, das in einer Videoantwort verwendete Video zu löschen. Daher werden diese Funktionen auch nicht mehr in der API unterstützt.

API-Anfragen für Videoantwortvorgänge geben jetzt Folgendes zurück:

  • Eine Anfrage zum Abrufen von Videoantworten für ein Video gibt eine leere Liste zurück.
  • Eine Anfrage zum Hinzufügen einer Videoantwort gibt einen 403-HTTP-Antwortcode zurück.
  • Eine Anfrage zum Löschen einer Videoantwort gibt den HTTP-Antwortcode 403 zurück.

Melden eines Videos

Eine Beschwerde zu einem Video wird über die Methode AddComplaint des YouTubeService-Objekts hinzugefügt. Der Beschwerdebegriff muss eine gültige Kategorie sein. Weitere Informationen finden Sie im Abschnitt Hinzufügen einer Beschwerde im Protokollleitfaden.

video_id_to_flag = 'Ncakifd_16k'
complaint_term = 'VIOLENCE'
complaint_text = ('Please ignore this complaint. '
                  'I\'m testing a YouTube API and needed to issue '
                  'a complaint to test the add complaint function. ')

response = yt_service.AddComplaint(complaint_text, complaint_term, video_id_to_flag)

Speichern und Sammeln von Videos

Gespeicherte Videos

Lieblingsvideos eines Nutzers abrufen

YouTube-Nutzer können Videos, die sie sich ansehen, als Favoriten markieren. Der allgemeine Speicherort für den Lieblingsfeed eines Nutzers ist die folgende URL.

http://gdata.youtube.com/feeds/api/users/username/favorites

Mit der Methode GetUserFavoritesFeed des YouTubeService-Objekts können Sie die Lieblingsvideos eines Nutzers abrufen. Die Methode verwendet einen optionalen String als Parameter für den YouTube-Nutzernamen des Nutzers, dessen bevorzugter Feed abgerufen werden soll.

favorite_feed = yt_service.GetUserFavoritesFeed(username='gdpython')

Der zurückgegebene Feed ist ein regulärer Videofeed mit YouTubeVideoEntry-Objekten.

Hinweis: Sie können auch den String default übergeben, um Favoriten für den aktuell authentifizierten Nutzer abzurufen. Dies ist die Standardeinstellung der Methode GetUserFavoritesFeed, wenn kein Nutzername angegeben ist.

Favoriten hinzufügen

Verwenden Sie die Methode AddVideoEntryToFavorites des YouTubeService-Objekts, um ein Lieblingsvideo hinzuzufügen. Die Parameter sind der YouTubeVideoEntry, der hinzugefügt werden soll, und optional der Nutzername, dem die Favoriten hinzugefügt werden sollen (Standard ist der aktuell authentifizierte Nutzer).

video_id = 'Ncakifd_16k'
video_entry = yt_service.GetYouTubeVideoEntry(video_id=video_id)
response = yt_service.AddVideoEntryToFavorites(video_entry)

# The response, if successfully posted is a YouTubeVideoEntry
if isinstance(response, gdata.youtube.YouTubeVideoEntry):
  print 'Video successfully added to favorites'

Favoriten löschen

Wenn Sie einen Favoriten löschen möchten, verwenden Sie einfach die Methode DeleteVideoEntryFromFavorites des YouTubeService-Objekts.

video_id = 'Ncakifd_16k'
response = yt_service.DeleteVideoEntryFromFavorites(video_id)
if response is True:
  print 'Video deleted from favorites'

Playlists

Jeder YouTube-Nutzer hat einen Playlist-Feed, der alle vom Nutzer erstellten Playlists enthält. Jede Playlist hat dann einen Feed für alle Videos.

Nutzerplaylists werden abgerufen

Wenn du eine Liste aller Playlists eines Nutzers manuell abrufen möchtest, verwende die folgende URL:

http://gdata.youtube.com/feeds/api/users/username/playlists

Mit der Python-Clientbibliothek können Sie die Methode GetYouTubePlaylistFeed des YouTubeService-Objekts verwenden:

playlist_feed = yt_service.GetYouTubePlaylistFeed(username='gdpython')

# instead of passing in a username, you can also pass the URI to the playlist feed:
playlist_feed = yt_service.GetYouTubePlaylistFeed(uri='http://gdata.youtube.com/feeds/api/users/default/playlists')

Hinweis:Statt einen bestimmten Nutzernamen zu übergeben (z. B. „gdpython“ im Beispiel oben), können Sie auch den String 'default' übergeben, um auf den aktuell authentifizierten Nutzer zu verweisen.

Ein gdata.youtube.YouTubePlaylistFeed steht für einen Feed mit gdata.youtube.YouTubePlaylistEntry-Objekten. Sie beziehen sich auf einzelne Playlists eines Nutzers. Videoeinträge in einer bestimmten Playlist werden als gdata.youtube.YouTubePlaylistVideoEntry-Objekte dargestellt. Diese Objekte ähneln bis auf wenige Ausnahmen den normalen gdata.youtube.YouTubeVideoEntry-Objekten. Benutzerdefinierte Titel und Beschreibungen können auf die Videos angewendet werden. Ein Positionsfeld gibt an, wo das Video in der Playlist erscheint.

Playlist-Informationen abrufen

Mit einem YouTubePlaylistEntry (für eine bestimmte Playlist) kannst du ein YouTubePlaylistVideoFeed abrufen, das YouTubePlaylistVideoEntry-Objekte enthält. Wie oben erläutert, stellen diese Objekte einzelne Videos in einer Playlist dar (mit optionalen benutzerdefinierten Titeln und Beschreibungen). Sie erhalten diesen Feed, indem Sie den URI Ihrer Playlist an die Methode GetYouTubePlaylistVideoFeed des YouTubeService-Objekts übergeben:

# a typical playlist URI
playlist_uri = 'http://gdata.youtube.com/feeds/api/playlists/BCB3BB96DF51B505'

playlist_video_feed = yt_service.GetYouTubePlaylistVideoFeed(uri=playlist_uri)

# iterate through the feed as you would with any other
for playlist_video_entry in playlist_video_feed.entry:
  print playlist_video_entry.title.text

Playlist hinzufügen

Wenn du eine neue Playlist hinzufügen möchtest, verwende einfach die Methode AddPlaylist des YouTubeService-Objekts. Für diese Methode werden die folgenden Parameter verwendet: „playlist_title“, „playlist_description“ (beide Strings) und ein optionaler boolescher Wert, der auf True gesetzt werden kann, wenn die Playlist als privat markiert werden soll.

new_public_playlistentry = yt_service.AddPlaylist('my new playlist', 'a new playlist')

if isinstance(new_public_playlistentry, gdata.youtube.YouTubePlaylistEntry):
  print 'New playlist added'

# adding a private playlist
new_private_playlistentry = yt_service.AddPlaylist('new private playlist', 'a new private playlist', True)

if isinstance(new_private_playlistentry, gdata.youtube.YouTubePlaylistEntry):
  print 'New private playlist added'

Playlist aktualisieren

Verwende die Methode UpdatePlaylist des YouTubeService-Objekts, um eine Playlist zu aktualisieren. Die Methode verwendet die folgenden Parameter: die ID der zu aktualisierenden Playlist, einen neuen Titel, eine neue Beschreibung, einen optionalen booleschen Wert zur Markierung der Playlist als privat und einen optionalen String für den Nutzernamen, der der Playlist gehört. Als String wird standardmäßig der aktuell authentifizierte Nutzer verwendet.

# here we are updating a public playlist with a new title while also making it private

# we assume that playlist_to_be_updated here represents a YouTubePlaylistEntry object
playlist_entry_id = playlist_to_be_updated.id.text.split('/')[[]-1]

# we want to keep the original description for the playlist so we store it first
original_description = playlist_to_be_updated.description.text

updated_playlist = yt_service.UpdatePlaylist(playlist_entry_id,
                                             'a new updated title',
                                             original_playlist_description,
                                             playlist_private=True)

Videos zur Playlist hinzufügen

Mit der Methode AddPlaylistVideoEntryToPlaylist des Objekts YouTubeService kannst du ein Video zu einer Playlist hinzufügen. Mit dem Code unten kannst du einer Playlist ein Video mit einem benutzerdefinierten Titel und einer Beschreibung hinzufügen.

custom_video_title = 'my test video on my test playlist'
custom_video_description = 'this is a test video on my test playlist'
video_id = 'Ncakifd_16k'
playlist_uri = 'http://gdata.youtube.com/feeds/api/playlists/BCB3BB96DF51B505'

playlist_video_entry = yt_service.AddPlaylistVideoEntryToPlaylist(
    playlist_uri, video_id, custom_video_title, custom_video_description)

if isinstance(playlist_video_entry, gdata.youtube.YouTubePlaylistVideoEntry):
  print 'Video added'

Hinweis: Ein benutzerdefinierter Titel und eine Beschreibung sind nicht erforderlich. Wenn diese nicht angegeben sind, wird der tatsächliche Titel und die tatsächliche Beschreibung des Videos verwendet.

Videoinformationen zur Playlist bearbeiten

Verwenden Sie die Methode UpdatePlaylistVideoEntryMetaData des YouTubeService-Objekts, um die Metadaten für ein YouTubePlaylistVideoEntry zu ändern. Im folgenden Beispiel geben wir unserem Video einen neuen benutzerdefinierten Titel und verschieben ihn an die erste Position (Position 1) der Playlist.

playlist_uri = 'http://gdata.youtube.com/feeds/api/playlists/BCB3BB96DF51B505'
playlist_entry_id = 'B0F29389E537F888'

new_video_title = 'a useful video'
new_video_description = 'updated video description'

updated_playlist_video_entry = yt_service.UpdatePlaylistVideoEntryMetaData(
    playlist_uri, playlist_entry_id, new_video_title, new_video_description, 1)

Hinweis: Wenn du die Beschreibung und den Titel eines Videos in einer Playlist wiederherstellen möchtest, gib einfach NULL für Titel und Beschreibung ein.

Video aus Playlist entfernen

Wenn du ein Video aus einer Playlist entfernen möchtest, verwende die Methode DeletePlaylistVideoEntry des YouTubeService-Objekts. Die Methode erfordert den URI der Playlist, die den zu löschenden Eintrag enthält, sowie die ID des Eintrags:

playlist_uri = 'http://gdata.youtube.com/feeds/api/playlists/BCB3BB96DF51B505'
playlist_entry_id = 'B0F29389E537F888'
response = yt_service.DeletePlaylistVideoEntry(playlist_uri,
                                               playlist_entry_id)
if response is True:
  print 'Entry successfully deleted'

Playlist löschen

Wenn du eine Playlist löschen möchtest, verwende einfach die Methode DeletePlaylist des YouTubeService-Objekts und übergib dem URI der zu löschenden Playlist:

playlist_uri = 'http://gdata.youtube.com/feeds/api/playlists/BCB3BB96DF51B505'
response = yt_service.DeletePlaylist(playlist_uri)

if response is True:
  print 'Playlist successfully deleted'

Abos

Verwenden Sie den folgenden URI, um eine Liste der Kanäle, Suchanfragen und Favoriten abzurufen, die ein bestimmter Nutzer abonniert hat:

http://gdata.youtube.com/feeds/api/users/username/subscriptions

Hinweis: Sie können auch den String default übergeben, um Favoriten für den aktuell authentifizierten Nutzer abzurufen.

Nutzerabos abrufen

Der folgende Code zeigt, wie die Liste der Abos eines bestimmten Nutzers abgerufen und gedruckt wird. Abos werden als gdata.youtube.YouTubeSubscriptionFeed dargestellt, die aus gdata.youtube.YouTubeSubscriptionEntry-Objekten besteht. Verwenden Sie zum Abrufen von Abos die Methode GetYouTubeSubscriptionFeed des YouTubeService-Objekts und übergeben Sie entweder den URI eines Abofeeds oder den Nutzernamen, dessen Abofeed abgerufen werden soll. Der Nutzername ist standardmäßig auf den aktuell authentifizierten Nutzer festgelegt.

subscription_feed = yt_service.GetYouTubeSubscriptionFeed(username='gdpython')

if isinstance(subscription_feed, gdata.youtube.YouTubeSubscriptionFeed)):
  # given a YouTubeSubscriptionEntry we can determine it's type (channel, favorite, or query)
  for entry in subscription_feed.entry:
    print entry.GetSubscriptionType()

Abo hinzufügen

Du kannst ein neues Abo erstellen, indem du ein neues YouTubeSubsciptionEntry in den Abofeed des authentifizierten Nutzers einfügst. Wir können drei Arten von Abos erstellen: ein Abo für den Kanal eines Nutzers (mit AddSubscriptionToChannel), ein Abo für die Favoriten eines Nutzers (mit AddSubscriptionToFavorites) oder ein Abo für ein bestimmtes Keyword (mit AddSubscriptionToQuery). Der folgende Code abonniert den authentifizierten Nutzer für den Kanal GoogleDevelopers.

new_subscription = yt_service.AddSubscriptionToChannel(
      username_to_subscribe_to='GoogleDevelopers')

if isinstance(new_subscription, gdata.youtube.YouTubeSubscriptionEntry):
  print 'New subscription added'

Sie können auch die Favoriten des Nutzers „GoogleDevelopers“ abonnieren:

new_subscription = yt_service.AddSubscriptionToFavorites(
    username='GoogleDevelopers')
if isinstance(new_subscription, gdata.youtube.YouTubeSubscriptionEntry):
  print 'New subscription added'

Außerdem haben Sie die Möglichkeit, bestimmte Suchbegriffe zu abonnieren. Hier abonnieren wir eine Abfrage für Videos mit dem Tag „Python“.

new_subscription = yt_service.AddSubscriptionToQuery(query='python')

if isinstance(new_subscription, gdata.youtube.YouTubeSubscriptionEntry):
  print 'New subscription added'

Abo löschen

Verwenden Sie zum Löschen eines Nutzerabos die Methode DeleteSubscription des YouTubeService-Objekts.

sample_subscription_uri = ('http://gdata.youtube.com/feeds/api/users/'
                           'gdpython/subscriptions/c0c77ca6102a7479')

response = yt_service.DeleteSubscription(sample_subscription_uri)

if response is True:
  print 'Subscription successfully deleted'

Nutzerinteraktion aktivieren

Nutzerprofile

Nutzerprofil abrufen

Wenn Sie das YouTube-Profil eines Nutzers manuell abrufen möchten, verwenden Sie den folgenden URI:

http://gdata.youtube.com/feeds/api/users/username

Sie können einen gdata.youtube.YouTubeUserEntry mit der Methode GetYouTubeUserEntry des YouTubeService-Objekts abrufen.

user_entry = yt_service.GetYouTubeUserEntry(username='gdpython')

# we can then write a helper function to print out the user details
def PrintUserEntry(entry):
  # print required fields where we know there will be information
  print 'URI: %s\n' % entry.id.text
  print 'Age: %s\n' % entry.age.text
  print 'Gender: %s\n' % entry.gender.text
  print 'Location: %s\n' % entry.location.text

  # check if there is information in the other fields and if so print it
  if user.first_name: 
    print 'First Name: %s\n' % user.first_name.text
  if user.last_name:
    print 'Last Name: %s\n' % user.last_name.text
  if user.relationship:
    print 'Relationship: %s\n' % user.relationship.text
  if user.description:
    print 'About me: %s\n' % user.description.text
  for link in user.link:
    if link.rel == 'related':
      print 'Website: %s\n' % link.href
  if user.company:
    print 'Company: %s\n' % user.company.text
  if user.occupation:
    print 'Occupation: %s\n' % user.occupation.text
  if user.school:
    print 'School: %s\n' % user.school.text
  if user.hobbies:
    print 'Hobbies: %s\n' % user.hobbies.text
  if user.movies:
    print 'Movies: %s\n' % user.movies.text
  if user.music:
    print 'Music: %s\n' % user.music.text
  if user.books:
    print 'Books: %s\n' % user.books.text
  if user.hometown:
    print 'Hometown: %s\n' % user.hometown.text

Kontakte

Die Liste der Kontakte eines bestimmten Nutzers kann über die folgende URL abgerufen werden:

http://gdata.youtube.com/feeds/api/users/username/contacts

Nutzerkontakte werden abgerufen

Mit der Methode GetYouTubeContactFeed des YouTubeService-Objekts kann ein gdata.youtube.YouTubeContactFeed mit gdata.youtube.YouTubeContactEntry-Objekten abgerufen werden.

contact_feed = yt_service.GetYouTubeContactFeed(username='GoogleDevelopers')
for entry in contact_feed.entry:
  print entry.title.text
  # find the apprpriate category element to find out the contact type
  for category in entry.category:
    if category.scheme == 'http://gdata.youtube.com/schemas/2007/contact.cat':
      print category.term

Kontakte hinzufügen

Verwenden Sie die Methode AddContact des YouTubeService-Objekts, um einem Kontaktkontakt eines Nutzers einen neuen Kontakt hinzuzufügen.

new_contact = yt_service.AddContact(contact_username='GoogleDevelopers')

if isinstance(new_contact, gdata.youtube.YouTubeContactEntry)
  print 'New contact added'

Annehmen/Ablehnen eines Kontakts

Verwenden Sie zum Aktualisieren eines Kontakts die Methode UpdateContact des YouTubeService-Objekts. Diese Methode kann verwendet werden, um Kontaktanfragen anzunehmen oder abzulehnen sowie Kontakte als „Freund“ oder „Familie“ zu kategorisieren. Im folgenden Beispiel akzeptieren wir einen Kontakt und legen dann seine Kategorie auf "Familie" fest:

# in this case user 'gdpython' has requested to be our contact
#so the original contact status is 'pending'
updated_contact = yt_service.UpdateContact('gdpython', 'accepted', 'Family')

if isinstance(updated_contact, gdata.youtube.YouTubeContactEntry)
  print 'New contact added'

Kontakt löschen

Verwenden Sie zum Löschen eines Kontakts die Methode DeleteContact des YouTubeService-Objekts und übergeben Sie den Nutzernamen des zu löschenden Kontakts.

response = yt_service.DeleteContact(contact_username='gdpython')

if response is True:
  print 'Contact deleted'

Nach oben