既に記事タイトルに効力がなくなってます...汗
昨日は、C++でmixiの足跡APIを叩いてみましたが今日はpythonと行きましょう。
ただ、そのままpythonライブラリ...というのも面白くないので、本日リリースされたIronPython2.0アルファ2に合わせて、IronPythonでやってみようと思います。
基本的には、もうVisual Basic.NETです。pythonらしきソースが無くなってます。
2008/01/31
twitter匿名アカウント発言をfortune化してメーラのシグネチャに放り込み、殺伐とした空気を作るたった1つの方法
その1:RSSからstrfile形式のファイルを作る
まず、XML::RSSが入ってなかったのでcpanから入れた。
その後、anontwit/twitterのRSSフィードを適当にstrfile形式にするperlを書く。
#!/usr/local/bin/perl
use encoding 'utf-8';
use strict;
use LWP::Simple;
use XML::RSS;
my $content = get('http://twitter.com/statuses/user_timeline/anontwit.rss');
my $rss = new XML::RSS;
eval {
$rss->parse($content);
};
print "%\n";
for my $item (@{$rss->{'items'}}) {
print "$item->{title}\n%\n";
}
exit;
その2:fortune形式に変換して設置する
なんでstrfileって、/usr/sbinに入ってるんだろ...
# mkdir ~/.anontwit
# ./anontwit.pl > ~/.anontwit/anontwit
# /usr/sbin/strfile ~/.anontwit/anontwit ~/.anontwit/anontwit.dat
その3:メーラに仕込む
愛用のメーラ「mutt」の設定ファイル、~/.muttrcにシグネチャ設定を入れる
send-hook '~A' 'set signature="fortune ~/.anontwit|"'
その4:メールを書く
その5:殺伐とした空気を味わう
殺伐とした空気を味わいながら、ただただ返信を待つ。
良く考えたら、メール書く際に最新取ってくるってのもいいかも。あとtwitterって20件までしかデータ取れないのね...orz。
そうですか、APIは出てるんですか、じゃあこれでアプリケーションが作れるって事ですか、じゃぁ作って見ましょう。
もうタイトルは無視して頂いてかまいません。
さて、先日からC++版、IronPython版、CPython版とmixi APIを使ったコードを書いてきましたが、今日は実際にアプケーションを作ってみたいと思います。ただ先日も書いた通り、現状のmixi APIは足跡くらいしかWebAPIとして使える物がなく、POST(PUSH)やDELETEなどの更新系メソッドも無い為、純粋に、ただ純粋に、足跡をXMLデータとして参照するくらいしか出来ない状況にあります。
さっさと他のAPI出してくれなきゃブログネタが持たないよ...
唯一できそうなものとして、足跡監視ツールくらいですか...
先日作ったCPython用のMixiAPI.pyを使って足跡をポーリングし、新しい足跡があったらお知らせするってシステムを作ってみましょう。
作り方は簡単。get_footstamps()でfootstampディクショナリのリストを受け取り、前回値と比較します。日付ソートした状態でIDが異り始めれば、最初のレコードから違ったレコードまでが新規足跡になる訳です。
以下のソースでは、相異点毎にコンソール出力しています。コンソール出力部分の直下に、「firefox-remote」等を引数「link」で起動するよう修正すれば、「自動足跡踏み返し機」が出来上がる訳です。これを使えば貴方のたるんだ腹筋もどんどん引き締まっていきます。
はぁ...こんなものしか作れないAPIって...
もう...寝ます...
#しかしこのAPIサーバ、よく失敗を返しますね...
MixiAPI.pyにHTTPステータス判定を追加しました。
以下のソースと合わせ、下のダウンロードリンクからダウンロード願います。
ダウンロード:,
さて、先日からC++版、IronPython版、CPython版とmixi APIを使ったコードを書いてきましたが、今日は実際にアプケーションを作ってみたいと思います。ただ先日も書いた通り、現状のmixi APIは足跡くらいしかWebAPIとして使える物がなく、POST(PUSH)やDELETEなどの更新系メソッドも無い為、純粋に、ただ純粋に、足跡をXMLデータとして参照するくらいしか出来ない状況にあります。
唯一できそうなものとして、足跡監視ツールくらいですか...
先日作ったCPython用のMixiAPI.pyを使って足跡をポーリングし、新しい足跡があったらお知らせするってシステムを作ってみましょう。
作り方は簡単。get_footstamps()でfootstampディクショナリのリストを受け取り、前回値と比較します。日付ソートした状態でIDが異り始めれば、最初のレコードから違ったレコードまでが新規足跡になる訳です。
以下のソースでは、相異点毎にコンソール出力しています。コンソール出力部分の直下に、「firefox-remote」等を引数「link」で起動するよう修正すれば、「自動足跡踏み返し機」が出来上がる訳です。これを使えば貴方のたるんだ腹筋もどんどん引き締まっていきます。
もう...寝ます...
#しかしこのAPIサーバ、よく失敗を返しますね...
MixiAPI.pyにHTTPステータス判定を追加しました。
以下のソースと合わせ、下のダウンロードリンクからダウンロード願います。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import time
import MixiAPI
if len(sys.argv) < 3:
sys.exit()
service = MixiAPI.Service(sys.argv[1], sys.argv[2])
oldstamps = []
while 1:
try:
footstamps = service.get_footstamps()
# 比較対象がある場合のみ処理
if len(oldstamps) > 0:
# 更新日付でソートする(降順)
footstamps.sort(lambda x, y: cmp(y['updated'], x['updated']))
n = len(footstamps)
for i in range(n):
# idが異なり始めるインデックスを取得する
if footstamps[i]['id'] == oldstamps[0]['id']:
break
# 全てが異なる場合は全項目検知とする
i -= 1
while i >= 0:
print footstamps[i]['title']
# ここに footstamps[i]['link'] を引数に持った
# firefox の起動コマンドを入れておけば、
# 足跡踏み返しシステムが出来上がる。
i -= 1
oldstamps = footstamps
# del oldstamps[0]
except:
pass
time.sleep(3)
ダウンロード:,