Przewodnik dla programistów: Python

Interfejs YouTube Data API umożliwia aplikacjom klienckim pobieranie i aktualizowanie treści YouTube w postaci kanałów interfejsu API danych Google. Aplikacja kliencka może używać kanałów interfejsu YouTube Data API do pobierania, wyszukiwania i aktualizowania filmów, komentarzy, odpowiedzi, playlist, profili użytkowników i kontaktów, a także do wyszukiwania filmów, które spełniają określone kryteria.

Przedstawimy też możliwości interfejsu YouTube Data API, a także dokumentujemy je za pomocą biblioteki klienta dla języka Python. Aby korzystać z biblioteki Pythona, potrzebujesz Pythona 2.0 lub nowszego oraz modułów Element Tree, httplib i urllib. Więcej informacji znajdziesz w sekcji Moduły zależności.

Jeśli potrzebujesz pomocy w skonfigurowaniu biblioteki klienta w Pythonie, zajrzyj do Przewodnika dla początkujących. Jeśli chcesz się dowiedzieć więcej o protokole, który jest używany przez bibliotekę klienta w języku Python do interakcji z YouTube, przeczytaj stronę protokołu.

Informacje o tym dokumencie

Odbiorcy

Ten dokument jest przeznaczony dla programistów, którzy chcą tworzyć aplikacje klienckie, które mogą współpracować z YouTube za pomocą biblioteki klienta w języku Python. Znajdziesz w nim szereg przykładów podstawowych interakcji z interfejsem API danych.

Więcej informacji znajdziesz w przewodniku po interfejsie YouTube Data API.

W tym dokumencie założono, że znasz ogólne pojęcia związane z protokołem interfejsów API danych Google i wiesz, jak programować w języku Python.

Informacje o klasach i metodach Pythona znajdziesz w narzędziach pyDokumentacja (w przypadku klasy usługi i klas danych), które znajdują się w kodzie źródłowym.

Struktura dokumentu

Niniejszy dokument obejmuje następujące sekcje:

  • W sekcji Uwierzytelnianie opisano 2 różne metody uwierzytelniania, które można powiązać z API na konkretnym koncie użytkownika. W tej sekcji opisano również różnice między uwierzytelnianiem w interfejsach YouTube Data API oraz innych interfejsach Google Data API. W tym dokumencie wyjaśnienia dotyczące poszczególnych funkcji interfejsu API będą wyraźnie wskazywały, czy dana funkcja wymaga uwierzytelniania użytkownika. Zasadniczo wszystkie żądania, które modyfikują dane filmów lub kanałów, muszą być uwierzytelnione. Żądania tylko do odczytu publicznych filmów nie wymagają uwierzytelniania.

  • Sekcja Omówienie kanałów i wpisów o filmach zawiera przykładową odpowiedź interfejsu API i wyjaśnia, jak wyodrębnić informacje o pojedynczym filmie z listy filmów lub zbioru wyników wyszukiwania. Ta sekcja wyjaśnia też, jak uzyskać dostęp do metadanych określonego filmu. W tej sekcji opisano mechanizm aktualizowania pojedynczych wpisów wideo.

  • W sekcji Pobieranie i wyszukiwanie filmów wyjaśniamy, jak pobierać konkretne listy filmów, takie jak standardowy kanał najpopularniejszych filmów w YouTube. Do innych list filmów należą filmy przesłane przez konkretnego użytkownika oraz listy podobnych filmów. W tej sekcji opisano również, jak za pomocą interfejsu API umożliwić użytkownikom wyszukiwanie w bibliotece filmów YouTube według określonych zapytań lub kategorii.

  • W sekcji Przesyłanie filmów krótko opisano dwa sposoby umożliwiające użytkownikom przesyłanie filmów do YouTube z Twojej aplikacji. Dodatkowo w tej sekcji wyjaśniamy, jak przesyłać filmy jako odpowiedzi na inne filmy.

  • W sekcji Aktualizowanie i usuwanie filmów opisano, jak za pomocą interfejsu API aktualizować informacje o filmie w YouTube. Opisuje też sposób usuwania filmu za pomocą interfejsu API.

  • W sekcji Używanie funkcji społecznościowych opisano funkcje interfejsu API, które umożliwiają użytkownikom interakcję z filmami w YouTube. Te funkcje wyjaśniają żądania przesłania oceny, komentarza lub skargi dotyczącej istniejącego filmu. Interfejs ten pozwala też pobierać listy komentarzy do filmów.

  • W sekcji Zapisywanie i zbieranie filmów wyjaśniamy, jak korzystać z interfejsu API, aby uzyskiwać dostęp do ulubionych filmów, playlist i subskrypcji oraz tworzyć i aktualizować je w kanałach YouTube. Znajdziesz tam również informacje o tym, jak modyfikować playlisty i ulubione filmy, dodając lub usuwając filmy.

  • W sekcji Włączanie interakcji użytkowników wyjaśniamy, jak za pomocą interfejsu API pobierać i aktualizować profile użytkowników. W tej sekcji wyjaśniono również, jak pobierać, dodawać, aktualizować i usuwać kontakty użytkownika.

