plaggerを使ってジロデイタリアの実況をtwitter

基本は miyagawaさんのワールドカップ実況のところを参考に、

雛型はCustomFeed::Scriptで検索して探してきた。

twitterに、cyclingnewsがだしてくれるといいんだけど。。。

livecyclingnews.pl

#!/usr/bin/perl                                                                                                                                                                     

use strict;
use utf8;
use LWP::Simple ();
use HTML::TreeBuilder::XPath;
use Encode;
use DateTime;
use DateTime::Format::W3CDTF;
use YAML;
use URI;
use Digest::MD5  qw(md5_hex);

my $url = "http://live.cyclingnews.com/?id=latest";                                                                                                                                
my $html = LWP::Simple::get($url);

my $tree = HTML::TreeBuilder::XPath->new;
$tree->parse($html);
$tree->eof;

my $feed = {
    title => $tree->findvalue('/html/head/title')->value,
    link  => $url,
};

my @nodes = $tree->findnodes(q(//tr[4]/td[2]/p));
my $year  = DateTime->now->year;
my $month = DateTime->now->month;
my $day   = DateTime->now->day;


#my $date = DateTime->today(time_zone => 'Asia/Tokyo',);                                                                 
my $date = '2007/05/15';
                                              
while (my $node = shift @nodes) {
    my $date_title = $node->findnodes(q(b))->[0];
    my $body = '';
    if( $node->exists(q(b))  ){
        my @ary = $node->findnodes(q(text()));
        foreach my $temp ( @ary ){
            $body .= $temp->getValue();
        }
        my $title = $date_title->getValue();
        $title =~ s/[^A-Za-z0-9: \/]//g;
        my $link = $url."#".md5_hex($body);
        push @{$feed->{entry}}, {
            title => $title,
            date  => $date,
            link  => $link,
            body => $date_title." ".$body,
        };
    }
}

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

config.yaml

global:
  timezone: Asia/Tokyo
  log:
    level: debug

plugins:

  - module: CustomFeed::Script
  - module: Subscription::Config
    config:
      feed:
        - script:/home/hoge/plaggerscript/livecyclingnews.pl

  - module: Publish::Twitter                                                                                                                                                        
    config:                                                                                                                                                                         
      username: twitter_id
      password: twitter_password

Web::Scraperをつかってみたかったんだけど、レースが佳境だったので諦めた。。。

日付がどーしていいのかよくわからなかったし、、、

作ったときには、レースがおわっていた。。。

dedupeしないとまずいんだろうなぁとか。。