stMind

about Tech, Computer vision and Machine learning

plaggerで論文リストをgmailへ

最新論文を読むことを習慣化するために、Google ResearchのLatest PublicationsをRSSリーダーに登録しておこうかなと思ったんだけど、フィードが提供されてないのでplagger+web::scrapergmailに送るかということでやってみた。が、よくよく見ると(よくよく見なくても)Atomフィードが提供されてた…

でも、せっかく書いたので公開だけしておくことにします。

publications_by_googlers.pl

#! /usr/bin/perl 

use strict;
use warnings;

use Web::Scraper;
use URI;
use YAML;

## get publications list
my $url = 'http://research.google.com/pubs/papers.html';

my $scraper = scraper {
    process "/html/body/div/div[2]/ul/li", 'papers[]' => scraper {
        process "p", "info" => 'TEXT';
        process "//p/a[1]", "link" => '@href';
        process "//p/a[1]", "author" => 'TEXT';
    };
};
my $res = $scraper->scrape( URI->new($url) );

## feed and entries
my $feed = {
    title => "Publications by Googlers",
    link => $url,
    entries => [],
};

for my $paper (@{$res->{papers}}) {
    # cut off brace
    $paper->{info} =~ /([^\[\]]+)/;

    my $entry = {
        title => $paper->{author},
        body => $1, 
        link => $paper->{link},
    };

    push @{$feed->{entries}}, $entry;
}

binmode STDOUT, ":utf8";
print YAML::Dump $feed;

publications_by_googlers.yaml

plugins:
  - module: Subscription::Config
    config:
      feed:
        - url: script:/path/to/script

  - module: CustomFeed::Script

  - module: Filter::Rule
    rule:
      module: Deduped
      path: /path/to/db

  - module: Publish::Gmail
    config:
      assets_path: /path/to/assets
      mailto: your mailto
      mailfrom: your mailfrom
      mailroute:
        via: smtp_tls
        host: smtp.gmail.com:587
        username: your username
        password: your gmail password

こんな感じにgmailで読めます。
f:id:satojkovic:20110504185912p:image