1package IMDb::People; 2 3use 5.005; 4use strict; 5use base qw(IMDb::Generique); 6 7sub name_fields 8{ 9 qw( 10 cover_url 11 ); 12} 13 14sub fields 15{ 16 my($self) = @_; 17 return ($self->name_fields); 18} 19 20=pod 21 22=head2 SEARCH 23 24 IMDb::People::search($string); 25 26$string is the string to search for. 27 28=cut 29 30sub search 31{ 32 my($string) = @_; 33 my @found; 34 35 my $response = 36 $IMDb::Ua->get('http://us.imdb.com/Find?select=People&for='.$string); 37 38 if($response->is_success) 39 { 40 my $doc = $IMDb::Parser->parse_html_string($response->content); 41 foreach my $anode (@{$doc->find('//a[starts-with(@href, "/Name?")]')}) 42 { 43 my $attr = $anode->getAttributeNode('href'); 44 if(defined $attr && $attr->value =~ /^\s*\/Name\?(.*)\s*$/) 45 { 46 push @found, $1; 47 } 48 } 49 } 50 51 return @found; 52} 53 54sub init 55{ 56 my $self = shift; 57 $self->SUPER::init(@_) or return; 58 my($id) = @_; 59 60 my $response = 61 $IMDb::Ua->get('http://us.imdb.com/Name?'.$id) or return; 62# print $response->content,"\n"; 63 64 if($response->is_success) 65 { 66 my $doc = $IMDb::Parser->parse_html_string($response->content); 67 68 # get cover 69 my $cover_node = 70 $doc->findnodes('//img[@alt = "Headshot"]')->get_node(1); 71 if(defined $cover_node) 72 { 73 $self->{cover_url} = $cover_node->getAttributeNode('src')->value; 74 } 75 76 return $self; 77 } 78} 79 801; 81