綾小路龍之介の素人思考

[perl] WebService::Google::Reader を使って web ページの URL から google reader にフィードをポスト

WebService::Google::Reader モジュールを使って、URI を引数にしてコマンドラインで登録できるスクリプトを書く。

以下のようにして呼び出す。configはパスワードとユーザを書いたjsonファイル。

$ cat ~/.google.json
{"password":"*******","username":"*******"}
$ perl googlereader_pushfeed.pl --config ~/.google.json --uri 'http://example.com/'

ソースは以下。引数で与えたURIをフェッチし、web::scraperで内容からlinkタグのtypeをhref属性値を取り出す。type属性値がフィードの場合は、href属性値をフィードのURIと判断して、google readerに登録。登録の際pushfeedというタグをつけている。このあたりは好みだと思うけど。

#!/usr/bin/perl
#
# googlereader_pushfeed.pl is written
# by "AYANOKOUZI, Ryuunosuke" <i38w7i3@yahoo.co.jp>
# under GNU General Public License v3.
#
# $ perl googlereader_pushfeed.pl --config ~/.google.json --uri 'http://example.com/'
#

use strict;
use warnings;
use Data::Dumper;
use Getopt::Long;
use IO::File;
use JSON;
use URI;
use Web::Scraper;
use WebService::Google::Reader;

my %opts = ();
GetOptions(\%opts, 'config=s', 'uri=s');

my $io = IO::File->new();
$io->open($opts{config}, 'r') or die $!;
my $config = decode_json(join '', $io->getlines);
$io->close;

my $reader = WebService::Google::Reader->new(%$config);
my $uri = URI->new($opts{uri});
my $scraper = scraper {
        process '/html/head/link', 'link[]' => {
                type => '@type',
                href => '@href',
        }
};

my $result = $scraper->scrape($uri);
print Dumper $result;

foreach (@{$result->{link}}) {
        if (defined $_->{type}) {
                my $type = $_->{type};
                if ($type eq 'application/rss+xml' ||
                                $type eq 'application/rdf+xml' ||
                                $type eq 'application/atom+xml') {
                        my $res = $reader->edit_feed($_->{href}, tag => 'pushfeed', subscribe => 1);
                        print Dumper $_, "\n";
                        print Dumper $reader;
                        print Dumper $res;
                }
        }
}
exit;
__END__

リファレンス

  1. Web::Scraper 属性値 - Google 検索
  2. ブログが続かないわけ | Web::Scraper でいい感じのデータ構造になってくれなくて困っているのはどこのどいつだ~い? アタイだよ!
  3. ブログが続かないわけ | Web::Scraper 使い方(超入門)
  4. 駱駝の背中に乗って行こう : Web::Scraper
  5. Web::Scraper - Google 検索
  6. use Web::Scraper; - 今日のCPANモジュール
  7. perl json - Google 検索
  8. JSON - モダンなPerl入門 - モダンなPerl入門
  9. WebService::Google::Reader - Google 検索
  10. WebService::Google::Reader - search.cpan.org
  11. application/rss+xml application/rdf+xml application/atom+xml - Google 検索
  12. he Proper Content Type for XML Feeds
  13. perl 引数 オプション - Google 検索
  14. Perl スクリプトでのコマンドラインオプション処理
  15. Getopt::Long - perldoc.perl.org
  16. URIモジュールのメモ - Unknown::Programming
  17. perl勉強メモ
  18. URLを触る時は、URI(perlモジュール名)が超便利だと思う。 - perl-mongers.org
  19. URLを触る時は、URI(モジュール名)以外も知っておくと吉 - perl-mongers.org
  20. Perlメモ/IO::Fileモジュール - Walrus, Digit.

ソーシャルブックマーク

  1. はてなブックマーク
  2. Google Bookmarks
  3. del.icio.us

ChangeLog

  1. Posted: 2009-06-25T17:18:29+09:00
  2. Modified: 2009-06-25T17:18:29+09:00
  3. Generated: 2017-05-02T23:09:16+09:00