嵌入 YouTube 播放列表,但先播放最后一个视频
Embed a YouTube playlist but play the last video first
如何将 YouTube 播放列表(来自我不管理的频道)嵌入到我自己的网站中,但 select 播放列表中的 last 视频作为谁先玩?
这当然没有想象中那么容易。你会认为你可以像使用 Vimeo 一样向 URL 添加一个索引参数。但是没有。
您必须使用 PlaylistItems endpoint of the YouTube Data API (yes, by creating a project in Google Cloud Platform 并生成一个 API 键)到 return 播放列表中所有视频的列表,获取其中最后一项的视频 ID列表,然后为您的 iframe
构建一个 URL,其中包括视频 ID 和播放列表 ID。
const apiKey = [YOUR_API_KEY]
const playlistId = 'PL....'
const urlBase = 'https://youtube.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults=50&playlistId=' + playlistId + '&key=' + apiKey
const setIFrameSrc = async () => {
let data = await fetch(urlBase).then(response => response.json()) // get first page of items
while (data.nextPageToken) // are there more items?
data = await fetch(urlBase + '&pageToken=' + data.nextPageToken).then(response => response.json()) // get next page of items
const snippet = data.items.pop().snippet // pop() grabs the last item
document.getElementById('[YOUR_IFRAME_ID]').src = 'https://www.youtube.com/embed/' + snippet.resourceId.videoId + '?listType=playlist&list=' + playlistId
}
setIFrameSrc()
如何将 YouTube 播放列表(来自我不管理的频道)嵌入到我自己的网站中,但 select 播放列表中的 last 视频作为谁先玩?
这当然没有想象中那么容易。你会认为你可以像使用 Vimeo 一样向 URL 添加一个索引参数。但是没有。
您必须使用 PlaylistItems endpoint of the YouTube Data API (yes, by creating a project in Google Cloud Platform 并生成一个 API 键)到 return 播放列表中所有视频的列表,获取其中最后一项的视频 ID列表,然后为您的 iframe
构建一个 URL,其中包括视频 ID 和播放列表 ID。
const apiKey = [YOUR_API_KEY]
const playlistId = 'PL....'
const urlBase = 'https://youtube.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults=50&playlistId=' + playlistId + '&key=' + apiKey
const setIFrameSrc = async () => {
let data = await fetch(urlBase).then(response => response.json()) // get first page of items
while (data.nextPageToken) // are there more items?
data = await fetch(urlBase + '&pageToken=' + data.nextPageToken).then(response => response.json()) // get next page of items
const snippet = data.items.pop().snippet // pop() grabs the last item
document.getElementById('[YOUR_IFRAME_ID]').src = 'https://www.youtube.com/embed/' + snippet.resourceId.videoId + '?listType=playlist&list=' + playlistId
}
setIFrameSrc()