Ruby 为使用数据API V3检索的多个视频资源创建YT播放器
我花了一天的大部分时间阅读文档,观看各种视频,了解如何将YouTube嵌入我的网站,并取得了一些不错的进展。但我现在有点卡住了 我在一个网站上工作,该网站将查看我用户的个人资料,获取他们最喜欢的团队,然后显示该团队上传到其官方YouTube频道的视频 我正在使用DataAPIv3和HTTParty。我能够获得视频ID,我需要它来检索每个视频资源。那很好。这是代码。(y_user是通道名称,y_key是我的API key) __ 正在获取频道信息Ruby 为使用数据API V3检索的多个视频资源创建YT播放器,ruby,iframe,youtube,youtube-data-api,Ruby,Iframe,Youtube,Youtube Data Api,我花了一天的大部分时间阅读文档,观看各种视频,了解如何将YouTube嵌入我的网站,并取得了一些不错的进展。但我现在有点卡住了 我在一个网站上工作,该网站将查看我用户的个人资料,获取他们最喜欢的团队,然后显示该团队上传到其官方YouTube频道的视频 我正在使用DataAPIv3和HTTParty。我能够获得视频ID,我需要它来检索每个视频资源。那很好。这是代码。(y_user是通道名称,y_key是我的API key) __ 正在获取频道信息 response = HTTParty.get("
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"]
一个新的呼叫,这次使用频道id并从频道请求六个视频记录
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'/>
等等
我现在不清楚的是如何为每个人呈现一个玩家(每个人都将生活在幻灯片中)。如果我让代码保持原样,我可以看到如图所示的iframe HTML,但没有播放器
但是如果我添加.html\u safe
<div class="video-slide"><%= v.html_safe %></div>
它渲染一个玩家,但只渲染其中一个iFrame。即使在检查代码时,其他代码也会完全消失
现在我不知道该怎么办。我怀疑我不应该使用html_-safe,而是应该使用iframe api信息页面(如下)中的信息手动为每个iframe创建播放器,但我现在有点不知所措。任何帮助都将不胜感激
好吧,我最后只是删除了这个:
@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
取而代之的是将原始视频ID数组返回给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 %>
它是有效的……或多或少:)是的,我已经研究了几个似乎相关的问题,但不清楚哪一个是准确的(或者如果有的话):(