対応させました。WebService::Pocket::Lite です。
Pocket の Consumer Key と Access Token を取得していることを前提に、以下のようなコードが書けます。
use WebService::Pocket::Lite; my $lite = WebService::Pocket::Lite->new( access_token => 'your access token', consumer_key => 'consumer key', ); # retrieve entries from your Pocket. my $res = $lite->retrieve( state => 'unread', tag => 'perl' ); # add a entry to your Pocket. $lite->add( url => 'http://www.cpan.org' ); # add some entries and change tags of another entry with 1 request. $lite->push_add( url => 'http://metacpan.org/' ); $lite->push_add( url => 'http://cpants.cpanauthors.org/' ); $lite->push_tags_replace( item_id => 100, tags => [qw/tag1 tag2/] ); $lite->send;
これを利用すると、Livedoor Reader でピンを立てたエントリを Pocket に転送するというデイリータスクは以下のようなスクリプトで実現できます。
use Try::Tiny; use WebService::LDR; use Log::Minimal; run; sub run { my %param = @_; try { my $ldr = create_ldr(); my $pocket = create_pocket(); # max 100 entries my @entries = $ldr->login->get_pin_all(); my $num = scalar(@entries); foreach my $entry (@entries) { $pocket->push_add({ title => encode('utf8' => $entry->title), url => $entry->link->as_string }); } $pocket->send; $ldr->clear_pin; } catch { critff( $_ ); } finally { infof("$0 ends."); }; } sub create_ldr { my $conf = pit_get('reader.livedoor.com', require => { username => 'livedoor reader username', password => 'livedoor reader password', }); my $ldr = WebService::LDR->new( user => $conf->{username}, pass => $conf->{password}, ); } sub create_pocket { my $conf = pit_get('getpocket.com', require => { consumer_key => 'Pocket consumer key', access_token => 'Pocket access token', }); my $pocket = WebService::Pocket::Lite->new( consumer_key => $conf->{consumer_key}, access_token => $conf->{access_token}, ); }
Pocket の未読数を GrowthForecast でグラフ化するスクリプトはこんな感じですね
my $pocket = create_pocket(); my $ua = LWP::UserAgent->new; foreach my $state (qw/unread/) { my $res = $pocket->retrieve({ state => $state }); my $num = scalar( keys %{$res->{list}} ); $ua->post( "$growthforecast/api/kiririmode/pocket/$state", { number => $num }); } sub create_pocket { my $conf = pit_get('getpocket.com', require => { consumer_key => 'Pocket consumer key', access_token => 'Pocket access token', }); my $pocket = WebService::Pocket::Lite->new( consumer_key => $conf->{consumer_key}, access_token => $conf->{access_token}, ); }