Blog

Tweetから記事を作るスクリプト Ruby で作り直し

Perl が好きな @azur256 です。

ちょっと思うところがあって 以前 Perl で作っていた Tweet からブログエントリのコンテンツを自動生成する Perl スクリプトを Ruby で書き直しました。



120621 0001


Ruby はだいぶ昔にかじったことはあるのですが、本格的には使っていなかったので見苦しいコードもあるかもしれません。そういうものがあったら是非教えてください。



下準備

OS X Lion 10.7.4 (Ruby は 1.8.7) をベースにしているので環境によっては若干違うかもしれません。

まず、今回の Ruby プログラムを動かすのに必要な準備として以下のコマンドを実行してください。これで Ruby から利用する Twitter のライブラリがインストールされます。


あとでもう少し調整しますが、ひとまずはこれだけで事前準備完了です。



補足すると Ruby は RubyGems というライブラリ管理の仕組みを持っています。RumyGems は gem というコマンドを使って必要となるライブラリをインストールすることができます。今回は Twitter Ruby Gems を gem コマンドを使ってインストールしています。

Ruby スクリプトを動かす

次に、以下のファイルをどこか適当なところにダウンロードして展開してください。


ターミナルを立ち上げて、先ほど展開したファイル (getTweet.rb) のあるディレクトリに移動して、このスクリプトを実行します。

私は、ユーザフォルダの下に temp というフォルダを作りましたので、そこを例に取ってコマンド例を書きます。


このようにターミナルで実行すると、このディレクトリの中に新しいファイル (例えば 20120621_shareTweet.txt のようなファイル) が出来て、コンテンツができていると思います。

あとは、このファイルを MarsEdit に張り込むなりをしてください。



自分用にカスタマイズする方法

それほど難しくないと思いますが、 7 〜 9 行目を直せば、そのまま使えると思います。


ちょっと面倒なのは 9 行目でしょうか。正規表現という方法で自分のツィートのパターンを表現する必要があります。私の場合は、


というフォーマットなので

と表現しています。最後の i は大文字と小文字を区別しないというオプションです。[SHARE] でも [share] でも 引っかけてくれるようにするためです(良くテンプレを間違うんですよ…汗)。



あとはコンテンツの整形は 94 行目あたりを修正してみてください。今のコンテンツは、 CSS を定義してあげる必要があります。このまま使うなら、先日ご紹介した CSS を定義してください。




実行した時に出る警告メッセージを消す

実行した時に警告が出たと思います(出てないときは無視してください)。動作にはあまり影響はないのですが、気持ち悪いので消すことにしたいと思います。



まずは 1 つ目のメッセージ

system_timer をインストールするように言われているので、インストールします。
2 つ目は json のライブラリを変えたほうがイイ、と言っています。

yajl-ruby をインストールします。

これで警告は表示されなくなったと思います。



ここも補足すると Twitter Ruby Gems が使っている Faraday というライブラリが system_timer Gem を使うことを推奨しているのでインストールしました。

また、同じように MultiJson Gem が もっと性能の良い JSON のライブラリを使うことを推奨しているので yajl-ruby Gem をインストールしています。


参考情報

今回、一番悩んだのが短縮 URL の展開方法。



短縮 URL の展開は Ruby のリファレンスにも載っているんですが、このやり方だと Body も取ってきてしまって重たいのです

以下の例の fetch はリダイレクトに対応しています。 limit 回数以上リダイレクトしたらエラーにします


そこで、こちらを参考にさせていただき Head のみを取って、でもレスポンスコードを見て繰り返すように改造して使っています。


Rubyを勉強してみたい、という方はここが初心者向けとして良いかも

Mac OS X には最初から Ruby がインストールされています。


当然、ドットインストールもオススメです。
洗練されたオブジェクト指向型言語で定評のあるRubyの基礎を…


正規表現について丁寧に解説されています。

複雑なパターンを作成するために用意されたのが正規表現です。正規表現で用意されている構文や特殊な文字を組み合わせる事で、複雑な条件を持つ検索パターンを簡潔に定義することが出来ます。


自己満足ですが、こういうのが楽しいなぁ。

自動化は心がこもらないという向きもおられると思いますが、たとえコンテンツ生成を自動化しても、コメントを出す時と発行する前にエントリを見直す時に心を込めたいな、と思います。



今回の Ruby スクリプトの全文を Gist に上げておきました。






関連するエントリ





最後まで読んでいただきありがとうございます。

follow us in feedly 左のアイコンをクリックして、このブログを Feedly に登録していただけると嬉しいです


Facebook ページでも情報を発信していますのでよろしかったら「いいね!」をお願いします

RSSリーダへの登録は こちら からどうぞ。

URL
TBURL

コメントを残す

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

フェイスブックでのコメント

Return Top