Przewodnik dla programistów: Python

Interfejs YouTube Data API umożliwia aplikacjom klienta pobieranie i aktualizowanie treści YouTube w postaci plików danych Google Data API. Twoja 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 oraz kontaktów użytkowników, a także do wyszukiwania filmów spełniających określone kryteria.

Ten dokument zawiera informacje o możliwościach interfejsu YouTube Data API oraz przykłady interakcji z interfejsem API przy użyciu biblioteki klienta Pythona. Aby korzystać z biblioteki klienta w Pythonie, musisz mieć zainstalowaną wersję Python 2.0 lub nowszą oraz moduły Element Tree, httplib i urllib. Więcej informacji znajdziesz w artykule Moduły zależności.

Jeśli potrzebujesz pomocy przy konfigurowaniu biblioteki klienta Pythona, zapoznaj się z przewodnikiem na temat korzystania z niej. Jeśli chcesz dowiedzieć się więcej o podstawowym protokole używanym przez bibliotekę klienta Pythona do interakcji z YouTube, zapoznaj się z stroną z protokołami w Przewodniku dla programistów.

Informacje o tym dokumencie

Odbiorcy

Ten dokument jest przeznaczony dla programistów, którzy chcą pisać aplikacje klienta, które mogą wchodzić w interakcje z YouTube za pomocą biblioteki klienta w Pythonie. Zawiera on serię przykładów podstawowych interakcji z interfejsem API danych.

Informacje referencyjne dotyczące interfejsu YouTube Data API znajdziesz w przewodniku referencyjnym.

W tym dokumencie zakładamy, że rozumiesz ogólne założenia protokołu interfejsów Google Data API i wiesz, jak programować w Pythonie.

Informacje referencyjne o klasach i metodach Pythona znajdziesz w dokumentacji pyDocs (dotyczącej klasy usługi oraz klas danych) dołączonej do kodu źródłowego.

Struktura dokumentu

Niniejszy dokument obejmuje następujące sekcje:

  • W sekcji Uwierzytelnianie opisano 2 różne metody uwierzytelniania dostępne do kojarzenia operacji interfejsu API z konkretnym kontem użytkownika. W tej sekcji opisaliśmy też różnice między uwierzytelnianiem w interfejsie YouTube Data API a innymi interfejsami Google Data API. W całym tym dokumencie w opisach poszczególnych funkcji interfejsu API wyraźnie zaznaczono, czy dana funkcja wymaga uwierzytelniania użytkownika. Ogólnie rzecz biorąc, wszystkie żądania, które modyfikują dane filmu lub kanału, muszą być uwierzytelniane. Prośby o dostęp tylko do odczytu do publicznych filmów nie wymagają uwierzytelniania.

  • W sekcji Informacje o kanałach i elementach danych filmów znajdziesz przykładową odpowiedź interfejsu API oraz wyjaśnienie, jak wyodrębnić informacje o pojedynczym filmie z listy filmów lub zestawu wyników wyszukiwania. Z tej sekcji dowiesz się też, jak uzyskać dostęp do metadanych dotyczących konkretnego wpisu wideo. W tej sekcji wyjaśniamy, jak zaktualizować poszczególny wpis dotyczący filmu.

  • W sekcji Pobieranie i wyszukiwanie filmów znajdziesz informacje o tym, jak pobierać określone listy filmów, np. standardowy kanał z najpopularniejszymi filmami w YouTube. Inne listy filmów obejmują filmy przesłane przez konkretnego użytkownika oraz listy filmów powiązanych z konkretnym filmem. Z tej sekcji dowiesz się też, jak używać interfejsu API, aby umożliwić użytkownikom wyszukiwanie filmów w bibliotece YouTube według określonych haseł lub kategorii.

  • W sekcji Przesyłanie filmów znajdziesz krótki opis 2 sposobów, w jakie użytkownicy mogą przesyłać filmy do YouTube z Twojej aplikacji. W tej sekcji znajdziesz też instrukcje przesyłania filmów jako odpowiedzi na inne filmy.

  • W sekcji Aktualizowanie i usuwanie filmów opisano, jak używać interfejsu API do aktualizowania informacji o filmie w YouTube. Dowiesz się z niego też, jak usunąć film za pomocą interfejsu API.

  • W sekcji Korzystanie z funkcji społecznościowych opisano funkcje interfejsu API, które umożliwiają użytkownikom interakcję z filmami w YouTube. Te funkcje wyjaśniają prośby o opublikowanie oceny, komentarza lub skargi dotyczącego istniejącego filmu. Interfejsu API możesz też używać do pobierania list komentarzy do filmów.

  • W sekcji Zapisywanie i zbieranie filmów znajdziesz informacje o tym, jak używać interfejsu API do tworzenia i aktualizowania ulubionych filmów, playlist oraz subskrypcji kanałów YouTube oraz do uzyskiwania do nich dostępu. Dowiesz się też, jak modyfikować playlisty i ulubione filmy przez dodawanie i usuwanie filmów.

  • W sekcji Włączanie interakcji z użytkownikiem wyjaśniono, jak używać interfejsu API do pobierania i aktualizowania profili użytkowników. W tej sekcji znajdziesz też informacje o wybieraniu, dodawaniu, aktualizowaniu i usuwaniu kontaktów użytkowników.

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 innych elementów.

