Zwraca kolekcję wyników wyszukiwania, które pasują 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żesz też skonfigurować zapytania tak, aby pobierały tylko określony typ zasobu.
Wpływ na limit: 100 wywołań dziennie. Wywołanie tej metody ma koszt limitu w wysokości 1 jednostki w zasobniku limitu zapytań.
Częste przypadki użycia
Żądanie
Żądanie HTTP
GET https://www.googleapis.com/youtube/v3/search
Parametry
W tabeli poniżej znajdziesz parametry obsługiwane przez to zapytanie. Wszystkie wymienione parametry to parametry zapytania.
| Parametry | ||
|---|---|---|
| Parametry wymagane | ||
part |
stringParametr part określa rozdzieloną przecinkami listę co najmniej 1 właściwości zasobu search, które zostaną uwzględnione w odpowiedzi interfejsu API. Ustaw wartość parametru na snippet.
|
|
| Filtry(określ 0 lub 1 z tych parametrów) | ||
forContentOwner |
booleanTego parametru można używać tylko w prawidłowo autoryzowanym żądaniu i jest on przeznaczony wyłącznie dla partnerów treści YouTube. Parametr forContentOwner ogranicza wyszukiwanie tylko do filmów należących do właściciela treści określonego przez parametr onBehalfOfContentOwner. Jeśli parametr forContentOwner ma wartość „true”, żądanie musi też spełniać te wymagania:
|
|
forDeveloper |
booleanTego parametru można używać tylko w prawidłowo autoryzowanym żądaniu. Parametr forDeveloper ogranicza wyszukiwanie do filmów przesłanych za pomocą aplikacji lub witryny dewelopera. Serwer interfejsu API używa danych logowania autoryzacji żądania do identyfikacji dewelopera. Parametr forDeveloper może być używany w połączeniu z opcjonalnymi parametrami wyszukiwania, takimi jak parametr q.W przypadku tej funkcji każdy przesłany film jest automatycznie oznaczany numerem projektu powiązanym z aplikacją dewelopera w Google Developers Console. Gdy w żądaniu wyszukiwania parametr forDeveloper zostanie ustawiony na true, serwer interfejsu API użyje danych logowania żądania, aby zidentyfikować dewelopera. Dlatego deweloper może ograniczyć wyniki do filmów przesłanych za pomocą jego aplikacji lub witryny, ale nie do filmów przesłanych za pomocą innych aplikacji lub witryn. |
|
forMine |
booleanTego parametru można używać tylko w odpowiednio autoryzowanym żą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 być również ustawiona na video. W tym samym żądaniu nie można też ustawić żadnego z tych parametrów: videoDefinition, videoDimension, videoDuration, videoEmbeddable, videoLicense, videoPaidProductPlacement, videoSyndicated, videoType. |
|
| Parametry opcjonalne | ||
channelId |
stringParametr channelId wskazuje, że odpowiedź interfejsu API powinna zawierać tylko zasoby utworzone przez kanał. Uwaga: wyniki wyszukiwania są ograniczone do maksymalnie 500 filmów, jeśli żądanie określa wartość parametru channelId i ustawia wartość parametru type na video, ale nie ustawia jednego z filtrów forContentOwner, forDeveloper lub forMine. |
|
channelType |
stringParametr channelType pozwala ograniczyć wyszukiwanie do określonego typu kanału.Dopuszczalne wartości:
|
|
eventType |
stringParametr eventType ogranicza wyszukiwanie do wydarzeń transmitowanych. Jeśli określisz wartość tego parametru, musisz też ustawić wartość parametru type na video.Dopuszczalne wartości:
|
|
location |
stringParametr location w połączeniu z parametrem locationRadius definiuje okrągły obszar geograficzny i ogranicza wyszukiwanie do filmów, które w metadanych mają określone położenie geograficzne znajdujące się w tym obszarze. 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ść parametru type na video.
| |
locationRadius |
stringParametr 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 miary to m, km, ft i mi. Prawidłowe wartości parametru to np. 1500m, 5km, 10000ft i 0.75mi. Interfejs API nie obsługuje wartości parametru locationRadius większych niż 1000 kilometrów.Uwaga: więcej informacji znajdziesz w definicji parametru location. |
|
maxResults |
unsigned integerParametr maxResults określa maksymalną liczbę elementów, które powinny zostać zwrócone w zbiorze wyników. Akceptowane wartości to 0–50 (włącznie). Wartością domyślną jest 5. |
|
onBehalfOfContentOwner |
stringTego parametru można używać tylko w prawidłowo autoryzowanym żądaniu. Uwaga: ten parametr jest przeznaczony wyłącznie dla partnerów treści YouTube. Parametr onBehalfOfContentOwner wskazuje, że dane uwierzytelniające żądania identyfikują użytkownika systemu 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 YouTube, którzy są właścicielami wielu różnych kanałów YouTube i nimi zarządzają. Umożliwia właścicielom treści jednorazowe uwierzytelnianie i uzyskiwanie dostępu do wszystkich danych dotyczących filmów i kanałów bez konieczności podawania danych uwierzytelniających dla każdego kanału z osobna. Konto CMS, za pomocą którego użytkownik się uwierzytelnia, musi być połączone z określonym właścicielem treści w YouTube. |
|
order |
stringParametr order określa metodę, która zostanie użyta do uporządkowania zasobów w odpowiedzi interfejsu API. Wartością domyślną jest relevance.Akceptowane wartości:
|
|
pageToken |
stringParametr pageToken identyfikuje konkretną stronę w zestawie wyników, która ma zostać zwrócona. W odpowiedzi interfejsu API właściwości nextPageToken i prevPageToken identyfikują inne strony, które można pobrać. |
|
publishedAfter |
datetimeParametr publishedAfter wskazuje, że odpowiedź interfejsu API powinna zawierać tylko zasoby utworzone w określonym czasie lub później. Wartość jest datą i godziną w formacie RFC 3339 (1970-01-01T00:00:00Z). |
|
publishedBefore |
datetimeParametr publishedBefore wskazuje, że odpowiedź interfejsu API powinna zawierać tylko zasoby utworzone przed określonym czasem lub w tym czasie. Wartość jest datą i godziną w formacie RFC 3339 (1970-01-01T00:00:00Z). |
|
q |
stringParametr q określa wyszukiwane hasło.W żądaniu możesz też użyć operatorów logicznych NOT ( -) i OR (|), aby wykluczyć filmy lub znaleźć filmy powiązane z jednym z kilku haseł. Aby na przykład wyszukać filmy pasujące do hasła „boating” lub „sailing”, ustaw wartość parametru q na boating|sailing. Podobnie, aby wyszukać filmy pasujące do słów „boating” lub „sailing”, ale nie do słowa „fishing”, ustaw wartość parametru q na boating|sailing -fishing. Pamiętaj, że znak kreski pionowej musi być zakodowany w adresie URL, gdy jest wysyłany w żądaniu do interfejsu API. Wartość znaku potoku po zastosowaniu kodowania URL to %7C. |
|
regionCode |
stringParametr regionCode instruuje interfejs API, aby zwracał wyniki wyszukiwania filmów, które można wyświetlać w określonym kraju. Wartość parametru to kod kraju w formacie ISO 3166-1 alfa-2. |
|
relevanceLanguage |
stringParametr relevanceLanguage instruuje interfejs API, aby zwracał wyniki wyszukiwania, które są najbardziej trafne dla określonego języka. Wartość parametru to zwykle dwuliterowy kod języka ISO 639-1. W przypadku uproszczonego języka chińskiego należy użyć wartości zh-Hans, a w przypadku tradycyjnego języka chińskiego – zh-Hant. Pamiętaj, że wyniki w innych językach będą nadal wyświetlane, jeśli będą bardzo trafne w odniesieniu do wyszukiwanego hasła. |
|
safeSearch |
stringParametr safeSearch określa, czy wyniki wyszukiwania mają obejmować treści podlegające ograniczeniom, a także treści standardowe.Dopuszczalne wartości to:
|
|
topicId |
stringParametr topicId wskazuje, że odpowiedź interfejsu API powinna zawierać tylko zasoby powiązane z określonym tematem. Wartość identyfikuje identyfikator tematu Freebase.Ważne: ze względu na wycofanie Freebase i interfejsu Freebase API od 27 lutego 2017 r. parametr topicId działa inaczej. W tym czasie YouTube zaczął obsługiwać niewielki zestaw wyselekcjonowanych identyfikatorów tematów, a jako wartości tego parametru można używać tylko tego mniejszego zestawu identyfikatorów. |
|
type |
stringParametr type ogranicza zapytanie, aby pobierało tylko określony typ zasobu. Wartość to lista typów zasobów rozdzielonych przecinkami. Wartością domyślną jest video,channel,playlist.Akceptowane wartości:
|
|
videoCaption |
stringParametr videoCaption wskazuje, czy interfejs API powinien filtrować wyniki wyszukiwania filmów na podstawie tego, czy mają napisy. Jeśli podasz wartość tego parametru, musisz też ustawić wartość parametru type na video.Dopuszczalne wartości:
|
|
videoCategoryId |
stringParametr videoCategoryId filtruje wyniki wyszukiwania filmów na podstawie ich kategorii. Jeśli określisz wartość tego parametru, musisz też ustawić wartość parametru type na video. |
|
videoDefinition |
stringParametr videoDefinition umożliwia ograniczenie wyszukiwania tylko do filmów w wysokiej rozdzielczości (HD) lub standardowej rozdzielczości (SD). Filmy HD można odtwarzać w rozdzielczości co najmniej 720p, ale mogą być też dostępne wyższe rozdzielczości, np. 1080p. Jeśli określisz wartość tego parametru, musisz też ustawić wartość parametru type na video.Dopuszczalne wartości:
|
|
videoDimension |
stringParametr videoDimension pozwala ograniczyć wyszukiwanie tylko do filmów 2D lub 3D. Jeśli podasz wartość tego parametru, musisz też ustawić wartość parametru type na video.Dopuszczalne wartości:
|
|
videoDuration |
stringParametr videoDuration filtruje wyniki wyszukiwania filmów na podstawie ich czasu trwania. Jeśli określisz wartość tego parametru, musisz też ustawić wartość parametru type na video.Dopuszczalne wartości:
|
|
videoEmbeddable |
stringParametr 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.Dopuszczalne wartości:
|
|
videoLicense |
stringParametr videoLicense filtruje wyniki wyszukiwania, aby zawierały tylko filmy z określoną licencją. YouTube umożliwia przesyłającym filmy wybór licencji Creative Commons lub standardowej licencji YouTube dla każdego z ich filmów. Jeśli określisz wartość tego parametru, musisz też ustawić wartość parametru type na video.Dopuszczalne wartości:
|
|
videoPaidProductPlacement |
stringParametr videoPaidProductPlacement filtruje wyniki wyszukiwania, aby uwzględniać tylko filmy, w przypadku których twórca zadeklarował płatną promocję. Jeśli określisz wartość tego parametru, musisz też ustawić wartość parametru type na video.Dopuszczalne wartości:
|
|
videoSyndicated |
stringParametr videoSyndicated pozwala ograniczyć wyszukiwanie tylko do filmów, które można odtwarzać poza youtube.com. Jeśli określisz wartość tego parametru, musisz też ustawić wartość parametru type na video.Dopuszczalne wartości to:
|
|
videoType |
stringParametr videoType pozwala ograniczyć wyszukiwanie do określonego typu filmów. Jeśli określisz wartość tego parametru, musisz też ustawić wartość parametru type na video.Dopuszczalne wartości:
|
|
Treść żądania
Podczas wywoływania tej metody nie podawaj treści żądania.
Odpowiedź
Jeśli operacja się powiedzie, ta metoda zwróci treść odpowiedzi o tej strukturze:
{
"kind": "youtube#searchListResponse",
"etag": etag,
"nextPageToken": string,
"prevPageToken": string,
"regionCode": string,
"pageInfo": {
"totalResults": integer,
"resultsPerPage": integer
},
"items": [
search Resource
]
}Właściwości
W tabeli poniżej opisujemy właściwości, które pojawiają się w wyniku wyszukiwania:
| Właściwości | |
|---|---|
kind |
stringOkreśla typ zasobu interfejsu API. Wartość będzie wynosić youtube#searchListResponse. |
etag |
etagEtag tego zasobu. |
nextPageToken |
stringToken, którego można użyć jako wartości parametru pageToken, aby pobrać następną stronę w zestawie wyników. |
prevPageToken |
stringToken, którego można użyć jako wartości parametru pageToken, aby pobrać poprzednią stronę w zbiorze wyników. |
regionCode |
stringKod regionu użyty w zapytaniu. Wartość właściwości to dwuliterowy kod kraju w standardzie ISO, który identyfikuje region. Metoda i18nRegions.list zwraca listę obsługiwanych regionów. Wartością domyślną jest US. Jeśli podasz nieobsługiwany region, YouTube może wybrać inny region zamiast wartości domyślnej, aby obsłużyć zapytanie. |
pageInfo |
objectObiekt pageInfo zawiera informacje o stronicowaniu zbioru wyników. |
pageInfo.totalResults |
integerŁączna liczba wyników w zbiorze wyników.Pamiętaj, że ta wartość jest przybliżona i może nie być dokładna. Maksymalna wartość to 1 000 000. Nie używaj tej wartości do tworzenia linków do podziału na strony. Zamiast tego użyj wartości właściwości nextPageToken i prevPageToken, aby określić, czy wyświetlać linki do stron. |
pageInfo.resultsPerPage |
integerLiczba wyników uwzględnionych w odpowiedzi interfejsu API. |
items[] |
listLista wyników pasujących do kryteriów wyszukiwania. |
Przykłady
Uwaga: poniższe przykłady kodu mogą nie odzwierciedlać 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 powiązane ze słowem kluczowym „psy”. Identyfikatory i tytuły filmów z wyników wyszukiwania są rejestrowane w dzienniku Apps Script.Pamiętaj, że ten przykład ogranicza wyniki do 25. Aby uzyskać więcej wyników, przekaż dodatkowe parametry zgodnie z dokumentacją: https://developers.google.com/youtube/data/reference/rest/v3/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ęsearch.list interfejsu API, aby pobrać wyniki wyszukiwania powiązane z określonym słowem kluczowym.
W tym przykładzie używana jest biblioteka 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ęsearch.list interfejsu API, aby pobrać wyniki wyszukiwania
powiązane z określonym słowem kluczowym.
W tym przykładzie używamy biblioteki 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
Ten przykład wywołuje metodęsearch.list interfejsu API, aby 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 dotyczącej 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 parametr forContentOwner lub forMine na true, musisz ustawić parametr type na video. Jeśli ustawisz wartość parametrów eventType, videoCaption, videoCategoryId, videoDefinition, videoDimension, videoDuration, videoEmbeddable, videoLicense, videoSyndicated lub videoType, musisz też ustawić parametr type na wartość video. |
Wypróbuj
Użyj APIs Explorer, aby wywołać ten interfejs API i wyświetlić żądanie do interfejsu API oraz odpowiedź.