自動処理フレームワークautomaticrubyの紹介
露崎です。 本日は個人で開発に参加しているRubyのOSSプロジェクト、automaticrubyについて紹介してみたいと思います。 automaticruby/automaticruby · GitHub
automaticrubyとは
automaticrubyとは取得した情報を別のサービスに受け渡す処理を行うgemパッケージです。 プラグイン形式で取得できる、受け渡せるサービスを追加する事が出来ます。 IFTT とかplagger みたいなものと言えば解りやすいかも知れません コマンドライン操作を必要とするので開発者向けになります。
インストール
gemとして公開されているのでインストールは簡単です。
1 2 3 4 5 |
[sourcecode lang="text"] $ gem install automatic $ automatic scaffold $ automatic -c ~/.automatic/config/example/feed2console.yml [/sourcecode] |
上記コマンドの実行でrssを取得し、コンソール上にrssを出力するという事が出来ます。 githubのソースを落として来て実行する方法もある。
1 2 3 4 5 6 7 |
[sourcecode lang="text"] $ git clone git://github.com/automaticruby/automaticruby.git $ cd automaticruby $ bundle install --path vendor/gems $ bin/automatic scaffold $ bin/automatic -c ~/.automatic/config/example/feed2console.yml [/sourcecode] |
こちらは開発者向け、最新のプラグインを使いたい人向け。
レシピ
どこから情報を取得してどこに出力するのかを記述するものを「レシピ」と呼びます。 このレシピはyml形式で記述されていて、先ほど実行したレシピは以下のものになります
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[sourcecode lang="text"] global: timezone: Asia/Tokyo cache: base: /tmp log: level: info plugins: - module: SubscriptionFeed config: feeds: - http://blog.id774.net/post/feed/ - module: PublishConsole [/sourcecode] |
plugins下の- moduleの指定で使用したいプラグインを決め、設定が必要な場合はプラグインに合ったconfig指定をしてやります。
目次
ドキュメント
使用できるプラグインや詳細なドキュメントは以下で確認できます。
automaticruby/doc/README.ja at master · automaticruby/automaticruby · GitHub
automaticruby/doc/PLUGINS.ja at master · automaticruby/automaticruby · GitHub
レシピ例
実際に「なにが出来るのか」というのをレシピを例に紹介して行きます gem installで入れたautomaticrubyにはまだ入っていないプラグインが数点あるので 実行する時はgithubからリポジトリを落として来た物を実行するのをお勧めする。
Tumblrからimgファイルのダウンロード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
[sourcecode lang="text"] plugins: - module: SubscriptionTumblr config: urls: - http://soramugi.tumblr.com pages: 2 - module: FilterImageSource - module: FilterIgnore config: link: - 'avatar' - '1280' - module: FilterImage - module: StorePermalink config: db: tumblrImg.db - module: StoreTargetLink config: path: /Users/your_homedir/Desktop/tumblr interval: 5 [/sourcecode] |
Pocketのスターを付けたURLをはてなブックマーク
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
[sourcecode lang="text"] plugins: - module: SubscriptionPocket config: consumer_key: your_consumer_key access_token: your_access_token optional: favorite: 1 count: 10 - module: StorePermalink config: db: pocket2hatebu.db - module: PublishHatenaBookmark config: username: your_username password: your_password [/sourcecode] |
郵便番号から現在の天気を取得してTwitterに投稿
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
[sourcecode lang="text"] plugins: - module: SubscriptionWeather config: zipcode: 166-0003 - module: FilterIgnore config: title: - '曇' - '雨' - module: PublishTwitter config: consumer_key: your_consumer_key consumer_secret: your_consumer_secret oauth_token: your_oauth_token oauth_token_secret: your_oauth_token_secret tweet_tmp: 'いーい天気♪(cv:伊藤伸恵)' [/sourcecode] |
簡易的なTwitterBOT
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
[sourcecode lang="text"] plugins: - module: SubscriptionText config: titles: - 'huge' - 'foge' - module: FilterRand - module: FilterOne - module: PublishTwitter config: consumer_key: your_consumer_key consumer_secret: your_consumer_secret oauth_token: your_oauth_token oauth_token_secret: your_oauth_token_secret tweet_tmp: '{title}' [/sourcecode] |
まとめ
以上、automaticrubyの紹介でした 定期実行をさせたい場合はcronに実行させれば良い。 プラグインの組み合わせで様々な処理を行えるようになります。 プラグインの数が多ければ多いほど良いので Rubykaigiで興奮冷めあらぬRubystたちは是非開発に参加もしてほしい。
automaticruby/automaticruby · GitHub