Show
Ignore:
Timestamp:
12/01/07 03:02:29 (6 years ago)
Author:
yasu
Message:

lang/perl/WWW-NicoVideo?:

個別エントリから情報を取得するオプション (fetchEntry) を追加。(NicoVideo?.pm)
個別エントリから情報を取得するメソッド (fetch) を追加。(NicoVideo/Entry?.pm)
nicoURLでエントリのURLを取得できるように変更。(NicoVideo?/URL.pm)
とかちつくちて。

Location:
lang/perl/WWW-NicoVideo/trunk/lib/WWW
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • lang/perl/WWW-NicoVideo/trunk/lib/WWW/NicoVideo.pm

    r2189 r2197  
    1717use WWW::NicoVideo::URL; 
    1818 
    19 __PACKAGE__->mk_accessors(qw[agent retry retryInterval mail passwd]); 
     19__PACKAGE__->mk_accessors(qw[agent retry retryInterval mail passwd fetchEntry]); 
    2020 
    2121our $VERSION = "0.04"; 
     
    3737         retryInterval => $opts{retryInterval} || 30, 
    3838         mail => $opts{mail}, 
    39          passwd => $opts{passwd}}, $pkg; 
     39         passwd => $opts{passwd}, 
     40         fetchEntry => $opts{fetchEntry}}, $pkg; 
    4041} 
    4142 
     
    149150 
    150151  my $scraper = scraper_entries(); 
    151   my @res = (map { WWW::NicoVideo::Entry->new($_) } 
    152              @{$scraper->scrape($html)->{entries} || []}); 
     152  my @res; 
     153  foreach my $e (@{$scraper->scrape($html)->{entries} || []}) { 
     154    my $ent = new WWW::NicoVideo::Entry($e); 
     155    $ent->fetch if($self->{fetchEntry}); 
     156; 
     157    push @res, $ent; 
     158  } 
     159 
    153160  wantarray? @res: \@res; 
    154161} 
  • lang/perl/WWW-NicoVideo/trunk/lib/WWW/NicoVideo/Entry.pm

    r1973 r2197  
    66use warnings; 
    77use base qw[Class::Accessor]; 
     8use Carp; 
     9use WWW::NicoVideo; 
     10use WWW::NicoVideo::Scraper; 
     11use WWW::NicoVideo::URL; 
    812 
    913__PACKAGE__->mk_accessors(qw[id 
    1014                             comment 
    1115                             desc 
     16                             fullDesc 
     17                             postDateTime 
     18                             postDateTimeStr 
     19                             tags 
    1220                             imgHeight 
    1321                             imgUrl 
     
    2129                             title 
    2230                             url 
     31                             agent 
     32                             agentOpts 
    2333                            ]); 
    2434 
     35sub fetch 
     36{ 
     37  my $self = shift; 
     38  $self->{agent} ||= new LWP::UserAgent(agent => $WWW::NicoVideo::AGENT_NAME, 
     39                                        timeout => 30, 
     40                                        %{$self->{agentOpts}}); 
     41  my $uri = nicoURL("entry", $self->{id}); 
     42 
     43  my $scraper = scraper_entry; 
     44  $scraper->user_agent($self->{agent}); 
     45 
     46  my $ent; 
     47  eval { $ent = $scraper->scrape($uri) } or do { 
     48     carp $@; 
     49     return; 
     50  }; 
     51 
     52  @$self{keys %$ent} = values %$ent; 
     53} 
     54 
    2555"Ritsuko"; 
  • lang/perl/WWW-NicoVideo/trunk/lib/WWW/NicoVideo/URL.pm

    r2008 r2197  
    1818                 img => "http://res.nicovideo.jp/img/tpl/head/logo/rc.gif", 
    1919                 login => "https://secure.nicovideo.jp/secure/login?site=niconico", 
    20                  fmt => "http://www.nicovideo.jp/%s/%s"); 
     20                 entry_fmt => "http://www.nicovideo.jp/watch/%s", 
     21                 entry_list_fmt => "http://www.nicovideo.jp/%s/%s"); 
    2122 
    2223sub nicoURL 
     
    2728  $type = "top" if(!$type and !@keys); 
    2829 
    29   if(defined $type and @keys) { 
     30  if(defined $type and $type =~ /^(?:tag|search)$/ and @keys) { 
    3031    my $keys = join " ", @keys; 
    3132    utf8::encode($keys) if(utf8::is_utf8($keys)); 
    32     return new URI(sprintf($NICO_URL{fmt}, $type, uri_escape($keys))); 
     33    return new URI(sprintf($NICO_URL{entry_list_fmt}, 
     34                           $type, 
     35                           uri_escape($keys))); 
     36  } elsif(defined $type and $type eq "entry" and @keys) { 
     37    my $id = $keys[0]; 
     38    return new URI(sprintf($NICO_URL{entry_fmt}, 
     39                           $id)); 
    3340  } elsif(defined $type and defined $NICO_URL{$type}) { 
    3441    return new URI($NICO_URL{$type});