日本語のところは環境に合わせて値を置き換えてください。
require 'twitter' client = Twitter::REST::Client.new do |config| config.consumer_key = 'コンシューマキー' config.consumer_secret = 'コンシューマシークレット' config.access_token = 'アクセストークン' config.access_token_secret = 'アクセストークンシークレット' end user = "ユーザ名" list_name = "リストの名前" list_tweet = client.list_timeline( user, list_name) list_tweet.each do |tw| puts tw.user.profile_image_uri(:normal) puts tw.user.screen_name puts tw.text puts tw.created_at puts tw.favorite_count puts tw.retweet_count end
これだけで取れてしまうのがすごい。
っていうか、リストのタイムラインを取得するのは認証必要なのかな?その辺がいまいちわかっていない。
今回ハマったところ
書きたかった本題はこれ。
最初は何度やっても下のエラーが出てダメでした。
/usr/local/rvm/gems/ruby-2.3.0/gems/twitter-5.16.0/lib/twitter/rest/response/raise_error.rb:15:in `on_complete': Sorry, that page does not exist. (Twitter::Error::NotFound) from /usr/local/rvm/gems/ruby-2.3.0/gems/faraday-0.9.2/lib/faraday/response.rb:9:in `block in call'
「ページが存在しない」って言われているけど、「存在してるよ!!なんでだよ!!」とモニターと一生懸命会話していました。
どうしてなのかさっぱりわからなかったけど、適当に試していたら以下の内容がダメっぽいです。
リスト名が日本語
日本語リストが取得できません。文字エンコードとかすればできるようになるのかもしれないですけど、結局解決方法はわからなかったですが、とりあえずリストの名前が日本語になっているとダメでした。
リスト名に_(アンダースコア)がある
これもダメっぽいです。リスト名にアンスコが入っていると取得できませんでした。
結局のところ
リスト名を英語にする+アンスコを使わない形でようやく取得ができるようになりました。地味なところでハマったわ・・・・ドキュメントとかに禁則文字として書いてあるのかなぁ。時間があるときに調べてみよう。
参考にしたサイト
Ruby - Twitter API でリスト取得! - mk-mode BLOG
Class: Twitter::User — Documentation for twitter (7.0.0)
ruby で twitter api を使用する | Lonely Mobiler
RubyのTwitter Gem使い方メモ(リスト周り) - light log
http://qiita.com/Fortinbras/items/5834a1ba1a734c55ca42
http://qiita.com/Fortinbras/items/90abcbd9b25268314943
Twitter gemでツイート検索する場合の要点、及び:since_id指定を有効にするモンキーパッチ - Qiita