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