Youtube Data Api: как добавить ссылку на перенаправление для каждого видео с трендов Youtube - PullRequest
0 голосов
/ 12 декабря 2018

Я работаю над приложением, в котором отображаю текущие трендовые видео на YouTube (миниатюру, название видео и название канала) через YoutubeDataApi.Я хотел бы получить доступ к правильному 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 %>

Gem, используемый в этом приложении: драгоценный камень 'google-api-client', '>0.7'

Может ли кто-нибудь помочь мне?Заранее спасибо

1 Ответ

0 голосов
/ 12 декабря 2018

Какой драгоценный камень вы используете, чтобы мы могли лучше понять, с чем вам нужно работать.

Просто возьмите это с крошкой соли, но у вашего изображения есть src "<% = video.snippet.thumbnails.default.url%> "

Указывает ли этот URL-адрес на URL-адрес видео?Если это просто изменить значение href на это video.snippet.thumbnails.default.url.

В настоящее время с этим href все ваши видео откроют новую вкладку на "https://www.youtube.com/feed/trending"

Есть ли ссылка на video.snippet (video.snippet.url)?

Да, вам также нужно будет обернуть вокруг заголовок и миниатюру, чтобы при нажатии на них она связывалась.Цикл вы получаете данные для каждого отдельного видео, поэтому, если вы можете получить правильный URL-адрес, вам просто нужно поместить ссылки вокруг всего, и вы должны быть хорошими.

РЕДАКТИРОВАТЬ:

Я думаю, что у меня естьОтвет для вас. Вы уже отправляете для получения идентификаторов видео в API, поэтому все, что вам нужно сделать, чтобы получить их, это сделать, `video.id v = # {video.id} вместо video_id, если вы не сделаетедругая переменная с таким названием и установила ее равной 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

Приветствия

...