Ten dokument zawiera informacje o możliwościach interfejsu YouTube Data API oraz przykłady interakcji z interfejsem API przy użyciu biblioteki klienta Pythona. Aby korzystać z biblioteki klienta w Pythonie, musisz mieć zainstalowaną wersję Python 2.2 lub nowszą oraz moduły Element Tree, httplib i urllib. Więcej informacji znajdziesz w artykule Moduły zależności.

Więcej informacji o konfigurowaniu środowiska znajdziesz w przewodniku Pierwsze kroki. Jeśli chcesz dowiedzieć się więcej o podstawowym protokole używanym przez bibliotekę klienta Pythona do interakcji z YouTube, zapoznaj się z stroną z protokołami w Przewodniku dla deweloperów.

Fragmenty kodu poniżej możesz skopiować i wkleić do swojego kodu, a następnie zmodyfikować zgodnie z potrzebami.

Zanim wykonasz jakiekolwiek operacje za pomocą interfejsu YouTube Data API, musisz zainicjować obiekt gdata.youtube.service.YouTubeService, jak pokazano poniżej. Zawartość poniżej wymienionych instrukcji import zostanie automatycznie zaimportowana z modułów gdata.mediagdata.geo. Pamiętaj, że wszystkie działania oprócz pobierania treści publicznych wymagają uwierzytelnienia.

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 metod w tym przewodniku działa na przykładzie gdata.youtube.service.YouTubeService. Warto przetestować żądania bez uwierzytelniania za pomocą interaktywnego interpretera Pythona.

Uwaga: biblioteka klienta Pythona musi być prawidłowo dodana do ścieżki. Pamiętaj, aby zainstalować go, uruchamiając dostarczony skrypt setup.py. Więcej informacji znajdziesz w przewodniku po rozpoczęciu.

Uwierzytelnianie

Biblioteki klienta Python można używać do pracy z publicznymi i prywatnymi plikami danych. Publiczne pliki danych są tylko do odczytu i nie wymagają uwierzytelniania. Aby korzystać z plików danych prywatnych, musisz się uwierzytelnić na serwerach YouTube.

Uwierzytelnianie może być przeprowadzane za pomocą ClientLogin (w przypadku aplikacji na komputery) lub AuthSub (w przypadku aplikacji internetowych).

Konfigurowanie klucza dewelopera i identyfikatora klienta

Klucz dewelopera identyfikuje dewelopera YouTube, który przesyła żądanie interfejsu API. Identyfikator klienta służy do identyfikowania Twojej aplikacji na potrzeby rejestrowania i debugowania.

