Debuginfo

思考とアウトプット

Net::Twitter::LiteのsearchをAPI1.1に対応させてみた

Twitter API1.1の対応を行っています。調べてみるとNet::Twitter::Liteでapiurlを1.1にすればOKみたな感じだったのですが、私が主に使っているのは検索APIで、本当にそれだけでいいのか?ってなり、モジュールを読んでみました。 すると、apiurlと別にsearchapiurlというのがあり、ただ1.1にするだけじゃだめそうです (;´Д`)

# in Net::Twitter::Lite.pm
23         apiurl                => 'http://api.twitter.com/1',
24         searchapiurl          => 'http://search.twitter.com',

Net::Twitter::LiteはNet::Twitterと比べて非常に読みやすい。一つのファイルに全て書かれていて、変数を検索しやすいです。んで、変更すべき箇所をみつけて下記のように変更しました。

1892c1890
<             path            => 'search/tweets',
---
>             path            => 'search',
1898c1896
<             authenticate    => 1,
---
>             authenticate    => 0,

軽くスクリプトを書いて

my $nt = Net::Twitter::Lite->new(
    consumer_key        => ‘HI’,
    consumer_secret     =>  ‘MI’
    apiurl => 'https://api.twitter.com/1.1',
    searchapiurl => 'https://api.twitter.com/1.1',
    legacy_lists_api => 0,
);

$nt->access_token(‘TSU’);
$nt->access_token_secret(‘☆’);
my $res = $nt->search({ q => "天気", rpp=> 100,  page => 10, lang => 'ja'});

newして動かしてみると, 下記のエラーで死にました^^;;

400: Bad Request

TwitterAPI1.1の仕様書を読んでみると

pageはなくなっているし、rppはcountになってます。なんで、

 my $res = $nt->search({ q => "天気", count => 100, lang => 'ja'});

こうしたら動きました :D

まとめ

変更点は3行です。

$ diff  Lite.pm Lite.pm.org                                                                        
1890c1890
<             path            => 'search/tweets',
---
>             path            => 'search',
1892c1892
<             params          => [ qw/q callback lang locale count max_id include_entities since_id until geocode show_user result_type/ ],
---
>             params          => [ qw/q callback lang locale rpp page since_id until    geocode show_user result_type/ ],
1896c1896
<             authenticate    => 1,
---
>             authenticate    => 0,