Pierwsze kroki

Wymagania

Twoja aplikacja kliencka może używać kanałów interfejsu YouTube Data API do wyszukiwania, pobierania i aktualizowania filmów, komentarzy, odpowiedzi, playlist, subskrypcji, profili użytkowników i nie tylko.

Przedstawimy też możliwości interfejsu YouTube Data API, a także dokumentujemy je za pomocą biblioteki klienta dla języka Python. Aby korzystać z biblioteki Pythona, potrzebujesz Pythona 2.2 lub nowszego oraz modułów Element Tree, httplib i urllib. Więcej informacji znajdziesz w sekcji Moduły zależności.

Więcej informacji o konfigurowaniu środowiska znajdziesz w przewodniku dla początkujących. Jeśli chcesz się dowiedzieć więcej o protokole, który jest używany przez bibliotekę klienta w języku Python do interakcji z YouTube, przeczytaj stronę protokołu.

Podane niżej fragmenty kodu mogą zostać skopiowane lub wklejone w kodzie i zmodyfikowane odpowiednio do Twoich potrzeb.

Zanim zaczniesz wykonywać operacje za pomocą interfejsu YouTube Data API, musisz zainicjować obiekt gdata.youtube.service.YouTubeService, jak pokazano poniżej. Instrukcje import wymienione poniżej automatycznie zaimportują dane z modułów gdata.media oraz gdata.geo. Pamiętaj, że wszystkie działania inne niż pobieranie treści publicznych wymagają uwierzytelniania.

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

Większość przykładów w tym przewodniku działa w instancji gdata.youtube.service.YouTubeService. Warto przetestować nieuwierzytelnione żądania z interaktywnego interpretatora Pythona.

Uwaga: biblioteka klienta w języku Python musi zostać prawidłowo dodana do ścieżki. Zainstaluj ją za pomocą podanego skryptu setup.py. Więcej informacji znajdziesz w Przewodniku dla początkujących.

Uwierzytelnianie

Biblioteki klienta w Pythonie można używać z plikami danych publicznymi i prywatnymi. Publiczne kanały są tylko do odczytu i nie wymagają uwierzytelniania. Prywatne kanały wymagają uwierzytelnienia na serwerach YouTube.

Uwierzytelnianie może być wykonywane za pomocą uwierzytelniania ClientLogin (w przypadku aplikacji komputerowych) lub AuthSub (w przypadku aplikacji internetowych).

Ustawianie klucza programisty i identyfikatora klienta

Klucz programisty identyfikuje dewelopera YouTube, który przesyła żądanie do interfejsu API. Identyfikator klienta identyfikuje aplikację na potrzeby logowania i debugowania.

Gdy wysyłasz żądanie interfejsu API przy użyciu biblioteki klienta w Pythonie, nagłówek żądania X-GData-Key jest używany do określenia klucza programisty, a nagłówek X-GData-Client do określania identyfikatora klienta. Klucz programisty i identyfikator klienta mogą być ustawione w obiekcie YouTubeService niezależnie od używanego schematu uwierzytelniania:

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

Musisz zarejestrować się, aby uzyskać klucz programisty YouTube.

Uwierzytelnianie AuthSub w aplikacjach internetowych

Uwierzytelnianie serwera proxy AuthSub jest używane przez aplikacje internetowe, które wymagają uwierzytelniania użytkowników na kontach YouTube i Google. Operator nie potrzebuje dostępu do nazwy użytkownika ani hasła użytkownika YouTube – wymagane są tylko specjalne tokeny AuthSub.

Gdy użytkownik po raz pierwszy odwiedzi Twoją aplikację, nie zostanie on jeszcze uwierzytelniony w usługach Google. W takim przypadku musisz udostępnić mu link, który przekieruje go do Google w celu autoryzacji prośby Twoich aplikacji o dostęp do konta YouTube. Biblioteka klienta w języku Python udostępnia funkcję służącą do generowania tego adresu URL. Kod poniżej konfiguruje link do strony AuthSubRequest.

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

Zwróć uwagę na parametry wysyłane do metody GenerateAuthSubURL obiektów usługi:

  • next (następny) – adres URL strony, na którą YouTube ma przekierowywać użytkownika po udzieleniu aplikacji dostępu do jego konta.
  • zakres – wskazuje, że aplikacja będzie miała dostęp tylko do kanałów interfejsu API YouTube.
  • secure (bezpieczny) – wskazuje, że zwrócony token nie będzie bezpieczny.
  • session – wskazuje, że tego tokena można wymienić na token wielokrotnego użytku (sessions).

