その昔 creepy というソフトウェアがあった
Twitter の UserStream を拾い設定したフィルターにかけて処理をするという中身も動作も邪悪なツールである
また、独自のタスクをサブコマンドで実行するという機能もあった
本プロジェクトはこのツールをより使いやすく拡張しやすい形に書き直し gem としてリリースすることを目標とする
- サブコマンドを Ruby 初心者でも作れるよう簡単に
- プラガブルで Ruby 初心者でも拡張しやすく
- (Ruby の読み書きが出来無い人でも使えるようにしたい)
gem install agharta # インストール
agharta execute example/stream.rb # サンプルレシピを実行
agharta cat example/stream.rb # サンプルレシピを表示
agharta user:add # 新規アカウントを認証をし ~/.agharta/config.yml に追加
agharta user:default # デフォルトアカウントを変更
agharta user:list # アカウント一覧を表示
agharta edit stream.rb # ~/.agharta/recipes/stream.rb を編集
agharta cat stream.rb # ~/.agharta/recipes/stream.rb を表示
agharta execute stream.rb # ~/.agharta/recipes/stream.rb レシピを実行
agharta console # レシピコンテキストで REPL を起動
~/.agharta/recipes/stream.rb
stream {
# アカウント設定
# mitukiii アカウントを使用(config.yml 内で default 指定で省略可)
credentials :mitukiii
# アカウント設定
# set :consumer_key, …
# set :consumer_secret, …
# set :oauth_token, …
# set :oauth_token_secret, …
# アカウント設定
# set {
# :consumer_key => …,
# :consumer_secret => …,
# :oauth_token => …,
# :oauth_token_secret => …,
# }
# 全てのリプライを受け取る
replies_all
# params[:replies] = :all
# フォローからのメッセージを受け取る
with_followings
# params[:with] = :followings
# プッシュ/ロギングするキーワード設定
keyword {
ignore_self!
include 'mitukiii', 'たけしまさん'
exclude /^.*(RT|QT):? @[\w]+.*$/i
notify :im_kayac
log 'tenga.log'
}
# 全てのツイートを Fluent に保存/出力/ロギング
user {
all!
store :fluentd, 'timeline', :host => 'localhost', :port => 24224
log STDOUT
log 'tweet.log'
}
# @TENGA_PR のツイートをプッシュ/ロギング
user(:TENGA_PR) {
notify :im_kayac
log 'tenga.log'
}
# イベントをプッシュ/ロギング
event {
on :reply, :retweet, :direct_message, :favorite, :follow, :list_member_added, :list_user_subscribed
notify :im_kayac
log 'events.log'
}
}
あるいはこうも書ける
~/tools/stream.rb
require 'agharta'
recipe = Agharta.new
recipe.stream {
# do something...
}
recipe.execute
~/.agharta/recipes/filter.rb
filter {
credentials :mitukiii
# トラックキーワード指定
track :mitukiii, 'たけしまさん'
# params[:track] = 'mitukiii,たけしまさん'
# 追跡する場所指定
locations -122.75, 36.8, -121.75, 37.8
# params[:locations] = '-122.75,36.8,-121.75,37.87
# 追跡するユーザーID指定
follow 1, 2, 3
# params[:follow] = '1,2,3'
keyword { … }
user { … }
}
~/.agharta/recipes/sample.rb
sample {
credentials :mitukiii
keyword { … }
user { … }
}