Search: list

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:
  • Parametr onBehalfOfContentOwner jest wymagany.
  • Użytkownik autoryzujący prośbę musi używać konta połączonego z określonym właścicielem treści.
  • Wartość parametru type musi być ustawiona na video.
  • Nie można ustawić żadnego z tych parametrów: videoDefinition, videoDimension, videoDuration, videoEmbeddable, videoLicense, videoPaidProductPlacement, videoSyndicated, videoType.
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:
  • any – zwraca wszystkie kanały.
  • show – pobieraj tylko programy.
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:
  • completed – uwzględnia tylko zakończone transmisje.
  • live – uwzględnia tylko aktywne transmisje.
  • upcoming – uwzględnia tylko nadchodzące transmisje.
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.

  • Wartość parametru location wskazuje punkt na środku obszaru.
  • Parametr locationRadius określa maksymalną odległość, jaką może mieć lokalizacja powiązana z filmem, aby film nadal był uwzględniony w wynikach wyszukiwania.
Interfejs API zwraca błąd, jeśli żądanie określa wartość parametru 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:
  • date – zasoby są sortowane w odwrotnej kolejności chronologicznej na podstawie daty ich utworzenia.
  • rating – zasoby są sortowane według ocen (od najwyższej do najniższej).
  • relevance – zasoby są sortowane według trafności w odniesieniu do wyszukiwanego hasła. Jest to wartość domyślna tego parametru.
  • title – zasoby są posortowane alfabetycznie według tytułu.
  • videoCount – kanały są sortowane w kolejności malejącej według liczby przesłanych filmów.
  • viewCount – zasoby są posortowane od najwyższej do najniższej liczby wyświetleń. W przypadku transmisji na żywo filmy są sortowane według liczby jednoczesnych widzów.
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:
  • moderate – YouTube usunie niektóre treści z wyników wyszukiwania, a przynajmniej te, które są ograniczone w Twoim regionie. W zależności od treści w wynikach wyszukiwania możemy usunąć je z wyników wyszukiwania albo obniżyć ich pozycję w wynikach. Jest to wartość domyślna.
  • none – YouTube nie będzie filtrować zestawu wyników.
  • strict – YouTube spróbuje wykluczyć wszystkie treści objęte ograniczeniami z zestawu wyników wyszukiwania. W zależności od treści w wynikach wyszukiwania możemy usunąć je z wyników wyszukiwania albo obniżyć ich pozycję w wynikach.
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:
  • channel
  • playlist
  • video
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:
  • any – nie filtruj wyników na podstawie dostępności napisów.
  • closedCaption – uwzględnia tylko filmy z napisami.
  • none – uwzględnia tylko filmy bez napisów.
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:
  • any – zwraca wszystkie filmy niezależnie od ich rozdzielczości.
  • high – pobieraj tylko filmy HD.
  • standard – pobieraj filmy tylko w standardowej rozdzielczości.
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:
  • 2d – ogranicz wyniki wyszukiwania, aby wykluczyć filmy 3D.
  • 3d – ograniczanie wyników wyszukiwania tak, aby uwzględniały tylko filmy 3D.
  • any – w wynikach pojawią się filmy 3D i inne niż 3D. jest to wartość domyślna
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:
  • any – nie filtruj wyników wyszukiwania filmów na podstawie czasu ich trwania. jest to wartość domyślna
  • long – uwzględnia tylko filmy dłuższe niż 20 minut.
  • medium – uwzględnia tylko filmy trwające od 4 do 20 minut (włącznie).
  • short – uwzględnia tylko filmy krótsze niż 4 minuty.
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:
  • any – zwraca wszystkie filmy, które można umieścić na stronie lub nie.
  • true – pobiera tylko osadzone filmy.
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:
  • any – wyświetla wszystkie filmy, niezależnie od posiadanej licencji, pasujące do parametrów zapytania.
  • creativeCommon – zwraca tylko filmy na licencji Creative Commons. Użytkownicy mogą ponownie wykorzystywać filmy z tą licencją w innych filmach, które utworzą. (więcej informacji).
  • youtube – zwraca tylko filmy objęte standardową licencją YouTube.
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:
  • any – zwraca wszystkie filmy niezależnie od tego, czy zawierają płatne promocje.
  • true – pobieraj tylko filmy z płatnymi promocjami.
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
  • any – zwraca wszystkie filmy dystrybuowane.
  • true – pobiera tylko dystrybuowane filmy.
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:
  • any – zwraca wszystkie filmy.
  • episode – pobieraj tylko odcinki programów.
  • movie – pobiera tylko filmy.

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 interfejsu search.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 API search.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 metody search.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.