Zwrócony adres URL będzie wyglądać mniej więcej tak:

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

Użytkownik może kliknąć ten link, aby zalogować się na swoje konto YouTube. Gdy użytkownik autoryzuje dostęp aplikacji do swojego konta, zostanie przekierowany z powrotem na adres URL aplikacji next. Do adresu URL zostanie dodana wartość tokena jednorazowego użytku jako parametr zapytania. Adres URL wygląda mniej więcej tak:

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

W następnej sekcji dowiesz się, jak uaktualnić ten token. Fragment kodu poniżej pokazuje jeden z sposobów pobierania tego tokena z adresu URL:

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

Uaktualnianie do tokena sesji

Ze względów bezpieczeństwa ten token jest przeznaczony wyłącznie do jednorazowego użytku, więc musisz go wymienić na token sesji. Proces ten opisano w dokumentacji AuthSub. Poniższy fragment kodu pokazuje, jak uaktualnić token.

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

Wartość tego tokena reprezentuje jednorazowy token AuthSub. Ponieważ session = True jest określony powyżej, ten token można wymienić na token sesji AuthSub za pomocą metody UpgradeToSessionToken, która wywołuje usługę AuthSubSessionToken.

Twój obiekt YouTubeService jest teraz w pełni uwierzytelniony i można go używać do wykonywania kolejnych żądań przy użyciu interfejsu YouTube API. Tokeny sesji AuthSub nie będą wygasać, chyba że specjalnie poprosisz o ich unieważnienie lub użytkownik zdecyduje się odwołać dostęp na stronie Autoryzowane witryny na swoim koncie YouTube.

Uwierzytelnianie ClientLogin dla zainstalowanych aplikacji

Uwierzytelnianie ClientLogin jest używane w zainstalowanych aplikacjach, które mogą przechowywać lub wysyłać użytkownikowi zapytania o nazwę użytkownika i hasło. Aby użyć tej formy uwierzytelniania, wywołaj metodę ProgrammaticLogin YouTubeService dziedziczoną z klasy gdata.service.GDataService przez podanie identyfikatora i hasła użytkownika, w imieniu którego klient wysyła żądanie uwierzytelniania.

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()

Po ustawieniu danych logowania obiekt YouTubeService może być używany do obsługi wszystkich dalszych żądań. Aby móc przesyłać pliki i wysyłać dowolne żądania typu „zapis” (dodawanie komentarzy itp.) do interfejsu YouTube API, podczas uwierzytelniania przekazuj też klucz programisty i identyfikator klienta do obiektu yt_service:

# 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()

Obiekt YouTubeService automatycznie ustawia poprawne nagłówki X-GData-Key i X-GData-Client po ustawieniu atrybutów developer_key i client_id.

Uwaga: więcej szczegółów na temat mechanizmów AuthSub i ClientLogin znajdziesz w dokumentacji uwierzytelniania interfejsów API danych Google.

Omówienie kanałów i wpisów wideo

YouTube Data API udostępnia kilka kanałów wideo, które reprezentują listy filmów, takie jak standardowe kanały, przesłane filmy, subskrypcje i ulubione. Adres URL każdego pliku danych jest opisany w przewodniku.

Wyświetlam kanał z filmami

Wiele kanałów w interfejsie YouTube API składa się z wpisów wideo. Te kanały można po prostu modelować jako obiekty gdata.youtube.YouTubeVideoFeed, z których każdy zawiera kilka obiektów gdata.youtube.YouTubeVideoEntry. Każdy film odpowiada dokładnie 1 filmowi w YouTube i zawiera informacje na jego temat.

Podstawowa struktura pobierania listy filmów to utworzenie adresu URL do kanału wideo, a następnie przetwarzanie poszczególnych wpisów w sposób opisany poniżej:

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

Sekcja Pobieranie i wyszukiwanie filmów zawiera szczegółowe informacje o wielu popularnych adresach URL kanałów i sposobach pobierania różnych kanałów.

Pobieranie konkretnego wpisu wideo

Możesz pobrać tylko informacje dotyczące konkretnego wpisu wideo, jeśli znasz jego identyfikator. Adres URL wpisu zależy od identyfikatora filmu:

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

Ten kod pobiera tag gdata.youtube.YouTubeVideoEntry odpowiadający filmowi w YouTube:

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

Treść filmu

