gpt4 book ai didi

ruby - 为使用 Data API V3 检索的多个视频资源创建 YT 播放器

转载 作者:行者123 更新时间:2023-12-03 06:32:23 26 4
gpt4 key购买 nike

我花了一天的大部分时间阅读文档并观看有关如何在我的网站上嵌入 YouTube 的各种视频,并取得了一些不错的进展。但我现在有点卡住了。

我在一个网站上工作,除其他外,它将查看我的用户的个人资料,找到他们最喜欢的团队,然后显示该团队上传到其官方 YouTube channel 的视频。

我正在使用 Data APi v3 并使用 HTTParty。我能够获取视频 ID,这是检索每个视频资源所需的。这很好用。这是代码。 (y_user 是 channel 名称,y_key 是我的 API key )

__

获取 channel 信息....

response = HTTParty.get("https://www.googleapis.com/youtube/v3/channels?part=id%2C+snippet&forUsername=#{y_user}&key=#{y_key}")

channel_id = response["items"][0]["id"]

一个新调用,这次使用 channel ID 并从 channel 请求六个视频记录。
channel_info = HTTParty.get("https://www.googleapis.com/youtube/v3/search?part=id%2C+snippet&channelId=#{channel_id}&maxResults=6&order=date&key=#{y_key}")

现在从每个视频记录中获取视频 ID..
@video_ids = []
channel_info["items"].each do |item|
@video_ids.push(item["id"]["videoId"])
end

获取每个视频 ID 的视频资源...并检索播放器的嵌入代码。
@videos = []
@video_ids.each do |video_id|
source = HTTParty.get("https://www.googleapis.com/youtube/v3/videos?part=id,snippet,player&id=#{video_id}&key=#{y_key}")
single_video = source["items"][0]["player"]["embedHtml"]
@videos.push(single_video)
end

和我的 HTML....
<% @videos.each do |v| %>
<div class="video-slide"><%= v %></div>
<% end %>

这为我返回的是与我请求的六个视频相对应的六个 iframe,这就是我想要的。您可以看到每个视频 ID 都是唯一的......
<iframe type='text/html' src='http://www.youtube.com/embed/fNyKJjARuj4' width='640' height='360' frameborder='0' allowfullscreen='true'/>

<iframe type='text/html' src='http://www.youtube.com/embed/6HxJG60kZCI' width='640' height='360' frameborder='0' allowfullscreen='true'/>

ETC....

我现在不清楚的是如何为 EACH 渲染一个播放器(每个播放器都在一张幻灯片中)。如果我保持我的代码不变,我可以看到如图所示的 iframe HTML,但没有播放器。

但是如果我添加 .html_safe....
<div class="video-slide"><%= v.html_safe %></div>

它呈现一个播放器 - 但仅适用于其中一个 iframe。即使在检查代码时,其他的也会完全消失。

我不确定此时该做什么。我怀疑我不应该使用 html_safe 而是使用 iframe api 信息页面(如下)中的信息手动为每个 iframe 创建播放器,但此时我有点不知所措。任何帮助将不胜感激。

https://developers.google.com/youtube/iframe_api_reference#Examples

最佳答案

好吧,所以我最终只是删除了这个:

@videos = []
@video_ids.each do |video_id|
source = HTTParty.get("https://www.googleapis.com/youtube/v3/videos?part=id,snippet,player&id=#{video_id}&key=#{y_key}")
single_video = source["items"][0]["player"]["embedHtml"]
@videos.push(single_video)
end

相反,只是将原始 video_ids 数组返回给 DOM,然后遍历该数组以获取每个视频 ID,然后将 iframe 包裹在它周围,就像这样......
<% @video_ids.each do |v| %>
<iframe id="player" class="video-slide" type="text/html" width="600" height="375"
src="http://www.youtube.com/embed/<%= v %>?enablejsapi=1&origin=http://localhost:3000.com"
frameborder="0"></iframe>
<% end %>

它有效....或多或少:)

关于ruby - 为使用 Data API V3 检索的多个视频资源创建 YT 播放器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19008916/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com