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しないとまずいんだろうなぁとか。。