Z obiektu gdata.youtube.YouTubeVideoEntry można pobrać wiele metadanych, np. miniatury, adresy URL odtwarzaczy i czas trwania filmu. Poniższy kod pokazuje, jak uzyskać dostęp do niektórych z tych informacji. Biblioteka klienta Pythona wyodrębnia większość tej funkcji, mapując elementy XML na klasy. Najważniejsze informacje o wpisie YouTubeVideoEntry są dostępne w elementach podrzędnych atrybutu media (zawierających obiekt gdata.media.Group) we wpisie (reprezentujących element XML media:group). Oto przykład pobierania metadanych:

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

Uwaga: więcej informacji o generowaniu informacji wymaganych do umieszczenia filmu na stronie przy użyciu odtwarzacza można znaleźć w przewodniku po protokołach.

Pobieranie i wyszukiwanie filmów

Pobieranie standardowych plików danych

Interfejs YouTube Data API udostępnia standardowy kanał najpopularniejszych filmów w YouTube. Interfejs API obsługiwał wcześniej inne standardowe pliki danych, które zostały już wycofane. Więcej informacji znajdziesz w przewodniku dla programistów.

Adres URL kanału najpopularniejszych filmów w YouTube ma następujący format:

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

Uwaga: możesz też pobierać standardowe pliki danych dla danego języka za pomocą identyfikatora lokalizacji w formacie http://gdata.youtube.com/feeds/api/standardfeeds/localeID/feedID. Na przykład najpopularniejsze filmy w Japonii to: http://gdata.youtube.com/feeds/api/standardfeeds/JP/most_popular. Pełną listę domniemanych identyfikatorów regionalnych znajdziesz w przewodniku.

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))

Pobieranie filmów przesłanych przez określonego użytkownika

Każdy użytkownik YouTube ma powiązany kanał wideo odpowiadający przesłanym przez siebie filmom, który znajduje się na stronie http://gdata.youtube.com/feeds/api/users/username/uploads. Ten kod pokazuje, jak pobrać i wyświetlić plik danych przesłany przez użytkownika:

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))

Uwaga: aby pobierać filmy obecnie uwierzytelnionego użytkownika, możesz też używać ciągu „domyślnego” zamiast username.

Aby pobrać podobne filmy, prześlij identyfikator filmu z obiektu gdata.youtube.YouTubeVideoEntry do metody GetYouTubeRelatedVideoFeed obiektu gdata.youtube.service.YouTubeService. Pobiera obiekt YouTubeVideoFeed zawierający powiązane wpisy.

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

Wyszukiwanie filmów

Interfejs API danych YouTube umożliwia zażądanie zestawu wpisów spełniających określone kryteria, na przykład żądanie filmów opublikowanych przez określonego autora, formatu filmu lub zawierających określone słowo kluczowe. Aby to zrobić, musisz utworzyć obiekt gdata.service.YouTubeVideoQuery z określonymi kryteriami wyszukiwania i przekazać go do metody YouTubeQuery metody gdata.youtube.service.YouTubeService.

Przykład poniżej pokazuje, jak wykonać zapytanie, którego wyniki są posortowane według liczby wyświetleń. Obejmuje to też filmy z ograniczeniami (w interfejsie API określane jako „Racy”):

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)

Za konstruowanie adresów URL kanałów odpowiadają: klasa gdata.service.Query i podklasy takie jak YouTubeVideoQuery. Podany wyżej atrybut VideoQuery odpowiada adresowi URL:

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

Oto kilka najpopularniejszych właściwości YouTubeVideoQuery do ustawiania parametrów wyszukiwania:

author
Ustawia autora wpisu. Autor jest synonimem nazwy użytkownika YouTube.
format
Określa format wideo. Akceptuje parametry liczbowe, aby określić jeden z dwóch rodzajów adresów URL strumienia RTSP do odtwarzania filmów na urządzeniach mobilnych lub adres URL HTTP dla umieszczonego odtwarzacza Flash.
racy
Wskazuje, czy wynik powinien zawierać objęte ograniczeniami treści. Akceptuje tylko 2 parametry: „uwzględnij” lub „wyklucz”.
max_results
Określa maksymalną liczbę wpisów, które mają być zwracane jednocześnie.
start_index
Ustawia indeks pierwszego wyniku do pobrania (w przypadku stronicowania).
orderby
Ustala kolejność wyświetlania wpisów, na przykład relevance, viewCount, published lub rating.
time
Określa przedział czasu, w którym mają być ograniczone wyniki standardowych plików danych: today, this_week, this_month lub all_time.
vq
Określa wyszukiwane hasło. Wyszukiwanie określonego ciągu we wszystkich metadanych filmu, takich jak tytuły, tagi i opisy.

Uwaga: więcej informacji o parametrach zapytania znajdziesz w Przewodniku po interfejsach YouTube Data API i przewodniku po interfejsach API danych Google.

