2008/01/31


今日はもう寝ます。
ttyは明日ミマス。

typester++

sub handle {
    my ($self, $url) = @_;
    $url =~ qr!http://ttyshare.com/rec/\w+!;
}

sub find {
    my($self, $args) = @_;
    
    my $uri = $args->{url};
    my $response = LWP::UserAgent->new->post(
        $uri,
        ['download' => 1]);
    if($response->content =~ m/<div id="p-(.+?)" class="player">/) {
        my $enclosure = Plagger::Enclosure->new;
        $uri = sprintf('http://ttyshare.com/static/tty/%s/%s/%s/%s',
            substr($1, 0, 1), substr($1, 0, 2), substr($1, 0, 4), $1);
        $enclosure->url($uri);
        $enclosure->type('application/x-ttyrec');
        $enclosure->filename("$1.tty");
        return $enclosure;
    }

    return;
}
Posted at by




とりあえず書き上げました。
またまた適当クオリティですが...

lang/perl/Net-Kotonoha - CodeRepos

使い方は...
use warnings;
use encoding 'utf-8';
use Net::Kotonoha;
use Data::Dumper;
use Encode;

#binmode(STDERR, ':encoding(shiftjis)');

my $kotonoha = Net::Kotonoha->new(
        mail     => 'xxxx@example.com',
        password => 'xxxxxxx',
    );

# 新着コト一覧
warn Dumper $kotonoha->newer_list;

# 最近のコト一覧
#warn Dumper $kotonoha->recent_list;

# コト番号120235を取得
my $koto = $kotonoha->get_koto(120235);

# タイトル表示
warn $koto->title;

# ○ユーザ一覧
warn Dumper $koto->yesman;

# ×ユーザ一覧
warn Dumper $koto->noman;

# 回答(0:未回答, 1: ○, 2:×, コメントは省略可能)
$koto->answer(1, 'けもたい');

# 自分の回答
warn Dumper $koto->answer;

※一覧系の戻りはハッシュの配列
こんな感じ...
まぁ、UIで遊ぶサービスですから、あまり使い道はないかもしれませんが...

追記
cpanに入れてありますので「cpan Net::Kotonoha」で入ります。
Posted at by




タレントスケジュールなんてサイトを見つけたので、さっそくスクレイピング。
ドキュメントに同じid属性が複数あるという、なんともダイナミックなHTMLにもめげず作り上げたのが以下 #!/usr/bin/perl

use encoding 'utf-8';
use strict;
use warnings;
use Encode qw(from_to);
use URI;
use URI::Escape qw(uri_escape_utf8);
use Web::Scraper;
use YAML;

if ($^O eq 'MSWin32') {
    binmode(STDERR, ':encoding(shift_jis)');
    Encode::from_to($ARGV[0], 'cp932', 'utf-8');
}
my $talent = shift || '小島よしお';

my $talent_schedule = scraper {
    process '//div[@class="find_bl"]/following-sibling::*[1]//td', day => 'TEXT';
    process '//div[@class="find_bl"]/following-sibling::*[1]//td/div',
        'schedule[]' => scraper {
            process 'div', media => sub { my $m = $_->attr('class'); $m =~ s/^icon_//g; $m };
            process '/div/a', url => '@href';
            process '/div/a', title => 'TEXT';
            process '/div/node()[1]', timespan => sub {
                my $s = $_->string_value;
                $s =~ s/ //;
                $s =~ s/(^|[^\d])(\d):(\d\d)/0$2:$3/g;
                my @span = split(/[^\d:]/, $s);
                \@span;
            };
        };
    result qw/day schedule/;
};
my $uri = URI->new('http://talent-schedule.jp/'.uri_escape_utf8($talent));
my $oppappi_schedule = $talent_schedule->scrape($uri);
warn Dump $oppappi_schedule;
ちょっと日付まわりで苦労してますが...

小島よしおって、結構番組出てますねぇ。

でもそんなの関係ry)
Posted at by