2012年08月28日

Net::Twitter::Lite の update_with_media を使って Twitter で画像と位置情報付き tweet をする方法

なんか Twiyyer API まわりが騒がしいらしいという噂は聞いてますが Net::Twitter::Lite で画像付きツイートする APIに対応したバージョンが今年出ていたのでちょっと使ってみました。


binmode STDOUT => 'utf8';

my($message, $file) = (decode(utf8 => $ARGV[0]), $ARGV[1]);

my $config = pit_get('Net::Twitter::Lite-image-upload', require => {
consumer_key => 'consumer_key',
consumer_secret => 'consumer_secrt',
token => 'token',
token_secret => 'token_secret',
});

my $twitterw = Net::Twitter::Lite->new(
legacy_lists_api => 0,
ssl => 1,
upload_url => 'https://upload.twitter.com/1',
%{ $config }
);
$twitterw->access_token($config->{token});
$twitterw->access_token_secret($config->{token_secret});

my($filename) = $file =~ m{/([^/]+)$};

say "tweet: $message $file";
update_with_media($message, $file, $filename, '35.6184057279992', '139.727510749509');

sub update_with_media {
my($msg, $file, $filename, $lat, $lng) = @_;

my $content = do {
open my $fh, '<:bytes', $file or die "$!: $file";
local $/;
<$fh>;
};

$twitterw->update_with_media(
encode(utf8 => $msg),
[ undef, $filename, Content_Type => 'image/jpeg', Content => $content ],
{
display_coorrdinates => 'true',
lat => $lat,
long => $lng,
},
);
}

ポイントは upload_url を指定しておかないと Net::Twitter::API にパラメータが実装されてないので動かない所ですね(die "update_with_media: 400: URL must be absolute"; するよ!)。display_coorrdinates は位置情報を表示するかどうか決めるパラメータって書いてあるけど false にしても良ーわからん教えて tsupo さん。

という事で見事キャプテンの写真が位置情報付きツイートできました。(Echofon とかの普通のクライアントとかでも普通に画像でます)


Line
Line
posted with amazlet at 12.08.28
Yua Kotegawa
Carlsen Verlag GmbH

Posted by Yappo at 18:45 | Comments (0) | TrackBack

2012年08月14日

本物の KEN_ALL.csv の処理が簡単に出来る Parse::JapanesePostalCode をリリースした

空前の KEN_ALL.csv ブームが凄かったのが記憶に新しいばかりですが、この郵政さんが公開している郵便番号ファイルをカジュアルにパース出来るモジュールを作りました。

https://metacpan.org/release/Parse-JapanesePostalCode
https://github.com/yappo/p5-Parse-JapanesePostalCode

使い方はとても簡単で

use Parse::JapanesePostalCode;
my $parser = Parse::JapanesePostalCode->new( file => 'KEN_ALL.csv' );
while (my $obj = $parser->fetch_obj) {
    my @list = map { $_ ? $_ : () } ($obj->zip, $obj->pref, $obj->district, $obj->city, $obj->ward, $obj->town);
    if ($obj->has_subtown) {
        push @list, join '/', @{ $obj->subtown };
    }
    if ($obj->build) {
        my $str = $obj->build;
        $str .= $obj->floor . 'F' if $obj->floor;
        push @list, $str;
    }
}
と言う感じのコードで簡単にパースして使いやすい形にしてくれます。

以前からのノウハウや、住所正規化API作った時のノウハウ、さらにそれの最新の知見を盛り込んでいるので最新版のデータではだいたい使いやすい結果が返ってくるとおもいます。
番地の並びや特殊な表記はそのままに残してありますが、そのへんは使う人が都合よく出来るように、そして現実的にはそのへんの細かい所はスルーでokなので、そのままの状態にしてあります。
わかりやすく言うと、現実的な成形をある程度しているのでカジュアルユーズや Web サービスで使う分には問題のないデータが作れます。

その他、郡と町村の分離、政令指定都市での市と区の分離、ビル名の分離や階の抽出、複数の小字があった場合等は ARRAY ref にして取れるなどが出来ます。
もちろん複数行のレコードにも対応しているし、オブジェクトで返して欲しくなければ、オブジェクト化や簡単な処理をしていないほぼそのままのデータも取れます。

CPAN には Geo::Postcodes::JP っていう KEN_ALL.csv を処理できるモジュールが既にあるのですが、たいそうなモジュールでかつ、処理としては微妙なのでパースだけ出来るモジュールを作りました。

今後は JIGYOUSYO.csv にも対応したいなーとも思ってますが、実際に使う時になるまでは僕は実装しなさそうです。
あとは、差分データもどうしようかなーと思ってるんですが、差分処理はパーサの範囲外かなーと思ってて、差分データだけパース出来れば良いかなと思ってる所です。
もちろんパッチ歓迎です。

まとめ

  • 郵便番号データの処理ノウハウがない人でも、僕のノウハウを使って簡単に処理出来るモジュールをリリースしました
  • YAPC で、本物の KEN_ALL.csv をお見せすると言いましたが、もうお見せしてしました
  • YAPC では、本物の国交省データ処理をお見せしますよ
