質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

YouTube API

YouTube APIはYouTubeのビデオコンテンツと機能性をウェブサイト、アプリケーション、デバイスに統合することを可能にします。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

データベース設計

データベース設計はデータベースの論理的や物理的な部分を特定する工程です。

Q&A

解決済

1回答

1114閲覧

[Ruby on rails] youtube Data APIをつかって検索データをDBに保存する方法をご教示いただきたいです。

ponsata

総合スコア5

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

YouTube API

YouTube APIはYouTubeのビデオコンテンツと機能性をウェブサイト、アプリケーション、デバイスに統合することを可能にします。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

データベース設計

データベース設計はデータベースの論理的や物理的な部分を特定する工程です。

0グッド

1クリップ

投稿2020/09/02 14:46

前提・実現したいこと

youtube api を使った動画チャットサイト 

発生している問題・エラーメッセージ

youtube apiを使った動画投稿機能を作成したい。
キーワード検索から、youtubeのチャンネルID、動画ID、動画タイトル等取得ができたのですが、
取得データをDBに保存することが可能なのでしょうか 

###キーワード機能機能(find_videos)と該当データを表示 
youtubes_controller

require 'google/apis/youtube_v3' #YoutubeV3を使用するために、呼び出す require 'optimist' def find_videos(keyword, after: 7.months.ago, before: Time.now) youtube = Google::Apis::YoutubeV3::YouTubeService.new youtube.key = Rails.application.credentials.youtube[:api_key] keyword = params[:search] #キーワード検索した値を代入 next_page_token = nil opt = { q: keyword, #検索クエリで該当するワードを検索 type: 'video', max_results: 10, order: :date, page_token: next_page_token, published_after: after.iso8601, published_before: before.iso8601 } youtube.list_searches(:snippet, opt) end def index @youtubes = find_videos(@keyword) end

###検索ワードの入力と該当データを一覧表示する
index.html.erb

<div class = "search"> <%= form_tag(find_videos_youtubes_path, method: :get) do %> <%= text_field_tag :search, "", placeholder:"何かお探しですか?"%> <%= submit_tag 'search' %> <% end %> </div> <% @youtubes.items.each do |item| %> <% @snippet = item.snippet %> <% @video_id = item.id.video_id %> <p><%= @snippet.title %></p> <p><%= @snippet.published_at %><%= @snippet.channel_title %></p> <div><iframe width="356" height="200" src="https://www.youtube.com/embed/<%= @video_id %>" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></div> <%= link_to "投稿する", new_youtube_path %> <% end %>

試したこと

link_to でnewアクションに遷移する際に値を引数にして渡したのですが、
デバックツールで確認しても値が入っていない

そもそもyoutube data api で取得したデータは、DBに保存できないのでしょうか?
改善策が見つからなく困っております。
拙い説明ですが、分かる方がいらっしゃったらアドバイスをいただきたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Youtube APIは使ったことないのですが、
値を取得できているなら、その値に関しては保存できるはずです。

youtubeからどういうデータが返ってくるかわかりませんが、値を取得した後に、下記のようなイメージで、通常のモデルにデータを保存するのときのように値をセットして保存すればできるはずです。
(Modelはご自身の環境に合ったものに置き換えてください。youtubeというのがyoutubeからの返り値が入っているオブジェクトのイメージです。このオブジェクトからの値の取得の仕方は、実際どのように返り値がセットされてくるかによるので、あくまでイメージです。)

ruby

1model = Model.new 2model.channel_id = youtube.channel_id 3model.video_id = youtube.video_id 4model.save

投稿2020/09/02 15:37

Cojiro

総合スコア539

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ponsata

2020/09/03 09:53 編集

kojiro12345さんありがとうございます。 一歩前進することができました。 コントローラーのindexアクションで下記追加の記述をしました。 def index @youtubes = find_videos(@keyword)  #下記修正点 youtubes = find_videos(@keyword) youtubes.items.each do |item|   youtube = Youtube.new snippet = item.snippet video_id = item.id.video_id youtube.channel_id = snippet.channel_id youtube.channel_title = snippet.title youtube.video_id = video_id youtube.description = snippet.description   youtube.save  end end キーワード検索結果でyoutubeapiから返ってきた10の配列データをeach文で表し、その中にyoutubeモデルに保存するよう繰り返し処理をしています。 可能であれば、アドバイスをいただきたいのですが、この記述は、indexアクション内ですることはrails上正しいことなのでしょうか? また、もっとこうした方が良い等の意見があれば、参考させていただければと思います。 よろしくお願いしします。
Cojiro

2020/09/03 08:20

indexでやるのもそうですし、コントローラーでやるのも、Rails的にというか、Railsの利用しているアーキテクチャ的にいい書き方とは言えないですが、質問の内容的にだいぶ初心者かと思われますので、気にせず進めばいいかなと思います。 気になるのであれば、 rails RESTful とか rails MVCで検索すれば、いろいろ出てくると思います。
ponsata

2020/09/03 09:51

アドバイスいただきありがとうございます。 私もコントローラーでやるものなのか疑問に思っていたので、参考にさせていただきます。 おっしゃる通り初心者です、、笑 勉強になります。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問