2012年08月28日

なんか 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 2012年08月28日 18:45 | TrackBack | Perl
Comments
Post a comment









Remember personal info?






コメントを投稿する前に↓の場所にnospamと入力してください。