Wyszukiwanie za pomocą kategorii i słów kluczowych

Możesz ograniczyć wyniki wyszukiwania tak, aby wyświetlały się tylko filmy pasujące do danego zestawu kategorii i słów kluczowych. Przewodnik referencyjny zawiera informacje o tym, jak określać zarówno wstępnie zdefiniowane kategorie YouTube, takie jak Muzyka, Ludzie i Blogi, jak i słowa kluczowe (tagi) zdefiniowane przez użytkownika.

Poniższy kod pokazuje, jak wyszukiwać przy użyciu słów kluczowych (tagów), zmieniając wyszukiwane hasła na małe litery. Uwaga: niektóre słowa (np. „komedia”) mogą być zarówno kategoriami YouTube, jak i słowami kluczowymi. Kategoria i zapytanie są stosowane w kontekście kategorii „YouTube”, a małych słów („komedia”) – słów kluczowych.

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)

Wyszukiwanie według tagów programisty

Tagi programisty to dodatkowe, ukryte słowa kluczowe, których deweloper może używać do tagowania treści przesłanych przez użytkowników przez ich aplikacje. Tagi programisty są dopasowywane do klucza programisty ustawionego w nagłówkach podczas przesyłania. Te słowa kluczowe nie będą widoczne publicznie i mogą być wykorzystywane do pobierania filmów. Aby wyszukać filmy według określonego tagu programisty, wyślij ogólne żądanie wyszukiwania do interfejsu YouTube Data API, używając klucza programisty. Pamiętaj, aby określić schemat kategorii i tag programisty, do których filmy muszą pasować. Możesz pobrać kanał z filmami pasującymi do Twojego tagu dewelopera (w tym przykładzie „Twoje_tag_tagi”):

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))

Przesyłanie filmów wideo

Sprawdź, czy diagramy w przewodniku po protokole są ogólne. Filmy można przesyłać na 2 sposoby:

  • przesyłając film bezpośrednio z serwerów za pomocą przesyłania bezpośredniego.
  • lub wysyłając metadane, a następnie użytkownik może przesłać film bezpośrednio do YouTube, korzystając z metody przesyłania opartej na przeglądarce.

Przesyłanie bezpośrednie

Aby przesłać film, musisz najpierw utworzyć nowy obiekt gdata.youtube.YouTubeVideoEntry, przekazując do niego obiekt gdata.media.Group zawierający wymagane metadane. Poniższy przykład pokazuje przesyłanie filmu Quicktime „mytestmovie.mov” do YouTube o następujących właściwościach:

WłaściwośćWartość
TytułMój film testowy
KategoriaAutomatycznie
Słowa kluczowesamochody, śmieszne
DescriptionMój opis
Nazwa plikumytestmovie.mov
Typ MIME plikuwideo/krótki czas
Film prywatny?fałsz
Lokalizacja filmu37,-122 (lata,długi)
Tagi programistydeweloper_tagu, innydeweloper

Kod poniżej tworzy pusty plik YouTubeVideoEntry do przesłania. Metoda InsertVideoEntry w YouTubeService wymaga tych parametrów:

  • video_entry – obiekt gdata.youtube.VideoEntry zawierający metadane
  • filename_or_handle – obiekt przypominający plik lub nazwa pliku, z którego zostanie odczytany film.
  • youtube_username – opcjonalny ciąg znaków określający nazwę użytkownika, na który ma zostać przesłany film. Oczywiście musisz mieć na koncie odpowiednie uprawnienia. Domyślnie są to konta aktualnie uwierzytelnionego użytkownika.
  • content_type – opcjonalny ciąg znaków określający typ MIME filmu, który chcesz przesłać.
Pamiętaj, że w tych przykładach zmienna yt_service odnosi się do w pełni uwierzytelnionego obiektu YouTubeService.

# 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)

Jeśli chcemy oznaczyć film tagiem opcjonalnym tagiem programisty (więcej informacji znajdziesz w sekcji Wyszukiwanie według tagów programisty), przed wykonaniem wywołania do InsertVideoEntry moglibyśmy użyć metody AddDeveloperTags:

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

Uwaga: aby przesyłać filmy jako prywatne, musisz przekazać atrybut prywatny do gdata.media.Group:

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)

Przesyłanie w przeglądarce

Przesyłanie oparte na przeglądarce odbywa się prawie tak samo jak w przypadku przesyłania bezpośredniego, z tą różnicą, że plik binarny nie przesyłasz w tym samym żądaniu, którego używasz do przesłania metadanych. Zamiast tego wystarczy utworzyć kolumnę YouTubeVideoEntry, która zawiera tylko metadane. Zgłoszenie filmu zostanie opublikowane pod specjalnym linkiem na serwerze YouTube API. Odpowiedź XML zawiera atrybuty token i url, które można wykorzystać do przesłania pliku binarnego przy użyciu standardowego formularza HTML.

