Zwraca zbiór wyników wyszukiwania pasujących do parametrów zapytania określonych w żądaniu do interfejsu API. Domyślnie zestaw wyników wyszukiwania identyfikuje pasujące zasoby video
, channel
i playlist
, ale można też skonfigurować zapytania tak, aby pobierały tylko określony typ zasobów.
Wpływ limitu: wywołanie tej metody ma koszt całkowity wynoszący 100 jednostek.
Typowe przypadki użycia
Prośba
Żądanie HTTP
GET https://www.googleapis.com/youtube/v3/search
Parametry
Tabela poniżej zawiera listę parametrów obsługiwanych przez to zapytanie. Wszystkie wymienione parametry są parametrami zapytania.
Parametry | ||
---|---|---|
Parametry wymagane | ||
part |
string Parametr part określa rozdzielaną przecinkami listę co najmniej jednej właściwości zasobu search , która zostanie uwzględniona w odpowiedzi interfejsu API. Ustaw wartość parametru na snippet .
|
|
Filtry (określ 0 lub 1 z następujących parametrów) | ||
forContentOwner |
boolean Ten parametr może być używany tylko w prawidłowym żądaniu autoryzowanym i jest przeznaczony wyłącznie dla dostawców treści w YouTube. Parametr forContentOwner ogranicza wyszukiwanie tylko do filmów należących do właściciela treści określonego przez onBehalfOfContentOwner . Jeśli zasada forContentOwner ma wartość Prawda, żądanie musi też spełniać te wymagania:
|
|
forDeveloper |
boolean Ten parametr może być używany tylko w prawidłowym żądaniu. Parametr forDeveloper ogranicza wyszukiwanie tylko do filmów przesłanych za pomocą aplikacji lub witryny dewelopera. Serwer API identyfikuje dewelopera na podstawie danych uwierzytelniających żądania. Parametr forDeveloper może być używany z opcjonalnymi parametrami wyszukiwania, takimi jak parametr q .W przypadku tej funkcji do każdego przesyłanego filmu jest automatycznie dodawany numer projektu powiązany z deweloperem w Google Developers Console. Gdy żądanie forDeveloper określa później parametr forDeveloper , serwer interfejsu API używa danych uwierzytelniających żądania do identyfikacji dewelopera.true Z tego powodu deweloper może ograniczać wyniki do filmów przesyłanych za pomocą aplikacji lub witryny dewelopera, ale nie do filmów przesłanych w innych aplikacjach lub witrynach. |
|
forMine |
boolean Ten parametr może być używany tylko w prawidłowym żądaniu. Parametr forMine ogranicza wyszukiwanie tylko do filmów należących do uwierzytelnionego użytkownika. Jeśli ustawisz ten parametr na true , wartość parametru type musi też być ustawiona na video . Poza tym w tym samym żądaniu nie można ustawić żadnego z tych parametrów: videoDefinition , videoDimension , videoDuration , videoEmbeddable , videoLicense , videoPaidProductPlacement , videoSyndicated , videoType . |
|
Parametry opcjonalne | ||
channelId |
string Parametr channelId wskazuje, że odpowiedź interfejsu API powinna zawierać tylko zasoby utworzone przez kanał. Uwaga: wynik wyszukiwania może zawierać maksymalnie 500 filmów, jeśli żądanie zawiera wartość parametru channelId i ustawia wartość parametru type na video , ale nie ustawia jednego z filtrów forContentOwner , forDeveloper ani forMine . |
|
channelType |
string Parametr channelType pozwala ograniczyć wyszukiwanie do określonego typu kanału.Akceptowane wartości to:
|
|
eventType |
string Parametr eventType ogranicza wyszukiwanie do transmisji zdarzeń. Jeśli podasz wartość tego parametru, musisz też ustawić wartość parametru type na video .Akceptowane wartości to:
|
|
location |
string Parametr location w połączeniu z parametrem locationRadius definiuje okrągły obszar geograficzny, a także ogranicza wyszukiwanie do filmów, które określają w metadanych lokalizację geograficzną należącą do tego obszaru. Wartość parametru to ciąg znaków określający współrzędne geograficzne, np. 37.42307,-122.08427 .
location , ale nie określa wartości parametru locationRadius .Uwaga: jeśli określisz wartość tego parametru, musisz też ustawić wartość type na video .
| |
locationRadius |
string Parametr locationRadius w połączeniu z parametrem location definiuje okrągły obszar geograficzny.Wartość parametru musi być liczbą zmiennoprzecinkową, po której następuje jednostka miary. Prawidłowe jednostki pomiarowe to m , km , ft i mi . Na przykład prawidłowe wartości parametrów to 1500m , 5km , 10000ft i 0.75mi . Interfejs API nie obsługuje wartości parametrów locationRadius większych niż 1000 kilometrów.Uwaga: więcej informacji znajdziesz w definicji parametru location . |
|
maxResults |
unsigned integer Parametr maxResults określa maksymalną liczbę elementów, które powinny zostać zwrócone w wynikach. Akceptowane wartości to od 0 do 50 (włącznie). Wartością domyślną jest 5 . |
|
onBehalfOfContentOwner |
string Ten parametr może być używany tylko w prawidłowym żądaniu. Uwaga: ten parametr jest przeznaczony wyłącznie dla partnerów dostarczających treści do YouTube. Parametr onBehalfOfContentOwner wskazuje, że dane logowania żądania autoryzacji wskazują użytkownika YouTube CMS, który działa w imieniu właściciela treści określonego w wartości parametru. Ten parametr jest przeznaczony dla partnerów w YouTube, którzy mają wiele różnych kanałów YouTube i nimi zarządzają. Umożliwia właścicielom treści uwierzytelnianie raz i uzyskiwanie dostępu do wszystkich danych dotyczących filmów oraz kanałów bez konieczności podawania danych uwierzytelniających dla każdego kanału. Konto CMS, z którego użytkownik uwierzytelnia się, musi być połączone z określonym właścicielem treści w YouTube. |
|
order |
string Parametr order określa metodę, która będzie używana do sortowania zasobów w odpowiedzi interfejsu API. Wartością domyślną jest relevance .Akceptowane wartości to:
|
|
pageToken |
string Parametr pageToken wskazuje stronę w zestawie wyników, która powinna zostać zwrócona. W odpowiedzi interfejsu API właściwości nextPageToken i prevPageToken określają inne strony, które można pobrać. |
|
publishedAfter |
datetime Parametr publishedAfter wskazuje, że odpowiedź interfejsu API powinna zawierać tylko zasoby utworzone w określonym czasie lub później. Wartością jest format daty i godziny w standardzie RFC 3339 (1970-01-01T00:00:00Z). |
|
publishedBefore |
datetime Parametr publishedBefore wskazuje, że odpowiedź interfejsu API powinna zawierać tylko zasoby utworzone przed określoną godziną lub w określonym czasie. Wartością jest format daty i godziny w standardzie RFC 3339 (1970-01-01T00:00:00Z). |
|
q |
string Parametr q określa wyszukiwane hasło do wyszukania.Żądanie może też wykorzystywać operatory logiczne NIE ( - ) i LUB (| ), aby wykluczać filmy lub znajdować filmy powiązane z jednym z kilku wyszukiwanych haseł. Aby na przykład znaleźć filmy pasujące do „łodzi” lub „żaglówek”, ustaw wartość parametru q na boating|sailing . I podobnie, aby wyszukiwać filmy pasujące do słowa „żegluga” lub „żeglarstwo”, ale nie do „łowienia ryb”, ustaw wartość parametru q na boating|sailing -fishing . Pamiętaj, że znak „kreska pionowa” w żądaniu reklamy musi zawierać zmianę znaczenia znaków w adresie URL. W przypadku znaku potoku wartość zmiany znaczenia w adresie URL to %7C . |
|
regionCode |
string Parametr regionCode instruuje interfejs API, by zwracał wyniki wyszukiwania filmów, które można oglądać w określonym kraju. Wartością tego parametru jest kod kraju w formacie ISO 3166-1 alfa-2. |
|
relevanceLanguage |
string Parametr relevanceLanguage instruuje interfejs API, aby zwracał wyniki wyszukiwania najbardziej odpowiednie dla określonego języka. Wartością tego parametru jest zwykle dwuliterowy kod języka w standardzie ISO 639-1. Należy jednak użyć wartości zh-Hans w przypadku języka chińskiego uproszczonego i zh-Hant w przypadku języka chińskiego tradycyjnego. Pamiętaj, że wyniki w innych językach nadal będą zwracane, jeśli są ściśle związane z wyszukiwanym hasłem. |
|
safeSearch |
string Parametr safeSearch wskazuje, czy wyniki wyszukiwania powinny zawierać treści podlegające ograniczeniom, ale także treści standardowe.Akceptowane wartości to:
|
|
topicId |
string Parametr topicId wskazuje, że odpowiedź interfejsu API powinna zawierać tylko zasoby powiązane z określonym tematem. Ta wartość określa identyfikator tematu Freebase.Ważne: ze względu na wycofanie interfejsu Freebase i Freebase API parametr topicId zaczął działać inaczej od 27 lutego 2017 roku. Od tego czasu YouTube zaczął obsługiwać niewielki zestaw wybranych identyfikatorów tematów, a te wartości będą mniejsze. |
|
type |
string Parametr type ogranicza wyświetlanie zapytania tylko do określonego typu zasobów. Wartością jest rozdzielona przecinkami lista typów zasobów. Wartością domyślną jest video,channel,playlist .Akceptowane wartości to:
|
|
videoCaption |
string Parametr videoCaption wskazuje, czy API ma filtrować wyniki wyszukiwania filmów w zależności od tego, czy mają napisy. Jeśli podasz wartość tego parametru, musisz też ustawić wartość parametru type na video .Akceptowane wartości to:
|
|
videoCategoryId |
string Parametr videoCategoryId filtruje wyniki wyszukiwania filmów według ich kategorii. Jeśli podasz wartość tego parametru, musisz też ustawić wartość parametru type na video . |
|
videoDefinition |
string Parametr videoDefinition pozwala ograniczyć wyszukiwanie tylko do filmów w wysokiej (HD) lub standardowej rozdzielczości (SD). Filmy HD można odtwarzać w rozdzielczości co najmniej 720p, chociaż w takiej sytuacji mogą być dostępne także inne rozdzielczości, takie jak 1080p. Jeśli podasz wartość tego parametru, musisz też ustawić wartość parametru type na video .Akceptowane wartości to:
|
|
videoDimension |
string Parametr videoDimension pozwala ograniczyć wyszukiwanie tylko do filmów 2D i 3D. Jeśli podasz wartość tego parametru, musisz też ustawić wartość parametru type na video .Akceptowane wartości to:
|
|
videoDuration |
string Parametr videoDuration filtruje wyniki wyszukiwania filmów na podstawie czasu ich trwania. Jeśli podasz wartość tego parametru, musisz też ustawić wartość parametru type na video .Akceptowane wartości to:
|
|
videoEmbeddable |
string Parametr videoEmbeddable pozwala ograniczyć wyszukiwanie tylko do filmów, które można umieścić na stronie internetowej. Jeśli podasz wartość tego parametru, musisz też ustawić wartość parametru type na video .Akceptowane wartości to:
|
|
videoLicense |
string Parametr videoLicense filtruje wyniki wyszukiwania, aby uwzględnić tylko filmy z konkretną licencją. YouTube pozwala osobom przesyłającym filmy dołączyć do każdego z nich licencję Creative Commons lub standardową licencję YouTube. Jeśli podasz wartość tego parametru, musisz też ustawić wartość parametru type na video .Akceptowane wartości to:
|
|
videoPaidProductPlacement |
string Parametr videoPaidProductPlacement filtruje wyniki wyszukiwania, aby uwzględnić tylko te filmy, które twórca oznaczył jako płatną promocję. Jeśli określisz wartość tego parametru, musisz też ustawić wartość parametru type na video .Akceptowane wartości to:
|
|
videoSyndicated |
string Parametr videoSyndicated pozwala ograniczyć wyszukiwanie tylko do filmów, które mogą być odtwarzane poza youtube.com. Jeśli określisz wartość tego parametru, musisz też podać wartość video .Akceptowane wartości to:
type
|
|
videoType |
string Parametr videoType umożliwia ograniczenie wyszukiwania do określonego typu filmów. Jeśli podasz wartość tego parametru, musisz też ustawić wartość parametru type na video .Akceptowane wartości to:
|
Treść żądania
Podczas wywoływania tej metody nie podawaj treści żądania.
Odpowiedź
Jeśli operacja się uda, metoda zwróci odpowiedź w następującym formacie:
{ "kind": "youtube#searchListResponse", "etag": etag, "nextPageToken": string, "prevPageToken": string, "regionCode": string, "pageInfo": { "totalResults": integer, "resultsPerPage": integer }, "items": [ search Resource ] }
Właściwości
Właściwości, które pojawiają się w wynikach wyszukiwania, określają:
Właściwości | |
---|---|
kind |
string Określa typ zasobu interfejsu API. Wartość będzie wynosić youtube#searchListResponse . |
etag |
etag ETag tego zasobu. |
nextPageToken |
string Token, który może zostać użyty jako wartość parametru pageToken w celu pobrania następnej strony z zestawu wyników. |
prevPageToken |
string Token, który może zostać użyty jako wartość parametru pageToken w celu pobrania poprzedniej strony z zestawu wyników. |
regionCode |
string Kod regionu, który został użyty w zapytaniu. Wartość właściwości to dwuliterowy kod ISO identyfikujący region. Metoda i18nRegions.list zwraca listę obsługiwanych regionów. Wartością domyślną jest US . Jeśli określisz nieobsługiwany region, do przetwarzania zapytania YouTube może wybrać inny region niż wartość domyślna. |
pageInfo |
object Obiekt pageInfo zawiera informacje o podziale na strony dla zestawu wyników. |
pageInfo.totalResults |
integer Łączna liczba wyników w zestawie wyników.Pamiętaj, że jest to wartość orientacyjna, która nie musi być dokładna. Maksymalna wartość to 1 000 000. Nie używaj tej wartości do tworzenia linków do strony. Zamiast tego użyj wartości właściwości nextPageToken i prevPageToken , aby określić, czy wyświetlić linki do podziału na strony. |
pageInfo.resultsPerPage |
integer Liczba wyników w odpowiedzi interfejsu API. |
items[] |
list Lista wyników pasujących do kryteriów wyszukiwania. |
Przykłady
Uwaga: poniższe przykłady kodu mogą nie przedstawiać wszystkich obsługiwanych języków programowania. Listę obsługiwanych języków znajdziesz w dokumentacji bibliotek klienta.
Google Apps Script
Ta funkcja wyszukuje filmy związane ze słowem kluczowym „psy”. Identyfikatory filmów i tytuły wyników wyszukiwania są rejestrowane w dzienniku Apps Script.W tym przykładzie podajemy tylko 25 wyników. Aby zwracać więcej wyników, przekaż dodatkowe parametry zgodnie z tym opisem: https://developers.google.com/youtube/v3/docs/search/list
function searchByKeyword() { var results = YouTube.Search.list('id,snippet', {q: 'dogs', maxResults: 25}); for(var i in results.items) { var item = results.items[i]; Logger.log('[%s] Title: %s', item.id.videoId, item.snippet.title); } }
Go
Ten przykładowy kod wywołuje metodę API interfejsusearch.list
, aby pobierać wyniki wyszukiwania powiązane z określonym słowem kluczowym.
W tym przykładzie używamy biblioteki klienta Go.
package main import ( "flag" "fmt" "log" "net/http" "google.golang.org/api/googleapi/transport" "google.golang.org/api/youtube/v3" ) var ( query = flag.String("query", "Google", "Search term") maxResults = flag.Int64("max-results", 25, "Max YouTube results") ) const developerKey = "YOUR DEVELOPER KEY" func main() { flag.Parse() client := &http.Client{ Transport: &transport.APIKey{Key: developerKey}, } service, err := youtube.New(client) if err != nil { log.Fatalf("Error creating new YouTube client: %v", err) } // Make the API call to YouTube. call := service.Search.List("id,snippet"). Q(*query). MaxResults(*maxResults) response, err := call.Do() handleError(err, "") // Group video, channel, and playlist results in separate lists. videos := make(map[string]string) channels := make(map[string]string) playlists := make(map[string]string) // Iterate through each item and add it to the correct list. for _, item := range response.Items { switch item.Id.Kind { case "youtube#video": videos[item.Id.VideoId] = item.Snippet.Title case "youtube#channel": channels[item.Id.ChannelId] = item.Snippet.Title case "youtube#playlist": playlists[item.Id.PlaylistId] = item.Snippet.Title } } printIDs("Videos", videos) printIDs("Channels", channels) printIDs("Playlists", playlists) } // Print the ID and title of each result in a list as well as a name that // identifies the list. For example, print the word section name "Videos" // above a list of video search results, followed by the video ID and title // of each matching video. func printIDs(sectionName string, matches map[string]string) { fmt.Printf("%v:\n", sectionName) for id, title := range matches { fmt.Printf("[%v] %v\n", id, title) } fmt.Printf("\n\n") }
.NET
Poniższy przykładowy kod wywołuje metodę interfejsu APIsearch.list
w celu pobrania wyników wyszukiwania powiązanych z konkretnym słowem kluczowym.
W tym przykładzie używana jest biblioteka klienta.NET.
using System; using System.Collections.Generic; using System.IO; using System.Reflection; using System.Threading; using System.Threading.Tasks; using Google.Apis.Auth.OAuth2; using Google.Apis.Services; using Google.Apis.Upload; using Google.Apis.Util.Store; using Google.Apis.YouTube.v3; using Google.Apis.YouTube.v3.Data; namespace Google.Apis.YouTube.Samples { /// <summary> /// YouTube Data API v3 sample: search by keyword. /// Relies on the Google APIs Client Library for .NET, v1.7.0 or higher. /// See https://developers.google.com/api-client-library/dotnet/get_started /// /// Set ApiKey to the API key value from the APIs & auth > Registered apps tab of /// https://cloud.google.com/console /// Please ensure that you have enabled the YouTube Data API for your project. /// </summary> internal class Search { [STAThread] static void Main(string[] args) { Console.WriteLine("YouTube Data API: Search"); Console.WriteLine("========================"); try { new Search().Run().Wait(); } catch (AggregateException ex) { foreach (var e in ex.InnerExceptions) { Console.WriteLine("Error: " + e.Message); } } Console.WriteLine("Press any key to continue..."); Console.ReadKey(); } private async Task Run() { var youtubeService = new YouTubeService(new BaseClientService.Initializer() { ApiKey = "REPLACE_ME", ApplicationName = this.GetType().ToString() }); var searchListRequest = youtubeService.Search.List("snippet"); searchListRequest.Q = "Google"; // Replace with your search term. searchListRequest.MaxResults = 50; // Call the search.list method to retrieve results matching the specified query term. var searchListResponse = await searchListRequest.ExecuteAsync(); List<string> videos = new List<string>(); List<string> channels = new List<string>(); List<string> playlists = new List<string>(); // Add each result to the appropriate list, and then display the lists of // matching videos, channels, and playlists. foreach (var searchResult in searchListResponse.Items) { switch (searchResult.Id.Kind) { case "youtube#video": videos.Add(String.Format("{0} ({1})", searchResult.Snippet.Title, searchResult.Id.VideoId)); break; case "youtube#channel": channels.Add(String.Format("{0} ({1})", searchResult.Snippet.Title, searchResult.Id.ChannelId)); break; case "youtube#playlist": playlists.Add(String.Format("{0} ({1})", searchResult.Snippet.Title, searchResult.Id.PlaylistId)); break; } } Console.WriteLine(String.Format("Videos:\n{0}\n", string.Join("\n", videos))); Console.WriteLine(String.Format("Channels:\n{0}\n", string.Join("\n", channels))); Console.WriteLine(String.Format("Playlists:\n{0}\n", string.Join("\n", playlists))); } } }
Ruby
W tym przykładzie wywoływana jest interfejs API metodysearch.list
, która pozwala pobrać wyniki wyszukiwania powiązane z określonym słowem kluczowym.
W tym przykładzie używamy biblioteki klienta Ruby.
#!/usr/bin/ruby require 'rubygems' gem 'google-api-client', '>0.7' require 'google/api_client' require 'trollop' # Set DEVELOPER_KEY to the API key value from the APIs & auth > Credentials # tab of # {{ Google Cloud Console }} <{{ https://cloud.google.com/console }}> # Please ensure that you have enabled the YouTube Data API for your project. DEVELOPER_KEY = 'REPLACE_ME' YOUTUBE_API_SERVICE_NAME = 'youtube' YOUTUBE_API_VERSION = 'v3' def get_service client = Google::APIClient.new( :key => DEVELOPER_KEY, :authorization => nil, :application_name => $PROGRAM_NAME, :application_version => '1.0.0' ) youtube = client.discovered_api(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION) return client, youtube end def main opts = Trollop::options do opt :q, 'Search term', :type => String, :default => 'Google' opt :max_results, 'Max results', :type => :int, :default => 25 end client, youtube = get_service begin # Call the search.list method to retrieve results matching the specified # query term. search_response = client.execute!( :api_method => youtube.search.list, :parameters => { :part => 'snippet', :q => opts[:q], :maxResults => opts[:max_results] } ) videos = [] channels = [] playlists = [] # Add each result to the appropriate list, and then display the lists of # matching videos, channels, and playlists. search_response.data.items.each do |search_result| case search_result.id.kind when 'youtube#video' videos << "#{search_result.snippet.title} (#{search_result.id.videoId})" when 'youtube#channel' channels << "#{search_result.snippet.title} (#{search_result.id.channelId})" when 'youtube#playlist' playlists << "#{search_result.snippet.title} (#{search_result.id.playlistId})" end end puts "Videos:\n", videos, "\n" puts "Channels:\n", channels, "\n" puts "Playlists:\n", playlists, "\n" rescue Google::APIClient::TransmissionError => e puts e.result.body end end main
Błędy
W tabeli poniżej znajdziesz komunikaty o błędach, które interfejs API może zwrócić w odpowiedzi na wywołanie tej metody. Więcej informacji znajdziesz w dokumentacji komunikatów o błędach.
Typ błędu | Szczegóły błędu | Opis |
---|---|---|
badRequest (400) |
invalidChannelId |
Parametr channelId określa nieprawidłowy identyfikator kanału. |
badRequest (400) |
invalidLocation |
Wartość parametru location lub locationRadius jest nieprawidłowo sformatowana. |
badRequest (400) |
invalidRelevanceLanguage |
Wartość parametru relevanceLanguage jest nieprawidłowo sformatowana. |
badRequest (400) |
invalidSearchFilter |
Żądanie zawiera nieprawidłową kombinację filtrów wyszukiwania lub ograniczeń. Pamiętaj, że jeśli ustawisz wartość forContentOwner lub forMine na true , parametr type musi mieć wartość video . Musisz też ustawić parametr video na video , jeśli ustawisz wartości parametrów eventType , videoCaption , videoCategoryId , videoDefinition , videoDimension , videoDuration , videoEmbeddable , videoLicense , videoSyndicated lub videoType .type |
Wypróbuj
Użyj APIs Explorer, aby wywołać ten interfejs API i wyświetlić żądanie oraz odpowiedź API.