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
.
Pobieranie podobnych filmów
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
lubrating
. time
- Określa przedział czasu, w którym mają być ograniczone wyniki standardowych plików danych:
today
,this_week
,this_month
luball_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 |
Kategoria | Automatycznie |
Słowa kluczowe | samochody, śmieszne |
Description | Mój opis |
Nazwa pliku | mytestmovie.mov |
Typ MIME pliku | wideo/krótki czas |
Film prywatny? | fałsz |
Lokalizacja filmu | 37,-122 (lata,długi) |
Tagi programisty | deweloper_tagu, innydeweloper |
Kod poniżej tworzy pusty plik YouTubeVideoEntry
do przesłania. Metoda InsertVideoEntry
w YouTubeService
wymaga tych parametrów:
video_entry
– obiektgdata.youtube.VideoEntry
zawierający metadanefilename_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ć.
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'