# 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]

Powyższy kod wyświetla link i token, który służy do stworzenia formularza HTML wyświetlanego w przeglądarce użytkownika. Poniżej znajduje się prosty formularz z elementem youtube_token reprezentującym zawartość zwróconego elementu tokena, jak pokazano powyżej z YouTubeVideoEntry. Aby po przesłaniu formularza użytkownik był przekierowywany do Twojej witryny, dołącz do tagu post_url parametr next (jak pokazano poniżej), który działa tak samo jak parametr next linku AuthSub. Jedyna różnica polega na tym, że zamiast tokena jednorazowego zwracane są parametry status i id jako parametry adresu URL.

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)

Odpowiedź o przesłanie będzie wyglądać tak:

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

Parametr status zwraca stan transakcji HTTP przesłanej transakcji. Parametr id zwraca identyfikator filmu w YouTube, który został przypisany do przesłanego filmu.

Sprawdzam stan przesyłania

Gdy prześlesz film, od razu stanie się on widoczny na karcie Przesłane przez uwierzytelnionego użytkownika. Jednak dopóki nie zostanie przetworzona, nie będzie widoczna publicznie w witrynie. Filmy, które zostały odrzucone lub których nie udało się przesłać, znajdują się tylko w kanale przesyłanych uwierzytelnionych użytkowników. Ten kod pozwala sprawdzić stan zasobu YouTubeVideoEntry, aby dowiedzieć się, czy nie jest on jeszcze aktywny lub został odrzucony.

upload_status = yt_service.CheckUploadStatus(new_entry)

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

Aktualizowanie i usuwanie filmów

Aktualizowanie informacji o filmie

Aby zaktualizować metadane, określ obiekt YouTubeVideoEntry, a następnie użyj metody UpdateVideoEntry obiektów YouTubeService. Ta metoda przyjmuje jako parametr YouTubeVideoEntry ze zaktualizowanymi metadanymi.

# 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)

Usuwanie filmu wideo

Usunięcie filmu jest bardzo proste – wymaga tylko wywołania DeleteVideoEntry obiektu YouTubeService.

response = yt_service.DeleteVideoEntry(entry_to_be_deleted)

if response:
  print 'Video successfully deleted!'

Korzystanie z funkcji społecznościowych

Dodawanie oceny

Aby ocenić film, użyj metody AddRating obiektu YouTubeService. Pamiętaj, że nie możesz oceniać własnych filmów, a oceny muszą mieścić się w przedziale od 1 do 5 (włącznie):

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

Komentarze

Pobieranie komentarzy do filmu

Biorąc pod uwagę obiekt YouTubeVideoEntry lub prosty identyfikator filmu, możesz pobrać i wydrukować kanał zawierający komentarze do filmu za pomocą metody GetYouTubeVideoCommentFeed obiektu YouTubeService. Powstały w ten sposób plik gdata.youtube.YouTubeCommentFeed składa się z obiektów gdata.youtube.YouTubeCommentEntry. Plik danych można analizować jak każdy inny plik danych:

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

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

Dodawanie komentarza

Aby dodać nowy komentarz, użyj metody AddComment obiektu YouTubeService. Metoda wymaga pełnego obiektu YouTubeVideoEntry, który zostanie skomentowany, a także ciągu reprezentującego komentarz:

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)

Odpowiedzi wideo

Odpowiedź wideo w YouTube to film, który został powiązany w odpowiedzi z drugim filmem. Funkcja odpowiedzi wideo została wycofana zgodnie z opisem w tym ogłoszeniu. Chociaż istniejące odpowiedzi wideo są nadal dostępne, YouTube nie obsługuje już możliwości pobierania listy odpowiedzi wideo, przesyłania nowych odpowiedzi wideo ani usuwania odpowiedzi wideo. Możesz jednak usunąć film użyty w odpowiedzi wideo. Dlatego też te funkcje nie są już obsługiwane w interfejsie API.

Żądania API do operacji odpowiedzi wideo teraz zwracają:

  • Żądanie pobrania odpowiedzi wideo dotyczące filmu zwraca pustą listę.
  • Żądanie dodania odpowiedzi wideo zwraca kod odpowiedzi HTTP 403.
  • Żądanie usunięcia odpowiedzi wideo zwraca kod odpowiedzi HTTP 403.

Zgłaszanie filmu

Skargę dotyczącą filmu można dodać, korzystając z metody AddComplaint w obiekcie YouTubeService. Skarga musi być prawidłową kategorią. Więcej informacji znajdziesz w sekcji Dodawanie skargi w przewodniku po protokole.

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)