Gdy wysyłasz żądanie interfejsu API za pomocą biblioteki klienta Pythona, nagłówek żądania X-GData-Key służy do określania klucza programisty, a nagłówek X-GData-Client – identyfikatora klienta. Klucz dewelopera i identyfikator klienta można ustawić w obiekcie YouTubeService niezależnie od używanego schematu uwierzytelniania:

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

Musisz zarejestrować klucz dewelopera YouTube.

uwierzytelnianie AuthSub w przypadku aplikacji internetowych;

Uwierzytelnianie proxy AuthSub jest używane przez aplikacje internetowe, które muszą uwierzytelniać użytkowników na kontach YouTube lub Google. Operator nie musi mieć dostępu do nazwy użytkownika i hasła konta YouTube – wymagane są tylko specjalne tokeny AuthSub.

Gdy użytkownik po raz pierwszy odwiedza Twoją aplikację, nie jest jeszcze uwierzytelniony przez usługi Google. W takim przypadku musisz podać użytkownikowi link, który przekieruje go do Google, gdzie będzie mógł zatwierdzić prośbę aplikacji o dostęp do jego konta YouTube. Biblioteka klienta Pythona udostępnia funkcję do generowania tego adresu URL. Podany niżej kod tworzy 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 – adres URL strony, na którą YouTube powinien przekierować użytkownika po udzieleniu przez niego aplikacji uprawnień dostępu do konta.
  • zakres – wskazuje, że aplikacja będzie mieć dostęp tylko do kanałów interfejsu YouTube API.
  • secure (bezpieczny) – oznacza, że zwrócony token nie będzie bezpieczny.
  • session – wskazuje, że ten token można wymienić na token wielokrotnego użytku (sesji).

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ąć link, aby zalogować się na swoje konto YouTube. Gdy użytkownik autoryzuje Twoją aplikację do uzyskania dostępu do jego konta, zostanie przekierowany z powrotem do adresu URL next. Do adresu URL zostanie dołączona 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 pokażemy, jak uaktualnić ten token. Fragment kodu poniżej pokazuje jeden ze sposobów pobierania tego tokena z adresu URL:

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

Przejście na token sesji

Ze względów bezpieczeństwa ten token jest jednorazowy, więc musisz teraz wymienić go na token sesji. Ten proces jest opisany w dokumentacji AuthSub. Ten fragment kodu pokazuje, jak uaktualnić token.

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

Ta wartość tokena reprezentuje token AuthSub jednorazowego użytku. Ponieważ session = True zostało określone powyżej, ten token można zamienić na token sesji AuthSub za pomocą metody UpgradeToSessionToken, która wywołuje usługę AuthSubSessionToken.

Obiekt YouTubeService jest teraz w pełni uwierzytelniony i można go używać do wykonywania wszystkich kolejnych żądań w interfejsie YouTube API. Tokeny sesji AuthSub nie wygasną, chyba że prześlesz prośbę o ich odwołanie lub użytkownik zdecyduje się na odwołanie dostępu na stronie Autoryzowane witryny na swoim koncie YouTube.

uwierzytelnianie za pomocą ClientLogin w przypadku zainstalowanych aplikacji;

Uwierzytelnianie za pomocą ClientLogin jest używane w zainstalowanych aplikacjach, które mogą przechowywać nazwę użytkownika i hasło lub prosić o ich podanie. Aby użyć tej formy uwierzytelniania, wywołaj metodę ProgrammaticLogin klasy YouTubeService odziedziczonej z klasy gdata.service.GDataService, podając identyfikator i hasło użytkownika, w którego imieniu Twój 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 kolejnych żądań. Aby móc przesyłać treści i wysyłać do interfejsu YouTube API dowolne żądania typu „write” (np. dodawanie komentarzy), podczas uwierzytelniania prześlij również klucz dewelopera 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, gdy atrybuty developer_key i client_id są ustawione.

Uwaga: aby uzyskać szczegółowe informacje o mechanizmach AuthSub i ClientLogin, zapoznaj się z dokumentacją dotyczącą uwierzytelniania w interfejsach Google Data API.

