Youtube Data Api:如何将重定向链接添加到YouTube趋势中的每个视频

时间:2018-12-12 10:19:25

标签: ruby-on-rails youtube-data-api

我正在开发一个应用程序,该应用程序通过YoutubeDataApi在YouTube上显示当前的流行视频(缩略图,视频标题和频道标题)。每当我单击趋势视频的缩略图或标题时,我都希望访问正确的URL。 这是我在控制器中使用的代码:

# frozen_string_literal: true

class WelcomeController < ApplicationController


  def index
    youtube_data_api = YoutubeDataApi.new.client
    @result, @errors = youtube_data_api.list_videos 'snippet, id', chart: 'mostPopular', region_code: 'FR', max_results: '50'
  end
end

这是我在视图中使用的代码:

<div style="margin:0 auto; padding:20px 0;">
  <% @result.items.each do |video| %>
      <a href="https://www.youtube.com/watch?v=#{video_id}" target="_blank" style="color:black"><img src="<%= video.snippet.thumbnails.default.url %>" height="90" width="120">

      <div id="channel_title">
        <u><b><%= video.snippet.channel_title %></u></b>
      </div>  

      <div id="video_title" style="margin-bottom: 50px;">
        <i><%= video.snippet.title %></i>
      </div>

      </a>
  <% end %>

此应用中使用的宝石:宝石'google-api-client', '>0.7'

有人可以帮助我吗?预先感谢

1 个答案:

答案 0 :(得分:1)

您正在使用哪种宝石,以便我们可以更好地了解您的工作。

只需加一点盐即可,但是您的图片具有src“ <%= video.snippet.thumbnails.default.url%>”

该网址是否指向视频网址?如果确实如此,只需将href值更改为该video.snippet.thumbnails.default.url。

当前具有该href的所有视频都会在“ https://www.youtube.com/feed/trending”中打开一个新标签

在video.snippet(video.snippet.url)上是否有网址?

哦,您还需要在标题和缩略图之间都加上一个,以便在单击它们时将它们链接起来。通过循环,您将获取每个视频的数据,因此,如果您可以获取正确的网址,则只需在所有内容之间放置链接,就可以了。

编辑:

我想我有你的答案。您已经发送了将视频ID检索到api的方法,因此获取视频所需要做的就是`video.id v =#{video.id}而不是video_id,除非您创建另一个变量that并将其设置为video.id。 在您的视图循环中:

<div style="margin:0 auto; padding:20px 0;">
  <% @result.items.each do |video| %>
      <a href="https://www.youtube.com/watch?v=<%= #{video.id} %>" target="_blank" style="color:black"><img src="<%= video.snippet.thumbnails.default.url %>" height="90" width="120">

      <div id="channel_title">
        <u><b><%= video.snippet.channel_title %></u></b>
      </div>  

      <div id="video_title" style="margin-bottom: 50px;">
        <i><%= video.snippet.title %></i>
      </div>

      </a>
  <% end %>

因此,只需简单地将注入href的变量从video_id更改为video.id。但是,YouTube给您的只是视频ID,而不是您所注意到的完整链接。只需进行少量的红宝石变量更改,您就可以开始使用! :)

哦,忘了提起红宝石,除非您插入上面显示的类似erb的标签,否则它不会出现。

做同一件事的一种可能更好的方法是:

<%= link_to "https://www.youtube.com/watch?v=#{video.id}", style="color: black;", target="_blank", style="color: black;" do %>

.... (stuff you are wrapping)

<% end %> 

一共:

<div style="margin:0 auto; padding:20px 0;">
      <% @result.items.each do |video| %>
          <%= link_to "https://www.youtube.com/watch?v=#{video_id}", style="color: black;", target="_blank", style="color: black;" do %>
            <img src="<%= video.snippet.thumbnails.default.url %>" height="90" width="120">

            <div id="channel_title">
              <u><b><%= video.snippet.channel_title %></u></b>
            </div>  

            <div id="video_title" style="margin-bottom: 50px;">
              <i><%= video.snippet.title %></i>
            </div>

        <% end %>
      <% end %>

https://api.rubyonrails.org/v5.2.1/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to

欢呼