TwitterAPIでユーザーのタイムラインから画像URLを取得し、それをDBに入れる方法ではまっています。
やりたいこと
・ユーザーをテーブルUserに登録してなければ登録
・ユーザーに関連する画像を検索し、登録がなければテーブルPostに登録
・Userはhas_many post
・Postはbelongs_to user
・twitterからの情報取得はパッチのように利用したい。
下記のようにコードを書いたのですが、うまく動きません。
どこを修正すればよろしいでしょうか。
lang
1 require 'twitter' 2 require "active_record" 3limit = 100 # 取得するツイートの上限数 4target = "screan_name" # 画像URLを取得するユーザーの名前 5 6client = Twitter::REST::Client.new do |config| 7 config.consumer_key = "---------" 8 config.consumer_secret = "---------" 9 config.access_token = "---------" 10 config.access_token_secret = "---------" 11end 12 13#ユーザーが登録されていなかったら登録する。 14#screan_nameはnicknameに入れる。 15class User < ActiveRecord::Base 16 def create_user 17 user = User.find_or_create_by(nickname:screan_name ) 18 end 19end 20 21begin 22 # limitで指定された数だけツイートを取得 23 client.search(target, :locale => "ja", :result_type => "recent", :include_entity => true).take(limit).map do |tweet| 24 # entities内にメディア(画像等)を含む場合の処理 25 if tweet.media? then 26 tweet.media.each do |value| 27 image = value.media_url 28 end 29 end 30 end 31 32# 検索ワードでツイートを取得できなかった場合の例外処理 33rescue Twitter::Error::ClientError 34 puts "ツイートを取得できませんでした" 35 36# リクエストが多すぎる場合の例外処理 37rescue Twitter::Error::TooManyRequests => error 38 sleep error.rate_limit.reset_in 39 retry 40end 41 42#取得した画像URLをPostのpost_imageに入れる 43#ここがうまく動いていません。 44class Post < ActiveRecord::Base 45 def create_post 46 user = User.find_by(nickname: target) 47 image.each do |i| 48 i.post = User.post.find_or_create_by(post_image: image) 49 puts "成功しました" 50 end 51 end 52end 53 54 55
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2014/11/16 15:17