Informacje o plikach danych i rekordach wideo

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

wyświetlanie kanału wideo;

Wiele kanałów w interfejsie YouTube API składa się z elementów wideo. Te pliki danych można najłatwiej modelować jako obiekty gdata.youtube.YouTubeVideoFeed, z których każdy zawiera pewną liczbę obiektów gdata.youtube.YouTubeVideoEntry. Każdy wpis dotyczący filmu odpowiada dokładnie 1 filmowi w YouTube i zawiera informacje o tym filmie.

Podstawowa struktura pobierania listy filmów polega na tworzeniu adresu URL kanału wideo, a następnie przetwarzaniu wpisów pojedynczo, podobnie jak w tym kodzie:

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

W sekcji Pobieranie i wyszukiwanie filmów znajdziesz informacje o wielu typowych adresach URL kanałów oraz o tym, jak pobierać różne kanały z filmami.

Pobieranie konkretnego wpisu dotyczącego filmu

Jeśli znasz identyfikator filmu, możesz pobrać tylko informacje o danym filmie. Adres URL wpisu jest oparty na identyfikatorze filmu:

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

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

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

Treść zgłoszenia wideo

Z obiektu gdata.youtube.YouTubeVideoEntry można pobrać wiele metadanych, takich jak miniatury, adresy URL odtwarzacza i czas trwania filmu. Poniższy kod pokazuje, jak uzyskać niektóre z tych informacji. Biblioteka klienta Python abstrakcyjnie obsługuje większość tych funkcji, mapując elementy XML na klasy. Większość ważnych informacji o pozycji YouTubeVideoEntry jest dostępna z elementów podrzędnych atrybutu media (zawierającego obiekt gdata.media.Group) w postanowieniu (reprezentującym element XML media:group). Oto przykład sposobu pobierania metadanych filmu:

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 wymaganych informacji do umieszczenia filmu z odtwarzaczem na stronie znajdziesz w przewodniku po protokole.

Pobieranie i wyszukiwanie filmów

Pobieranie standardowych plików danych

Interfejs YouTube Data API udostępnia standardowy kanał z najpopularniejszymi filmami w YouTube. Interfejs API obsługiwał wcześniej inne standardowe pliki danych, które zostały od tego czasu wycofane. Więcej informacji znajdziesz w przewodniku dla programistów.

Adres URL kanału z najpopularniejszymi filmami w YouTube ma następujący format:

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

Uwaga: możesz też pobierać standardowe pliki danych dotyczące określonego regionu, podając identyfikator regionu 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ę domyślnych wartości localeID 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 konkretnego użytkownika

