Net::Twitter::Lite の update_with_media を使って Twitter で画像と位置情報付き tweet をする方法
なんか Twiyyer API まわりが騒がしいらしいという噂は聞いてますが Net::Twitter::Lite で画像付きツイートする API に対応したバージョンが今年出ていたのでちょっと使ってみました。
use strict;
use warnings;
use utf8;
use 5.017;
use Config::Pit;
use Encode;
use Net::Twitter::Lite;
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 とかの普通のクライアントとかでも普通に画像でます)
Yua Kotegawa Carlsen Verlag GmbH
本物の 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 では、本物の国交省データ処理をお見せしますよ
雁屋 哲 小学館 売り上げランキング: 158776
そういえば YAPC のチケットうってるらしいですよ
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 のままの知識の人などはこの機会に再入門してみてもよいのでは?
Randal L. Schwartz brian d foy Tom Phoenix オライリージャパン 売り上げランキング: 2883
2012年08月07日
Ikachan の名前の由来
ikachan の名前の由来が分からないせいで、社内でぼっちって事が判明したので書いとくと
頭文字がBが付く前の会社の社内 irc に Bot::IKCBot::Pluggable ベースのボットの名前が ikchan (IKCちゃん) だったんで、IKC Advance ちゃん的な感じの名前になりました。
あと、色んなチャンネルに出入りしてるのがイカの触手が出入りしてるっぽいっていう見た目のイメージもあって
見た目のイメージに関してはべにじょって人と江戸時代の触手画像をコラージュして分かりやすく作ったけど、どっかきえちゃった。
以上になります。今後ともよろしくお願い申し上げます。
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 とか知らなくても理解出来るような話になる予定なのでチケットの購入 はお早めに。
2012年08月01日
最近の EOS Kiss マジすげー a.k.a EOS Kiss X6i 買ってきた
だいぶ昔に買った EOS Kiss N から、大幅に色々捗ってるので買って来た。
なんでも、タッチパネルだとか HD 動画撮影出来るとか今持ってるのと比べるとだいぶ別もの。
エントリーモデル持ってたら 7D とかそういう中級機買ったほうが満足度上だとは言われてたんですが、確かに 7D のほうがハード面で優れてる風味で触り心地とかシャッター音とかもいいらしいんですが、それよりもジオラマ風撮影出来たり動画取れたりしたほうが捗るし、1/8000秒のシャッタースピードの世界とか欲しいケースに遭遇してないしでどうでも良くなって新製品を選んだと言う感じ。
EOS M まで待ったら見たいな話もあったけど、結局レンズがかさばるから内容的にはほぼ同等のこれを選んだと言うわけ。
一応レンズが少しあるからキヤノン以外も選択子になし。
比べるとこんな感じ。
今の所室内でしか使ってないし適当に触っただけだから差は良くわかってないけど、シャッター音が本物っぽくなってるね。
ちなみに、マクロアダプタを付けるとだいぶ近くなる
ちなみに動画も取ってみたけど、 EOS の動画とか PV とかでありふれてるので、特に証明のない夜の庭を取ってみた。一番明るいレンズで取ってみたらそこそこな感じだった。
ただし AF とかちゃんと出来ない感じだからマニュアルフォーカスで酷い感じだけど。
と言う事で、エントリーモデルなのに頑張ってるなーとか思った次第。
キヤノン (2012-09-30) 売り上げランキング: 1650
キヤノン (2012-06-22) 売り上げランキング: 358