Zapisywanie i zbieranie filmów

Ulubione filmy

Pobieranie ulubionych filmów użytkownika

Użytkownicy YouTube mogą oznaczać filmy do obejrzenia jako ulubione. Ogólna lokalizacja ulubionego kanału użytkownika to ten adres URL.

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

Aby pobrać ulubione filmy użytkownika, użyj metody GetUserFavoritesFeed obiektu YouTubeService. Metoda pobiera opcjonalny ciąg znaków jako parametr reprezentujący nazwę użytkownika YouTube użytkownika, którego ulubiony kanał ma zostać pobrany.

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

Zwracany kanał to zwykły kanał wideo zawierający obiekty YouTubeVideoEntry.

Uwaga: możesz też przekazać ciąg default, aby pobrać ulubione treści aktualnie uwierzytelnionego użytkownika. Jest to domyślne działanie metody GetUserFavoritesFeed, jeśli nie podano nazwy użytkownika.

Dodawanie ulubionego miejsca

Aby dodać ulubiony film, użyj metody AddVideoEntryToFavorites obiektu YouTubeService. Parametry to parametr YouTubeVideoEntry, który ma zostać dodany, oraz opcjonalnie nazwa użytkownika, do której ma zostać dodany ulubiony element (domyślnie jest to obecnie uwierzytelniony użytkownik).

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'

Usuwanie ulubionego miejsca

Aby usunąć ulubiony obiekt, użyj metody DeleteVideoEntryFromFavorites obiektu YouTubeService.

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

w playlistach.

Każdy użytkownik YouTube ma kanał playlist, który zawiera wszystkie utworzone przez niego playlisty. Każda playlista zawiera kanał dla wszystkich znajdujących się na niej filmów.

Pobieranie playlist użytkowników

Aby ręcznie pobrać listę wszystkich playlist użytkownika, użyj następującego adresu URL:

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

Korzystając z biblioteki klienta w Pythonie, możesz użyć metody GetYouTubePlaylistFeed obiektu YouTubeService:

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')

Uwaga: zamiast przekazywać określoną nazwę użytkownika (np. „gdpython” z powyższego przykładu), możesz przekazać ciąg 'default', aby odwoływać się do obecnie uwierzytelnionego użytkownika.

gdata.youtube.YouTubePlaylistFeed reprezentuje kanał gdata.youtube.YouTubePlaylistEntry obiektów. Określają one poszczególne playlisty użytkownika. Pozycje filmu na danej playliście są przedstawiane jako obiekty gdata.youtube.YouTubePlaylistVideoEntry. Te obiekty są bardzo podobne do zwykłych obiektów gdata.youtube.YouTubeVideoEntry, ale istnieje kilka wyjątków. Do filmów można stosować niestandardowe tytuły i opisy, a pole pozycji wskazuje miejsce pojawienia się filmu na playliście.

Pobieranie informacji o playliście

Biorąc pod uwagę YouTubePlaylistEntry (reprezentujący konkretną playlistę), możesz uzyskać YouTubePlaylistVideoFeed zawierający obiekty YouTubePlaylistVideoEntry. Jak wyjaśniliśmy powyżej, obiekty te reprezentują poszczególne filmy na playliście (z opcjonalnymi tytułami i opisami niestandardowymi). Możesz go uzyskać, przekazując identyfikator URI playlisty do metody GetYouTubePlaylistVideoFeed obiektu YouTubeService:

# 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

Dodawanie playlisty

Aby dodać nową playlistę, użyj metody AddPlaylist obiektu YouTubeService. Ta metoda przyjmuje następujące parametry: playlist_title, playlist_description (oba ciągi) i opcjonalnie wartość logiczną True, jeśli playlista ma być prywatna.

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'

Aktualizowanie playlisty

Aby zaktualizować playlistę, użyj metody UpdatePlaylist obiektu YouTubeService. Metoda wybiera te parametry: identyfikator playlisty do zaktualizowania, nowy tytuł, nowy opis, opcjonalną wartość logiczną do oznaczenia playlisty jako prywatnej i opcjonalny ciąg wskazujący nazwę użytkownika, do którego należy playlista. Ciąg zostanie domyślnie przypisany do aktualnie uwierzytelnionego użytkownika.

# 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)

Dodałem film do playlisty

Aby dodać film do playlisty, użyj metody AddPlaylistVideoEntryToPlaylist obiektu YouTubeService. Poniższy kod pozwala dodać film do playlisty o niestandardowym tytule i opisie.

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'

Uwaga: pamiętaj, że niestandardowy tytuł i opis nie są wymagane. Jeśli nie zostaną podane, użyjemy faktycznego tytułu i opisu filmu.

