0

1 日の大半をドキュメントを読んだり、自分のサイトに YouTube を埋め込む方法に関するさまざまなビデオを見たりして、ある程度の進歩を遂げました。しかし、今は少し立ち往生しています。

私は、とりわけ、私のユーザーのプロフィールを見て、お気に入りのチームを取得し、そのチームが公式の YouTube チャンネルにアップロードしたビデオを表示するサイトに取り組んでいます。

私は Data API v3 を使用し、HTTParty を使用しています。各ビデオ リソースを取得するために必要なビデオ ID を取得できます。それはうまくいきます。これがそのコードです。(y_user はチャンネル名、y_key は API キーです)

__

チャンネル情報を取得しています....

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 を使用し、チャネルから 6 つのビデオ レコードを要求します。

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

これが私に返すのは、私が要求した 6 つのビデオに対応する 6 つの 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_safe を追加すると....

<div class="video-slide"><%= v.html_safe %></div>

プレーヤーをレンダリングしますが、iframe の 1 つに対してのみです。コードを調べても、他のものは完全に消えます。

この時点で何をすべきかわからない。html_safe を使用するべきではなく、代わりに iframe api 情報ページ (下記) の情報を使用して各 iframe のプレーヤーを手動で作成する必要があると思いますが、この時点で少し圧倒されます。どんな助けでも大歓迎です。

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

4

1 に答える 1