この本読んでみて思ったのですが、「恋するプログラム―Rubyでつくる人工無脳」をツイッターボット用にPHPを使用して

書き直した、そんな感じの本です。「恋するプログラム」にはRubyの文法やオブジェクト指向についての解説がわかり易く書かれています。

「Twitterボットプログラミングテクニック」のほうはPHPの文法等について詳しい説明はありませんがボットが応答(返事)をするための

クラスや辞書クラスの作り方、形態素解析、マルコフ連鎖等ボット作成のためのアイデアは十分に書かれています。プレミア価格の「恋するプログラム」を購入するよりかは安く入手できるのでお勧めです。

 

恋するプログラム—Rubyでつくる人工無脳

一度は読んでみたいものの、アマゾンマーケットプレイスのプレミア価格には手が出せず

モンモンとしている方は、「恋するプログラム 人工知能 講義録」で検索してみよう。

チャプター8までありました。9は見つからず。

投票数100くらいで復刊交渉が始まるらしいので是非、復刊ドットコムで

復刊実現の投票をお願いします。

sudo apt-get install ttf-arphic-uming
cd /usr/share/fonts/truetype/arphic
sudo cp ../takao-mincho/TakaoMincho.ttf uming.ttc

 

このまま上記を実行してブラウザ(Chrome)再起動で治りました。

home_timelineを使って20個以上のツイートを取得する。

home_timelineでは800個のツイートを取得できるようです。
まずはhome_timelineにcountという引数を指定して200個
のツイートを取得、その後にmax_idを使用して800個取得してみます。

#!/usr/bin/env ruby -Ku

require ‘rubygems’ # ←Ruby 1.9では不要
require ‘twitter’
require ‘pp’

# ログイン

Twitter.configure do |config|
config.consumer_key = ”
config.consumer_secret = ”
config.oauth_token = ”
config.oauth_token_secret = ”
end
#自分のタイムラインを取得

timeline =Twitter.home_timeline(:count => 200)

timeline.each{ |status|
str = “(#{status[:id]}) #{status[:user][:name]} (#{status[:created_at]})”
puts str
}

home_timelineメソッドの引数に「:count => 200」と指定するだけで
約200個のツイートが取得できます。

timeline.each{}の部分は配列からデータを取り出すための方法です。Rubyの入門書で
配列やイテレータで調べると具体的な使い方が載っています。

次に引数countとmax_idを使って約800個のツイートを取得します。
max_idにはツイートに付与されているidの数字を使います。指定された
idよりも古い(数字の小さい)ツイートが取得できるようになります。
#タイムラインを取得

maxid = 0
timeline =Twitter.home_timeline(:count => 200)
timeline.each{ |status|
str = “(#{status[:id]}) #{status[:user][:name]} (#{status[:created_at]})”
puts str
maxid = status[:id] – 1
}

puts “********************************************”

3.times{
timeline =Twitter.home_timeline(:count => 200,:max_id => maxid)
timeline.each{ |status|
str = “(#{status[:id]}) #{status[:user][:name]} (#{status[:created_at]})”
puts str
maxid = status[:id] – 1
}
}

まずmaxid = 0で変数宣言してます。
引数max_idは指定されたidを含むより小さいidのツイートを取得するので、
timeline.each{}の中のmaxid = status[:id] – 1で
取得した約200個のツイートの最後のツイートidから−1を引いた数字を
maxidに指定してます。

より正確にツイートを取得するにはsince_idを併用するみたいです。

参考
https://dev.twitter.com/docs/api/1.1/get/statuses/home_timeline
https://dev.twitter.com/docs/working-with-timelines

#!/usr/bin/env ruby -Ku

require ‘rubygems’ # ←Ruby 1.9では不要
require ‘twitter’
require ‘pp’

# ログイン

Twitter.configure do |config|
config.consumer_key = ‘******************’
config.consumer_secret = ‘***************************’
config.oauth_token = ‘*********************************’
config.oauth_token_secret = ‘*************************’
end
t =Twitter.get(‘/1.1/application/rate_limit_status.json’)

pp t[:body][:resources][:statuses][:”/statuses/home_timeline”][:remaining]
pp t[:body][:resources][:statuses][:”/statuses/home_timeline”][:reset]
pp t[:body][:resources][:statuses][:”/statuses/home_timeline”][:limit]

pp Time.at(t[:body][:resources][:statuses][:”/statuses/home_timeline”][:reset])

#end

TwitterAPI1.1になって15分で15回しか実行できないAPIがるので、試行錯誤しながらBotを作っていると直ぐに上限回数に達して

しまいます。残りの実行可能回数を確認するためのコードです。

「t =Twitter.get(‘/1.1/application/rate_limit_status.json’)」の部分で各APIの制限回数、残り回数、リセット時刻が取得できます。

これもハッシュの型で取得できるので、知りたい値のキーを指定すれば簡単に取得できます。

リセット時刻の値は数字で取得されるので、「Time.at()」を使って時刻の形式に変換しています。

[:body][:resources][:statuses]にはhome_timelineの制限回数の他にmentions_timelineやuser_timelineなどがあります。

[:”/statuses/mentions_timeline”]
[:”/statuses/user_timeline”]

twitSandbox1.1を使うと各APIで取得できるデータが簡単に見ることが可能です。

「’/1.1/application/rate_limit_status.json’」などのエンドポイント(URL)も載っているので参考になります。

2018年7月
« 4月    
1234567
891011121314
15161718192021
22232425262728
293031  

カテゴリー

広告

現在の住まい、将来はVPSへ引越します。 ロリポップの上位版です。

広告

広告

最近のコメント

    広告

    Railsを動かす予定のVPS。無料キャンペーン中。

    広告