Edytuj informacje o filmie na playliście

Aby zmienić metadane dla elementu YouTubePlaylistVideoEntry, użyj metody UpdatePlaylistVideoEntryMetaData obiektu YouTubeService. W przykładzie poniżej postanowiliśmy nadać filmowi nowy tytuł i przenieść go na pierwszą pozycję (pozycja 1) na naszej playliście.

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)

Uwaga: jeśli chcesz przywrócić opis i tytuł filmu do playlisty, aby przywrócić oryginalne metadane, po prostu przekaż NULL w przypadku tytułu i opisu.

Usuń film z playlisty

Aby usunąć film z playlisty, użyj metody DeletePlaylistVideoEntry obiektu YouTubeService. Ta metoda wymaga usunięcia identyfikatora URI playlisty, która zawiera dany wpis, oraz jego identyfikatora:

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'

Usuwanie playlisty

Aby usunąć playlistę, użyj metody DeletePlaylist obiektu YouTubeService, podając identyfikator URI playlisty do usunięcia:

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

if response is True:
  print 'Playlist successfully deleted'

Subskrypcje

Aby pobrać listę kanałów, wyszukiwań i ulubionych kanałów subskrybowanych przez danego użytkownika, użyj tego identyfikatora URI:

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

Uwaga: możesz też przekazać ciąg default, aby pobrać ulubione treści aktualnie uwierzytelnionego użytkownika.

Pobieram subskrypcje użytkowników

Poniższy kod pokazuje, jak pobrać i wydrukować listę subskrypcji dla danego użytkownika. Subskrypcje są przedstawione jako gdata.youtube.YouTubeSubscriptionFeed składające się z obiektów gdata.youtube.YouTubeSubscriptionEntry. Aby pobrać subskrypcje, użyj metody GetYouTubeSubscriptionFeed obiektu YouTubeService, przekazując identyfikator URI kanału subskrypcji lub nazwę użytkownika, którego kanał subskrypcji chcesz pobierać. Domyślny parametr nazwy użytkownika to obecnie uwierzytelniony użytkownik.

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()

Dodawanie subskrypcji

Nową subskrypcję możesz utworzyć, wstawiając nowy plik YouTubeSubsciptionEntry w kanale subskrypcji uwierzytelnionego użytkownika. Możemy utworzyć 3 typy subskrypcji: subskrypcję kanału użytkownika (przy użyciu AddSubscriptionToChannel), subskrypcję ulubionych użytkowników (przy użyciu AddSubscriptionToFavorites lub subskrypcję konkretnego słowa kluczowego (przy użyciu AddSubscriptionToQuery). Ten kod pozwala zasubskrybować uwierzytelnionego użytkownika do kanału „GoogleDevelopers”.

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

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

Możesz też zasubskrybować ulubione użytkownika „Google Developers”:

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

Możesz też zasubskrybować konkretne wyszukiwane słowa. Subskrybujemy teraz zapytanie dotyczące filmów oznaczonych tagiem „python”.

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

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

Usuwanie subskrypcji

Aby usunąć subskrypcję użytkownika, użyj metody DeleteSubscription obiektu YouTubeService.

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'

Umożliwianie użytkownikowi interakcji

Profile użytkowników

Pobieranie profilu użytkownika

Aby ręcznie pobrać profil użytkownika YouTube, użyj następującego identyfikatora URI:

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

gdata.youtube.YouTubeUserEntry możesz pobrać metodą GetYouTubeUserEntry obiektu YouTubeService.

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

Kontakty

Listę kontaktów dla danego użytkownika można pobrać przy użyciu następującego adresu URL:

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

Pobieranie kontaktów użytkownika

Za pomocą metody GetYouTubeContactFeed obiektu YouTubeService można pobierać obiekty gdata.youtube.YouTubeContactFeed składające się z obiektów gdata.youtube.YouTubeContactEntry.

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

Dodawanie kontaktu

Aby dodać nowy kontakt do pliku danych kontaktów użytkowników, użyj metody AddContact obiektu YouTubeService.

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

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

Akceptowanie/odrzucanie kontaktu

Aby zaktualizować kontakt, użyj metody UpdateContact obiektu YouTubeService. Tej metody można używać do akceptowania/odrzucania próśb o kontakty oraz kategoryzowania kontaktów jako „Znajomych” lub „Rodzina”. W przykładzie poniżej akceptujemy kontakt, a następnie wybieramy jego kategorię „Rodzina”:

# 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'

Usuwanie kontaktu

Aby usunąć kontakt, użyj metody DeleteContact obiektu YouTubeService, przekazując nazwę użytkownika kontaktu, który chcesz usunąć.

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

if response is True:
  print 'Contact deleted'

Powrót do góry