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 代表擁有者發出要求。您也可以選取授權範圍,指定 APIs Explorer 可執行的要求類型。

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

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

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

擷取頻道資訊

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

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

這項要求的回應包含已驗證使用者頻道的頻道 ID 和 contentDetails。contentDetails 包含與頻道相關聯的多個系統生成播放清單。後續許多要求都需要頻道 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 會將所有上傳的影片新增至與頻道相關聯的播放清單。如要取得上傳影片清單,請查詢上述頻道資訊回應中傳回的「uploads」播放清單,並使用 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 的永久物件。

許多要求會搜尋公開內容,因此不需要驗證。在下列範例中,只有第一個範例需要驗證,因為它明確要求「我的」影片。提交未經驗證的要求時,您需要加入 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}

搜尋播放清單或頻道

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

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
      }
   }