美味しんぼ (1) (ビッグコミックス)
雁屋 哲
小学館
売り上げランキング: 158776
Posted by Yappo at 20:01 | Comments (0) | TrackBack

そういえば YAPC のチケットうってるらしいですよ

http://yapcasia.org/2012/talk/show/96627a88-ab9d-11e1-a255-2a656aeab6a4
僕もしゃべります。

なんというか、一言でいうと
YAPC で僕のトークをみにきてください。本物のKEN_ALL.csvとはどういう物かお見せしますよ
というかんじです。

ちょっとした大ネタも用意してあります。
4sq に興味ある人も見にきた方がいいです。

(参考) http://blog.64p.org/entry/2012/08/14/191118
http://tagomoris.hatenablog.com/entry/2012/08/14/191418

Posted by Yappo at 19:40 | Comments (0) | TrackBack

2012年08月13日

「初めてのPerl 第6版」がでたそうです

「初めてのPerl 第6版」が発売されました | 近藤嘉雪のプログラミング工房

「初めてのPerl 第6版」がでたそうです - tokuhirom's blog.

「初めてのPerl 第6版」がでたそうです - Islands in the byte stream

Perl 5.14 に対応してモダンな書き方の説明になっているそうですので、Perl 5.8 のままおいていかれてる人や Perl 5.6 のままの知識の人などはこの機会に再入門してみてもよいのでは?

初めてのPerl 第6版
初めてのPerl 第6版
posted with amazlet at 12.08.13
Randal L. Schwartz brian d foy Tom Phoenix
オライリージャパン
売り上げランキング: 2883
Posted by Yappo at 14:24 | Comments (0) | TrackBack

2012年08月07日

Ikachan の名前の由来

ikachan の名前の由来が分からないせいで、社内でぼっちって事が判明したので書いとくと

頭文字がBが付く前の会社の社内 irc に Bot::IKCBot::Pluggable ベースのボットの名前が ikchan (IKCちゃん) だったんで、IKC Advance ちゃん的な感じの名前になりました。
あと、色んなチャンネルに出入りしてるのがイカの触手が出入りしてるっぽいっていう見た目のイメージもあって
見た目のイメージに関してはべにじょって人と江戸時代の触手画像をコラージュして分かりやすく作ったけど、どっかきえちゃった。

以上になります。今後ともよろしくお願い申し上げます。

Posted by Yappo at 18:43 | Comments (0) | TrackBack

2012年08月06日

YAPC::ASIA TOKYO 2012 で位置情報関連の発表をしてきます

トークが採択されたようなので。。。

まだだいぶ先だけど9月後半に開催されるYAPC::ASIA TOKYO 2012で位置情報関連の話してきます。

http://yapcasia.org/2012/talk/show/767bd582-abb3-11e1-85bd-57a46aeab6a4

住所関連ネタとかでは6年くらい前からやってるんですが、それらの過去の発表の内容をベースとして今現在どういう事をやっているのか、やろうとしているのかとかを話す予定です。

アカデミックな感じとは真逆の現実路線のプレゼンになる方向性です。

Perl とか知らなくても理解出来るような話になる予定なのでチケットの購入はお早めに。

Posted by Yappo at 14:32 | Comments (0) | TrackBack

2012年08月01日

最近の EOS Kiss マジすげー a.k.a EOS Kiss X6i 買ってきた

だいぶ昔に買った EOS Kiss N から、大幅に色々捗ってるので買って来た。
なんでも、タッチパネルだとか HD 動画撮影出来るとか今持ってるのと比べるとだいぶ別もの。

エントリーモデル持ってたら 7D とかそういう中級機買ったほうが満足度上だとは言われてたんですが、確かに 7D のほうがハード面で優れてる風味で触り心地とかシャッター音とかもいいらしいんですが、それよりもジオラマ風撮影出来たり動画取れたりしたほうが捗るし、1/8000秒のシャッタースピードの世界とか欲しいケースに遭遇してないしでどうでも良くなって新製品を選んだと言う感じ。

EOS M まで待ったら見たいな話もあったけど、結局レンズがかさばるから内容的にはほぼ同等のこれを選んだと言うわけ。

一応レンズが少しあるからキヤノン以外も選択子になし。

IMG_8005.JPG

IMG_8007.JPG


比べるとこんな感じ。


今の所室内でしか使ってないし適当に触っただけだから差は良くわかってないけど、シャッター音が本物っぽくなってるね。

IMG_0043.JPG

ちなみに、マクロアダプタを付けるとだいぶ近くなる

IMG_0063.JPG

ちなみに動画も取ってみたけど、 EOS の動画とか PV とかでありふれてるので、特に証明のない夜の庭を取ってみた。一番明るいレンズで取ってみたらそこそこな感じだった。
ただし AF とかちゃんと出来ない感じだからマニュアルフォーカスで酷い感じだけど。

と言う事で、エントリーモデルなのに頑張ってるなーとか思った次第。




Posted by Yappo at 03:29 | Comments (0) | TrackBack