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.media
i gdata.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.
Pobieranie podobnych filmów
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
lubrating
. time
- Ustawia okres, w którym wyniki standardowego pliku danych mają być ograniczone do:
today
,this_week
,this_month
luball_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 |
Kategoria | Samochody |
Słowa kluczowe | samochody, zabawny |
Opis | Mój tekst reklamy |
Nazwa pliku | mytestmovie.mov |
Typ MIME pliku | video/quicktime |
Czy film jest prywatny? | fałsz |
Lokalizacja filmu | 37,-122 (szerokość geograficzna,długość geograficzna) |
Tagi dla deweloperów | mydevelopertag, 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
– obiektgdata.youtube.VideoEntry
zawierający metadanefilename_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.
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 token
i url
, 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 status
i id
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'