Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 为使用数据API V3检索的多个视频资源创建YT播放器_Ruby_Iframe_Youtube_Youtube Data Api - Fatal编程技术网

Ruby 为使用数据API V3检索的多个视频资源创建YT播放器

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("

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

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

我正在使用DataAPIv3和HTTParty。我能够获得视频ID,我需要它来检索每个视频资源。那很好。这是代码。(y_user是通道名称,y_key是我的API key)

__

正在获取频道信息

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


它是有效的……或多或少:)

是的,我已经研究了几个似乎相关的问题,但不清楚哪一个是准确的(或者如果有的话):(