a person powered by ototoy blog
MAL Antenna - recommuni version2005/3 | ||||||
---|---|---|---|---|---|---|
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 | ||
2005/4 | ||||||
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
えー、今回は音楽ネタではなく、コンピュータネタです。
前回書いた日記「一気にDL」(http://recommuni
最初はランキングをブラウザで表示して、表をコピペでエディタに貼ってそれを整形、としてみたのですが、面倒なのでまずは整形するperlスクリプトを書いてみました。書いてはみたものの、これでは定期的に自分がアクセスしてファイルを保存しなくてはなりませんし、あまり頻繁にスナップショットを取ることが出来ません。それで、どうせなら自動化したいなあ、ということで週末にちょっと試してみました。
心当たりはあって、perlにはモジュールと呼ばれる再利用可能なライブラリが沢山あります。きっと何かあるだろうなと思いつつ、まずはrecommuniにアクセスするには必須のcookie利用から調べ始めました。で見つけたのがここ。
Perlモジュール/LWP
http://digit
おお、やっぱりcookieは扱えるのね、と安心して、サンプルを改造してまずはログイン可能なことを確認。
指定のページにアクセスするのはそれほど難しくはありません。POSTする先のURLと、その時渡すパラメータが分かればOKです。これはHTMLソースを見ればすぐ分かります。
でランキングページのHTMLが入手できたら、次は投稿したいフォーマットに整形。こういうのはperlが最も得意とするところです。実はActivePerlの5.8でやっちゃったらどうも日本語正規表現マッチが上手くいかなくて、結構無理矢理片付けてしまいました。
でこれを一時間おきに実行したい、と。UNIX環境ならcronに登録して終わりですが、今回は手抜きでWindowsのタスクを使いました。「60分置きに繰り返す」指定をすると、登録するタスクは一つで済みます。
引っかかったのは、ここで得られたランキング情報をグループのトピックに投稿するところ。POSTする時に何かが悪いのでしょうけれど、行毎の改行が消えてしまうのです。う〜ん、分からん。パケットダンプしてみても、ブラウザからは普通にCR+LFを付けているだけに見えるし・・・。
とりあえず、投稿用データは手元に残るのでまあいいか・・・、と一度は投げ出したのですが、毎日まとめて投稿するのも面倒だし、それに何より自分がさぼるとランキング情報を公開できないというのがイヤだなあ、と。
でちょっと方式を切り替えて、IEをperlから制御して、IE経由で投稿させてみることにしました。で検索して見つけたのがこれ。
Win32-IE-Mechanize
http://search
Win32::OLE経由でいじるよりちょっとラクが出来ます。というか、やりたいのはフォームを通しての投稿なので、「ここのテキストボックスにデータを入れて、投稿ボタンを押す」ということをしたいのですから、IEで表示したウェブページ内の要素が指定できる必要がありました。IE-Mechanizeを使うとこのあたりがラクに出来ます。
あとはネットワークが重いときなどにデータ取得や投稿に失敗することがあるので、そのあたりの調整を・・・ある程度してあきらめました。
この程度のことでも、
・定刻になったら、レコミュニの任意のページにアクセスし、表示内容をHTMLとテキストで保存しておく
・得られた情報を、任意の場所に投稿する
という作業を自動化出来ました。まあでもグループの投稿では確認画面が無いのでその分簡単でした。
これが出来るということは、まあその気になれば・・・
・今登録されている楽曲情報を全て手元のデータベースに取り込む
・ついでにその時、レコメンドも全部データベースに取り込む
・新しく配信された曲を全て自動的にダウンロードする
・あらかじめ書きためておいたレコメンドを、指定時刻になったら投稿する
なんてことも・・・きっと出来るでしょう。
やって役立つかは別として・・・(笑)。
いや、でも実際こんなものは存在するのですよ。
Perlモジュール/WWW::Mixi
http://digit
mixiにアクセスすることに特化したperlモジュール。
まあこういう第三者ライブラリが出来てくるあたりが人気の証拠でしょうね。これを使えば、あちこち巡回して情報を集めてくることも出来るでしょう。昔パソコン通信の時代に、メール送受信からフォーラム巡回をするマクロをみんなで書いてたようなことがきっとできるでしょう。
う〜ん、レコミュニだったら、どんな使い方をすると楽しく遊べるでしょうか?
コメント
ランキング4位以下ぐらいが上下していて面白いですね。
ちょっとこの2〜3日私的な用事があり雑談できなくてごめんなさい。
windowsスクリプトを組まれている方がいらっしゃいますよ
http://recommuni
おもしろい!
やはりperlはいいですねえ。
というかテクニカルな観点からのレコミュニ活用って概念が無かったです。