"Twitter" は "X" に改称されましたが、本記事では名称の特定性の高さのため「Twitter」の名称を使っております。
twbot3.rbを新規にリリースしました。Twitter API v1の大部分が利用できなくなったことへの対応のためです。(2024.6.8)
twbot2.rbのバージョン0.21をリリースしました。Twitter API v1.1への対応済みです。またtwbot2.rbのAPIが更新されています(なお、バージョン0.20向けに書かれたプログラムはだいたいバージョン0.21でも動きます)。バージョン0.21向けドキュメントはGitHub wiki pageをご覧ください(現在は英語のみ)。 (2013.2.5)
2011年7月より、ダイレクトメッセージ関連のAPIが、古いOAuthトークンでは利用不可能になります。利用されたい場合は、再度認証をお願いします。なお再度認証を行うには、まずconfig.ymlファイルから'users/USERNAME'のエントリ(直下の'token'や'secret'も含む)を削除し、その後'ruby BOT_SCRIPT_NAME.rb add=USERNAME'を実行します。(2011.6.28)
twbot.rbの新しいバージョン「twbot2.rb」を公開開始しました。古いtwbot.rbはOAuthに対応しておらず、8月31日以降は利用出来なくなりますのでご注意下さい。なお、twbot.rbからtwbot2.rbへの移行は少ない労力で行えるようになっております。(2010.5.16)
twbot3.rbは、RubyにてTwitterのbot(プログラムにより自動的に発言を行うアカウント)作成を行う際に、その補助を行う(主に、OAuthトークンの管理を行う)ライブラリです。どちらかといえばフレームワークに近いかもしれません。
特に、定期的に特定の位置からデータを取得し(RSSやTwitterのタイムラインなど)、それに基づいて発言を行うbotを作るのに適したものとなっています。
Rubyインタプリタの導入されている、定期的にプログラムを実行させるためのPC
あいさつをランダムに発言するbot
require "./twbot3" TwBot.new("config-file.yml", "log-file.log").cui_menu do # ここに話す内容を定義する tweet_list = ["Good morning", "Good afternoon", "Good evening"] [tweet_list[rand(tweet_list.size)]] # 返り値は配列end
RSSの内容を発言するbot
#!/usr/bin/env ruby # -*- coding: utf-8 -*- RSS_URL = "http://d.hatena.ne.jp/maraigue/rss" require "cgi" require "open-uri" require "./twbot3" SELFDIR = File.dirname(__FILE__) TwBot.new("#{SELFDIR}/config-rsspost.yml", "#{SELFDIR}/error-rsspost.log").cui_menu do # Download RSS buf = nil open(RSS_URL){ |file| buf = file.read } result = [] @config["already_retrieved"] ||= "" newest_entry = false # Retrieve entries in RSS # (It is better to use REXML library; this program omits it # for simpleness.)] buf.scan(/<item.*?>.*?<\/item>/m).each do |entry| # Extract titles and URLs of entries from downloaded RSS title = nil entry.scan(/<title>(.*?)<\/title>/){|tmp| title = CGI.escapeHTML(tmp[0])} link = nil entry.scan(/<link>(.*?)<\/link>/){|tmp| link = CGI.escapeHTML(tmp[0])} # Ignore entries already retrieved by this program # # NOTE: @config["..."] values are kept for the next running # of the program. break if link == @config["already_retrieved"] # Adds a message to the list to be tweeted later. # # Because RSS stores entries from newer one, to post messages in the # original order, the message have to be added to the bottom of the # array 'result'. result.unshift(TwBot."[AUTO POST] #{link} #{title}") if title && link # Keep the URL of the newest entry in the data retrieved now unless newest_entry newest_entry = true @config["already_retrieved"] = link end end # Set logged message @logmsg = "(#{result.size} post added)" # Return the result # # NOTE: the returned value must be an array of tweets when a bot # is constructed (called by 'ruby SCRIPTNAME.rb load') result end詳細(英語): maraigue/twbot3.rb · GitHub
Help for twbot3.rb version 0.30 (English)
OLD VERSIONS:
TwBot#get_followers
, TwBot#get_friends
, TwBot#follow
, TwBot#unfollow
, TwBot#following_status
, TwBot.retrieve_followers
, TwBot.retrieve_friends
, TwBot.make_following
, TwBot.make_unfollowing
, TwBot.check_following
)を追加した。(C)2008- H.Hiro(Maraigue)
twbot.rbの複製・改変の条件は、(新)BSDライセンスに合わせます。BSDライセンス(原文) BSDライセンス(参考訳)
簡単に言えば、このソフトは無保証であり、また再配布(改変した上での再配布含む)の場合にも元の著作権表示などの部分が記されている必要があります。
私が使いやすいように書いているため、使いにくい点があるかもしれません。あらかじめご了承下さい。要望は可能な限りお受けします。
スクリプトに関する報告は、Twitter/h_hiro_および、メールアドレスmain(あっとまーく)hhiro.netにお願いします。
HHiro.netのコンテンツは、別途記載があるものを除き、Creative Commons 表示-非営利-改変禁止 2.1 日本の条件のもとでご利用頂けます。