インターネットのおかげでほぼ人力ならぬほぼ独学でRubyの勉強を日々たんたんと進めて来られている訳ですが、ナウな情報(それかホットな情報かな?どちらにしろ古いか。)と云いますか、今の流行りと云いますか、そういう流れるものは、コミュニティに属さない形でのほぼ独学という学習形態ではなかなか掴みにくい部類に入ると思われます。ところがこれもインターネットのおかげで色々な情報を得る事ができるようになった訳です。
全国各地で行われてる個人クラスでの勉強会やセミナーもインターネットの賜物です。
ナウといえばTwitterです。おーい磯野、Twitterを使ってナウな情報を仕入れるスクリプトを作ろうぜー。というのが今回のネタです。
ところで、ほぼ独学というのは話のネタに対する話を膨張するための表現であって、ぼくは俺様系の人間ではないのでそこは勘違いしないで頂きたい。
常日頃からラッパーの方以上にいろいろな方に感謝している。そこんとこヨロシク。
今回はRuby OAuthと、Twitter Ruby Gemを使った2パターンを調べてみました。
TwitterのAPIから、GET search/tweets | Twitter Developers: を利用します。
参考サイトと各ドキュメントの紹介。
GET search/tweets | Twitter Developers:
https://dev.twitter.com/rest/reference/get/search/tweets
Documentation for oauth (0.4.7):
http://www.rubydoc.info/gems/oauth/0.4.7
Documentation for twitter (5.14.0):
http://www.rubydoc.info/gems/twitter
Ruby – OAuth gemだけでTwitter APIを使ってみる – Qiita:
ではまず何をするにもアクセスキーやらが必要になるので、apps.twitter.comで自分のアカウントを使って取得しておきましょう。やり方はぐぐってちょ。
使用しているURLについてはGET search/tweets | Twitter Developers:で調べます。
OAUTHを使ったサンプル
※引数でキーワードを指定します。
#! /usr/bin/env ruby # coding: utf-8 require 'oauth' require 'json' consumer_key = "ぐぐってちょ" consumer_secret = "ぐぐってちょ" access_token = "ぐぐってちょ" access_token_secret = "ぐぐってちょ" con = OAuth::Consumer.new( consumer_key, consumer_secret, site:'https://api.twitter.com/' ) ep = OAuth::AccessToken.new( con, access_token, access_token_secret ) #GET keyword = ARGV[0] res = ep.get("https://api.twitter.com/1.1/search/tweets.json?q=#{keyword}&count=1&result_type=popular") result = JSON.parse(res.body) result["statuses"].each do |message| puts message["user"]["name"] puts message["text"] end
Twitterを使ったサンプル
#! /usr/bin/env ruby # coding utf-8 require 'twitter' client = Twitter::REST::Client.new do |config| config.consumer_key = "ぐぐってちょ" config.consumer_secret = "ぐぐってちょ" config.access_token = "ぐぐってちょ" config.access_token_secret = "ぐぐってちょ" end client.search("ruby", result_type: "popular").take(1).each do |tweet| puts tweet.user.name puts tweet.text end
Twitterを使った方がコンパクトにできますが、応用が効きそうなのはOAUTHな気がします。
このサンプルは中身はOAUTHはRubyを引数にする必要があるけど兼ね同じです。
実行結果。
OAUTH $ ruby twbot.rb ruby la Repubblica Caso Ruby, "Nicole Minetti riceve ancora da Berlusconi un bonifico di 15mila euro al mese" http://t.co/Dbhf9Hkeoj http://t.co/LJ55nu41vw TWITTER $ ruby twbot_twgems.rb la Repubblica Caso Ruby, "Nicole Minetti riceve ancora da Berlusconi un bonifico di 15mila euro al mese" http://t.co/Dbhf9Hkeoj http://t.co/LJ55nu41vw
langをjaにすれば日本語のものに絞れますし、他にもユーザーも絞ったりすることもできるし、抽出できるキーは豊富にあるので、アイデア次第で何とでもなりそうだ。
何とでもなりそうで、HTMLが書けないと汎用性がガタ落ちな気がする。そこでRailsですよ。となるのかどうかはまた別のお話だろう。
Related Posts
- やっぱりもうちょいソケットをやろう。PerlでやればPerlも覚えて一石二鳥だし。
- math.hをインクルードして数学関数を使う場合にgccだけでコンパイルできない本当の理由は??
- TCPEchoサーバーから超簡易TCPwebサーバーを作ってみた。