新しく、Twitterで正式に画像アップロードのAPIが提供されたそうで。
POST statuses/update_with_media (deprecated) | Twitter Developers
早速使ってみた。
てすと URL
各言語のライブラリ側での対応もまだ少し時間はかかりそう。"multipart/form-data"で送らないといけない、ということでOAuth headerだけつけてリクエストは自前で生成して投げてみた。
#!/usr/bin/env perl use strict; use warnings; use utf8; use Encode 'encode_utf8'; use Config::Pit; use Furl; use HTTP::Request::Common; use OAuth::Lite::Consumer; my $config = pit_get('twitter.com', require => { consumer_key => 'consumer_key', consumer_secret => 'consumer_secret', access_token => 'access_token', access_token_secret => 'access_token_secret', }); my $consumer = OAuth::Lite::Consumer->new( consumer_key => $config->{consumer_key}, consumer_secret => $config->{consumer_secret}, ); my $uri = 'https://upload.twitter.com/1/statuses/update_with_media.json'; my $req = POST $uri, Content_type => 'form-data', Authorization => $consumer->gen_auth_header('POST', $uri, +{ token => OAuth::Lite::Token->new( token => $config->{access_token}, secret => $config->{access_token_secret}, ), }), Content => [ status => encode_utf8('APIから画像あげてみるテスト'), 'media[]' => [ '/Users/sugyan/Pictures/icon-large.png' ] ]; my $res = Furl->new->request($req); if ($res->is_success) { print $res->content, "\n"; }
これくらいのコードで出来ました。