API 要求範例

本頁說明傳送至 YouTube Data API 的要求範例。您可以使用 YouTube Data API 擷取及操控 YouTube 資源,例如影片、頻道和播放清單。每個範例都會連結至並填入 Google APIs Explorer,讓您可以執行範例並查看回應。

想瞭解如何使用 YouTube Data API 上傳內容,請參閱「支援續傳的上傳作業」一文。

總覽

為求清楚呈現,本頁範例示範了每項要求的特色,並縮短處理 Data API 要求主機的基準網址 (https://www.googleapis.com/youtube/v3)。如要在範例以外的情境下提出要求,您必須加入完整網址。

以下舉例中的要求範例,如本頁所示:

GET {base-URL}/channels?part=contentDetails
                       &mine=true

這項要求的完整網址如下:

GET https://www.googleapis.com/youtube/v3/channels?part=contentDetails
                                                  &mine=true

其中有些要求會擷取只有 YouTube 頻道擁有者可存取的資料,例如訂閱者清單。這類要求需要頻道擁有者授權 Google APIs Explorer,代表其執行 YouTube Data API 要求。(如要進一步瞭解如何授權私人管道資料的存取權,請參閱執行 OAuth 2.0 驗證)。連結至 APIs Explorer 後,按一下「使用 OAuth 2.0 授權要求」按鈕。這個步驟會授權 APIs Explorer 代表擁有者提出要求。您也可以選取授權範圍,指定 API Explorer 可執行的要求類型。

每個要求的回應都是 YouTube 資源的 JSON 表示法。要求中的 part 參數會指定在回應中納入資源的哪些部分。參數會識別應納入回應的一或多個頂層 (非巢狀) 資源屬性。舉例來說,影片資源的某些部分如下:

  • 摘要
  • contentDetails
  • 球員
  • 統計資料
  • 狀態

這些部分都是包含巢狀屬性的物件,您可以將其視為 API 伺服器可能 (或可能不會) 擷取的中繼資料欄位群組。因此,part 參數會要求您選取應用程式實際使用的資源元件。詳情請參閱開始使用 YouTube Data API

擷取頻道資訊

這項要求會使用 channels.list 方法擷取已驗證使用者的頻道詳細資料。

GET {base_URL}/channels?part=contentDetails
                       &mine=true

這項要求的回應會包含已驗證使用者頻道的頻道 ID 和 contentDetailscontentDetails 包括多個系統為該頻道產生的播放清單。後續的許多要求都需要有頻道 ID 或其中一個播放清單 ID,因此請務必記錄這些 ID。

{
  "id": {CHANNEL_ID},
  "kind": "youtube#channel",
  "etag": etag,
  "contentDetails": {
    "relatedPlaylists": {
      "likes": {LIKES_PLAYLIST_ID},
      "favorites": {FAVORITES_PLAYLIST_ID},
      "uploads": {UPLOADS_PLAYLIST_ID},
      "watchHistory": {WATCHHISTORY_PLAYLIST_ID},
      "watchLater": {WATCHLATER_PLAYLIST_ID}
    },
    "googlePlusUserId": string
  },
}

上傳的影片和系統產生的播放清單

YouTube 會將所有上傳的影片新增至與頻道相關聯的播放清單。如要取得已上傳的影片清單,請查詢「上傳影片」上方顯示的頻道資訊回應中傳回的播放清單,使用 playlistItems.list 方法擷取該播放清單中的影片。

在 Google APIs Explorer 中執行以下要求範例之前,請將 {UPLOADS_PLAYLIST_ID} 換成先前要求中的播放清單 ID。

GET {base_URL}/playlistItems?part=contentDetails
                            &playlistId={UPLOADS_PLAYLIST_ID}

請注意,每個傳回項目的 "id" 值都是它的 playlistItem ID。播放清單項目的影片 ID 是 contentDetails 部分中的 videoId

您可以使用上述要求,擷取頻道資訊回應中相應的播放清單 ID,以擷取使用者最愛的影片、喜歡的影片、觀看記錄或「稍後觀看」清單。

使用者建立的播放清單

這項要求使用 playlists.list 方法擷取與驗證頻道相關聯的播放清單。請注意,這項要求「不會」擷取頻道資訊 (上傳項目、觀看記錄等) 中包含的系統產生的播放清單。只會擷取使用者建立的播放清單。

GET {base_URL}/playlists?part=snippet
                        &mine=true

取得播放清單 ID 後,就能夠使用上一節中顯示的要求,從播放清單中擷取項目。

在未驗證的情況下,你可以要求取得頻道的公開播放清單相關資訊。提交未經驗證的要求時,您需要加入 key 引數,指定發出要求的 應用程式專屬 API 金鑰。例如,這項要求會擷取與 GoogleDevelopers 頻道相關聯的播放清單。

GET {base_URL}/playlists?part=snippet
                        &channelId=UC_x5XG1OV2P6uZZ5FSM9Ttw
                        &key={YOUR_API_KEY}

擷取訂閱項目

subscription 資源定義 YouTube 使用者 (訂閱者) 與頻道之間的關係。subscriptions.list 方法會根據您在要求中加入的參數,擷取特定頻道或特定使用者的訂閱者。

頻道訂閱人數

這項要求會擷取已驗證頻道的訂閱者清單。

GET {base_URL}/subscriptions?part=snippet
                            &mySubscribers=true

使用者訂閱項目

您可以用列出訂閱者 (subscriptions.list) 的方法列出使用者訂閱的頻道。這項要求使用 mine 參數來擷取已驗證使用者訂閱的 YouTube 頻道清單。

GET {base_URL}/subscriptions?part=snippet
                            &mine=true

擷取使用者活動

activity 資源包含特定頻道或使用者在 YouTube 上所採取的動作資訊,例如上傳影片、訂閱頻道等。activities.list 方法會擷取與要求條件相符的頻道或使用者相關動作。例如,您可以擷取與特定頻道相關聯的動作、使用者的訂閱項目,或使用者的自訂 YouTube 首頁。

指定時間範圍內的活動

這個要求會擷取已驗證使用者在 2013 年 4 月執行的所有動作。

GET {base_URL}/activities?part=snippet,contentDetails
                         &mine=true
                         &publishedAfter=2013-04-01T00%3A00%3A00Z
                         &publishedBefore=2013-05-01T00%3A00%3A00Z

首頁活動

這項要求會擷取自訂活動動態消息,顯示在已驗證使用者的 YouTube 首頁。 

GET {base_URL}/activities?part=snippet,contentDetails
                         &home=true

如要擷取 YouTube 影片和頻道的觀看統計資料、熱門程度指標和客層資訊,請使用 YouTube Analytics API。「API 要求範例」頁面說明如何從 YouTube 數據分析擷取常用報表。

search.list 方法可讓您搜尋符合指定條件的 YouTube 影片、頻道或播放清單。您可以根據影片屬性、關鍵字或主題 (或上述的組合) 進行搜尋,也可以依據建立日期、觀看次數或評分等因素排序結果。

如同其他 YouTube Data API 要求,search.list 方法會傳回 YouTube 資源的 JSON 表示法。然而,不同於其他 YouTube 資源,搜尋結果並非具有專屬 ID 的永久物件。

許多要求搜尋公開的內容,因此不需要驗證。在下列範例中,只有第一個需要驗證,因為其特別要求輸入「my」影片。提交未經驗證的要求時,您必須加入 key 引數,指定 應用程式的專屬 API 金鑰

觀看次數最多的影片

這項要求會擷取已驗證使用者的所有影片,並依觀看次數遞減排序。

GET {base_URL}/search?part=snippet
                     &forMine=true
                     &order=viewCount
                     &type=video

可嵌入的高畫質影片

這項要求會搜尋含有特定屬性的影片,也就是可嵌入其他網站的高畫質影片。系統會按評分遞減排序結果。

GET {base_URL}/search?part=snippet
                     &order=rating
                     &type=video
                     &videoDefinition=high
                     &videoEmbeddable=true
                     &key={YOUR_API_KEY}

特定主題的影片

這項要求會對 YouTube Data API 含有字幕的影片執行關鍵字搜尋。

GET {base_URL}/search?part=snippet
                     &q=YouTube+Data+API
                     &type=video
                     &videoCaption=closedCaption
                     &key={YOUR_API_KEY}

依主題搜尋

如要搜尋特定主題的影片,請使用 Freebase 主題 (而非關鍵字)。YouTube 頻道和影片資源都包含 topicDetails 物件,其中包含與資源相關聯的 Freebase 主題 ID 清單。以主題為基礎的搜尋比關鍵字搜尋更聰明,因為 Freebase 主題能代表現實世界概念或事物的所有層面。

如要使用 Freebase 主題進行搜尋,您必須先使用 Freebase API 擷取主題 ID。這項要求會傳回與 Python 的 Freebase 主題相關聯的影片,主題 ID 為 /m/05z1_

GET {base_URL}/search?part=snippet
                     &topicId=/m/05z1_
                     &type=video
                     &key={YOUR_API_KEY}

搜尋播放清單或頻道

搜尋範圍不限於影片,以及搜尋播放清單或頻道。這項要求會擷取與關鍵字「足球」相符的播放清單。

GET {base_URL}/search?part=snippet
                     &q=soccer
                     &type=playlist
                     &key={YOUR_API_KEY}

如想尋找足球頻道,只要變更 type 參數即可。

GET {base_URL}/search?part=snippet
                     &q=soccer
                     &type=channel
                     &key={YOUR_API_KEY}

如果你想要所有足球相關內容 (頻道、播放清單和影片),可以搜尋全方位的資訊。如果您省略 type 參數,要求會擷取所有類型的內容

GET {base_URL}/search?part=snippet
                     &q=soccer
                     &key={YOUR_API_KEY}

建立及更新資源

目前為止我們檢查過的要求,都是使用 HTTP GET 方法來擷取 YouTube 資料。YouTube Data API 還提供了運用 HTTP POST 建立或更新 YouTube 資源的方法,例如影片、播放清單或頻道。下列要求提供了範例。

POST 方法包括 Request body,這是建立或更新資源的 JSON 表示法。您可以使用互動式工具,在 Google APIs Explorer 中建立 JSON 表示法。

建立訂閱項目

這項要求會將已驗證的使用者訂閱 GoogleDevelopers 頻道。換句話說,它會建立訂閱資源。

POST {base_URL}/subscriptions?part=snippet
Request body: {   'snippet': {     'resourceId': {       'kind': 'youtube#channel',       'channelId': 'UC_x5XG1OV2P6uZZ5FSM9Ttw'     }   } }

建立播放清單

這項要求會建立新的公開播放清單。

POST {base_URL}/playlists?part=snippet
Request body: {   'snippet': {     'title': 'New playlist',     'description': 'Sample playlist for Data API',   } }

將影片新增至播放清單

建立播放清單後,現在開始新增影片吧!這項要求會將影片新增至播放清單的開頭 ('position': 0)。

POST {base_URL}/playlistItems?part=snippet
  Request body:
  {
    'snippet': {
      'playlistId': '{PLAYLIST_ID}', 
      'resourceId': {
          'kind': 'youtube#video',
          'videoId': '{VIDEO_ID}'
        }
     'position': 0
      }
   }