Każdy użytkownik YouTube ma powiązany kanał wideo z przesłanymi przez niego filmami (http://gdata.youtube.com/feeds/api/users/username/uploads). Ten kod pokazuje, jak pobierać i wyświetlać 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: zamiast wartości username możesz też użyć ciągu „default”, aby pobrać filmy dla aktualnie uwierzytelnionego użytkownika.

Aby pobrać powiązane filmy, przekaż identyfikator filmu obiektu gdata.youtube.YouTubeVideoEntry do metody GetYouTubeRelatedVideoFeed obiektu gdata.youtube.service.YouTubeService. Wyodbiera to obiekt YouTubeVideoFeed zawierający powiązane wpisy.

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

Wyszukiwanie filmów

Interfejs YouTube Data API umożliwia żądanie zbioru wpisów, które spełniają określone kryteria, np. żądanie wpisów wideo opublikowanych przez konkretnego autora, według formatu wideo lub zawierających określone słowo kluczowe. Aby to zrobić, utwórz obiekt gdata.service.YouTubeVideoQuery z określonymi kryteriami wyszukiwania i przekaż go do metody YouTubeQuery obiektu gdata.youtube.service.YouTubeService.

Przykład poniżej pokazuje, jak wykonać zapytanie wyszukiwania z wynikami posortowanymi według liczby wyświetleń, w tym filmy z ograniczonym dostępem (w interfejsie API nazywane „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)

Klasa gdata.service.Query i jej podklasy, np. YouTubeVideoQuery, odpowiadają za tworzenie adresów URL plików danych. Wyświetlona powyżej klasa VideoQuery tworzy adres URL o tym kształcie:

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

Oto niektóre z najczęstszych właściwości YouTubeVideoQuery służących do ustawiania parametrów wyszukiwania:

author
Określa autora wpisu. Autor to synonim nazwy użytkownika w YouTube.
format
Określa format wideo. Akceptuje parametry liczbowe, które umożliwiają określenie jednego z 2 rodzajów adresów URL strumieniowego przesyłania RTSP na potrzeby odtwarzania filmów na urządzeniach mobilnych lub adresu URL HTTP do wstawialnego odtwarzacza Flash.
racy
Wskazuje, czy w wynikach powinny być uwzględniane treści podlegające ograniczeniom. Akceptuje tylko 2 parametry: „include” (uwzględnij) lub „exclude” (wyklucz).
max_results
Ustawia maksymalną liczbę wpisów do zwrócenia naraz.
start_index
Ustawia indeks pierwszego wyniku (liczony od 1) do pobrania (do przewijania).
orderby
Określa kolejność wyświetlania wpisów, np. relevance, viewCount, published lub rating.
time
Ustawia okres, w którym wyniki standardowego pliku danych mają być ograniczone do: today, this_week, this_month lub all_time.
vq
Ustawia wyszukiwane hasło. Szuka określonego ciągu znaków we wszystkich metadanych filmów, takich jak tytuły, tagi i opisy.

Uwaga: więcej informacji o parametrach zapytań znajdziesz w przewodniku po interfejsie YouTube Data API i przewodniku po interfejsach Google Data API.

Wyszukiwanie według kategorii i słów kluczowych

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

Poniższy kod pokazuje, jak wyszukiwać za pomocą słów kluczowych (tagów), zmieniając wyszukiwane hasła na małe litery. Uwaga: ponieważ niektóre słowa (np. „komedia”) mogą być zarówno kategorią w YouTube, jak i słowem kluczowym, w zapytaniach dotyczących kategorii i słów kluczowych stosuje się konwencję, zgodnie z którą słowo z dużej litery („Komedia”) oznacza kategorię w YouTube, a słowo z małej litery („komedia”) oznacza słowo kluczowe.

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 dewelopera

Tagi dewelopera to dodatkowe, ukryte słowa kluczowe, których deweloper może używać do oznaczania treści przesłanych przez użytkowników za pomocą aplikacji. Tagi dewelopera są dopasowywane do klucza dewelopera ustawionego w nagłówkach podczas przesyłania. Te słowa kluczowe nie będą widoczne publicznie i mogą być używane do wyszukiwania filmów. Aby wyszukać filmy według konkretnego tagu dewelopera, wyślij ogólne żądanie wyszukiwania za pomocą interfejsu YouTube Data API, używając klucza dewelopera. Pamiętaj, aby określić schemat kategorii i tag dewelopera, które muszą być zgodne z filmami. Plik danych z filmami pasującymi do tagu dewelopera (w naszym przykładzie „your_tag_here”) możesz pobrać pod tym adresem URL:

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

Aby uzyskać ogólne informacje o procesie przesyłania, zapoznaj się z diagramami w przewodniku po protokole. Filmy można przesyłać na 2 sposoby:

  • przesyłając film bezpośrednio z serwerów za pomocą metody bezpośredniego przesyłania;
  • lub najpierw wysłać metadane, a potem poprosić użytkownika o przesłanie filmu bezpośrednio do YouTube za pomocą metody przesyłania w przeglądarce.

Bezpośrednie przesyłanie na serwer

Aby przesłać film, musisz najpierw utworzyć nowy obiekt gdata.youtube.YouTubeVideoEntry, przekazując mu obiekt gdata.media.Group zawierający wymagane metadane. Ten przykład pokazuje przesyłanie do YouTube filmu Quicktime „mytestmovie.mov” z tymi właściwościami:

WłaściwośćWartość
TytułMój testowy film
KategoriaSamochody
Słowa kluczowesamochody, zabawny
OpisMój tekst reklamy
Nazwa plikumytestmovie.mov
Typ MIME plikuvideo/quicktime
Czy film jest prywatny?fałsz
Lokalizacja filmu37,-122 (szerokość geograficzna,długość geograficzna)
Tagi dla deweloperówmydevelopertag, anotherdevelopertag

Podany niżej kod tworzy pusty plik YouTubeVideoEntry, który można przesłać. Metoda InsertVideoEntry w obiekcie YouTubeService wymaga podania tych parametrów:

  • video_entry – obiekt gdata.youtube.VideoEntry zawierający metadane
  • filename_or_handle – obiekt podobny do pliku lub nazwa pliku, z którego zostanie odczytany film.
  • youtube_username – opcjonalny ciąg znaków określający nazwę użytkownika, na którego konto ma zostać przesłany film. Oczywiście Twoje konto musi mieć odpowiednie uprawnienia. Domyślnie jest to konto aktualnie uwierzytelnionego użytkownika.
  • content_type – opcjonalny ciąg tekstowy określający typ MIME filmu, który ma zostać przesłany.
Pamiętaj, że w tych przykładach zakładamy, że 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 chcielibyśmy dodać do filmu opcjonalne tagi programistyczne (więcej informacji znajdziesz w artykule Wyszukiwanie według tagów programistycznych), przed wywołaniem metody InsertVideoEntry można było 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 elementu 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 w przeglądarce odbywa się prawie tak samo jak przesyłanie bezpośrednie, z tą różnicą, że nie przesyłasz pliku binarnego w tym samym żądaniu, które służy do wysyłania metadanych wideo. Zamiast tego wystarczy utworzyć YouTubeVideoEntry, który zawiera tylko metadane. Ten wpis dotyczący filmu jest następnie publikowany za pomocą specjalnego linku na serwerze interfejsu API YouTube. Odpowiedź XML zawiera tokenurl, które można wykorzystać do przesłania pliku binarnego za pomocą 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 drukuje link i token, który służy do tworzenia formularza HTML wyświetlanego w przeglądarce użytkownika. Poniżej przedstawiamy prosty przykładowy formularz, w którym youtube_token oznacza zawartość zwróconego elementu tokena, jak pokazano na zrzucie ekranu YouTubeVideoEntry powyżej. Aby po przesłaniu formularza użytkownik został przekierowany do Twojej witryny, dodaj parametr next do parametru post_url (jak pokazano poniżej). Parametr ten będzie działał tak samo jak parametr next w linku AuthSub. Jedyną różnicą jest to, że zamiast tokena jednorazowego zwracane są zmienne statusid jako parametry 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ź na przesłanie pliku będzie wyglądać tak:

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

Parametr status zwraca stan transakcji HTTP transakcji przesyłania. Parametr id zwraca identyfikator filmu w YouTube przypisany do przesłanego filmu.

Sprawdzanie stanu przesyłania

Po przesłaniu film będzie od razu widoczny w przesyłanym strumieniu uwierzytelnionego użytkownika. Nie będzie on jednak publicznie dostępny w witrynie, dopóki nie zostanie przetworzony. Filmy, które zostały odrzucone lub nie zostały przesłane, będą również widoczne tylko w sekcji przesłanych treści zalogowanego użytkownika. Poniższy kod sprawdza stan YouTubeVideoEntry, aby sprawdzić, czy nie jest jeszcze aktywny lub czy 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 filmu, po prostu zaktualizuj obiekt YouTubeVideoEntry, a następnie użyj metody UpdateVideoEntry obiektów YouTubeService. Ta metoda przyjmuje jako parametr obiekt YouTubeVideoEntry zawierający zaktualizowane metadane.

# 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

Usuwanie filmu jest bardzo proste i polega na wywołaniu metody DeleteVideoEntry obiektu YouTubeService.

response = yt_service.DeleteVideoEntry(entry_to_be_deleted)

if response:
  print 'Video successfully deleted!'

Korzystanie z funkcji społeczności

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

Korzystając z obiektu YouTubeVideoEntry lub prostego identyfikatora filmu, możesz pobrać i wydrukować plik danych zawierający komentarze do filmu za pomocą metody GetYouTubeVideoCommentFeed obiektu YouTubeService. Powstały plik danych to gdata.youtube.YouTubeCommentFeed, który składa się z obiektów gdata.youtube.YouTubeCommentEntry. Plik danych można przeanalizować 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, do którego ma zostać dodany komentarz, oraz ciągu tekstowego 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

Filmowa odpowiedź w YouTube to film, który został powiązany jako odpowiedź z drugim filmem. Funkcja odpowiedzi wideo została wycofana, o czym poinformowaliśmy 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 dla filmu, przesyłania nowych odpowiedzi wideo ani usuwania odpowiedzi wideo. Możesz jednak usunąć film, który był używany w odpowiedzi wideo. W związku z tym te funkcje nie są już obsługiwane w interfejsie API.

Żądania do interfejsu API dotyczące operacji odpowiedzi wideo zwracają teraz:

  • Żądanie pobrania odpowiedzi wideo do 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

Dodanie skargi dotyczącej filmu odbywa się za pomocą metody AddComplaint w obiekcie YouTubeService. Termin skargi 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ć jako ulubione filmy, które oglądają. 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 przyjmuje jako parametr opcjonalny ciąg znaków reprezentujący nazwę użytkownika YouTube, którego ulubiony kanał ma zostać pobrany.

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

Zwrócony plik danych to zwykły plik danych wideo zawierający YouTubeVideoEntry obiekty.

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

Dodawanie ulubionych

Aby dodać ulubiony film, użyj metody AddVideoEntryToFavorites obiektu YouTubeService. Parametry to YouTubeVideoEntry, który ma zostać dodany, oraz opcjonalnie nazwa użytkownika, do której ma zostać dodany (domyślnie jest to aktualnie 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, 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'

Playlisty

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

Pobieranie playlist użytkowników

Aby ręcznie pobrać listę wszystkich playlist użytkownika, użyj tego adresu URL:

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

Korzystając z biblioteki klienta Python, 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ć konkretną nazwę użytkownika (np. „gdpython” w przykładzie powyżej), możesz też przekazać ciąg znaków 'default', aby odwoływać się do aktualnie uwierzytelnionego użytkownika.

Element gdata.youtube.YouTubePlaylistFeed reprezentuje plik danych z obiektami gdata.youtube.YouTubePlaylistEntry. Odnoszą się one do poszczególnych playlist, które może mieć użytkownik. Wpisy o filmach na danej playliście są reprezentowane jako obiekty gdata.youtube.YouTubePlaylistVideoEntry. Te obiekty są bardzo podobne do zwykłych obiektów gdata.youtube.YouTubeVideoEntry, z kilkoma wyjątkami. Do filmów można stosować niestandardowe tytuły i opisy, a pole pozycji wskazuje, gdzie film pojawia się na playliście.

Pobieranie informacji o playliście

Na podstawie obiektu YouTubePlaylistEntry (reprezentującego konkretną playlistę) możesz uzyskać obiekt YouTubePlaylistVideoFeed, który zawiera obiekty YouTubePlaylistVideoEntry. Jak już wspomnieliśmy, te obiekty reprezentują poszczególne filmy na playliście (z opcjonalnymi tytułami i opisami). Aby uzyskać ten plik danych, prześlij identyfikator URI swojej 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 (obie są ciągami znaków) oraz opcjonalną wartość logiczną, którą można ustawić jako True, jeśli playlista ma być oznaczona jako 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 przyjmuje następujące parametry: identyfikator playlisty, którą chcesz zaktualizować, nowy tytuł, nowy opis, opcjonalną wartość logiczną, aby oznaczyć playlistę jako prywatną, oraz opcjonalny ciąg znaków wskazujący nazwę użytkownika, który jest właścicielem playlisty. Ciąg znaków będzie domyślnie ustawiany na 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)

Dodam film do playlisty

Film można dodać do playlisty, używając metody AddPlaylistVideoEntryToPlaylist obiektu YouTubeService. Poniższy kod dodaje film do playlisty z własnym tytułem i opisem.

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: nie musisz podawać niestandardowego tytułu i opisu. Jeśli ich nie podasz, zostaną użyte rzeczywisty tytuł i opis filmu.

Edytowanie informacji o filmie na playliście

Aby zmienić metadane obiektu YouTubePlaylistVideoEntry, użyj metody UpdatePlaylistVideoEntryMetaData obiektu YouTubeService. W przykładzie poniżej nadajemy filmowi nowy tytuł niestandardowy i przenosimy go na pierwsze miejsce (pozycja 1) na 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ć oryginalne metadane opisu i tytułu filmu na playliście, wprowadź wartość NULL zarówno dla tytułu, jak i opisu.

Usuń film z playlisty

Aby usunąć film z playlisty, użyj metody DeletePlaylistVideoEntry obiektu YouTubeService. Metoda wymaga identyfikatora URI playlisty zawierającej wpis do usunięcia oraz identyfikatora tego wpisu:

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, przekazując URI playlisty, którą chcesz usunąć:

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, do których subskrybuje dany użytkownik, użyj tego identyfikatora URI:

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

Uwaga: możesz też przekazać ciąg znaków default, aby pobrać ulubione dla aktualnie uwierzytelnionego użytkownika.

Pobieranie subskrypcji użytkowników

Poniższy kod pokazuje, jak pobrać i wydrukować listę subskrypcji danego użytkownika. Subskrypcje są reprezentowane jako obiekt gdata.youtube.YouTubeSubscriptionFeed, który składa się z obiektów gdata.youtube.YouTubeSubscriptionEntry. Aby pobrać subskrypcje, użyj metody GetYouTubeSubscriptionFeed obiektu YouTubeService, przekazując URI kanału subskrypcji lub nazwę użytkownika, której kanał subskrypcji ma zostać pobrany. Parametr username domyślnie przyjmuje wartość bieżącego uwierzytelnionego użytkownika.

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 element YouTubeSubsciptionEntry do pliku danych subskrypcji uwierzytelnionego użytkownika. Możemy utworzyć 3 typy subskrypcji: subskrypcję kanału użytkownika (za pomocą AddSubscriptionToChannel), subskrypcję ulubionych użytkownika (za pomocą AddSubscriptionToFavorites) lub subskrypcję konkretnego słowa kluczowego (za pomocą AddSubscriptionToQuery). Poniższy kod powoduje, że uwierzytelniony użytkownik subskrybuje kanał „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 projekty użytkownika „GoogleDevelopers”:

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

Możesz też subskrybować konkretne zapytania. Tutaj subskrybujemy zapytanie dotyczące filmów otagowanych jako „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'

Włączanie interakcji z użytkownikiem

Profile użytkowników

Pobieranie profilu użytkownika

Aby ręcznie pobrać profil użytkownika w YouTube, użyj tego URI:

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

Wartość gdata.youtube.YouTubeUserEntry możesz pobrać za pomocą metody 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 danego użytkownika można pobrać z tego adresu URL:

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

Pobieranie kontaktów użytkownika

Metody GetYouTubeContactFeed obiektu YouTubeService można używać do pobierania obiektu gdata.youtube.YouTubeContactFeed, który składa 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 o kontaktach 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 lub odrzucanie kontaktu

Aby zaktualizować kontakt, użyj metody UpdateContact obiektu YouTubeService. Za pomocą tej metody możesz akceptować lub odrzucać prośby o kontakt, a także przypisywać kontakty do kategorii „Znajomy” lub „Rodzina”. W przykładzie poniżej akceptujemy kontakt, a następnie ustawiamy jego kategorię na „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