Changeset 507

Show
Ignore:
Timestamp:
04/02/06 16:50:10
Author:
mizzy
Message:

Set entry->title.You can change the format in config.yaml.
Set an artist name to entry->author.
Set a link and an icon to an entry by getting data from the Amazon web service.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/plagger/lib/Plagger/Plugin/CustomFeed/iTunesRecentPlay.pm

    r430 r507  
    88use HTML::Entities; 
    99use Plagger::UserAgent; 
     10use Net::Amazon; 
     11use Net::Amazon::Request::Keyword; 
    1012 
    1113sub register { 
     
    7779        m!</dict>! 
    7880            and do { 
    79                 my $entry = Plagger::Entry->new; 
    80  
    8181                if( $data->{date} and $data->{artist} ){ 
    8282                    my $dt = DateTime::Format::W3CDTF->parse_datetime($data->{date}); 
     
    8686                    } 
    8787                    if( !defined $self->conf->{duration} or $dt->epoch > time - $self->conf->{duration} * 60 ){ 
     88                        my $entry = Plagger::Entry->new; 
     89                        $entry->date(Plagger::Date->from_epoch($dt->epoch)); 
     90 
     91                        # author 
     92                        $entry->author($data->{artist}); 
     93 
     94                        # title 
     95                        my $title = $self->conf->{title_format}; 
     96                        $title = '%track - %artist' unless $title; 
     97                        $title =~ s/%artist/$data->{artist}/; 
     98                        $title =~ s/%album/$data->{album}/; 
     99                        $title =~ s/%track/$data->{track}/; 
     100                        $entry->title($title); 
     101 
     102                        # search aws 
     103                        if($self->conf->{aws_developer_token}){ 
     104                            my $item = $self->search_aws($context, $data->{artist}, $data->{album}); 
     105                            if($item){ 
     106                                $entry->link($item->url); 
     107                                $entry->icon({ url => $item->ImageUrlSmall }); 
     108                                $entry->body($item->ProductDescription); 
     109                                $entry->summary($item->ProductDescription); 
     110                            } 
     111                        } 
     112 
    88113                        for my $key (keys %$data){ 
    89114                            $entry->meta->{$key} = $data->{$key}; 
    90115                        } 
    91                         $entry->date(Plagger::Date->from_epoch($dt->epoch)); 
     116 
    92117                        $context->log( debug => $data->{artist} . ' ' . $data->{track}); 
     118 
    93119                        $feed->add_entry($entry); 
    94120                    } 
     
    101127} 
    102128 
     129sub search_aws { 
     130    my($self, $context, $artist, $album) = @_; 
     131    $context->log( info => "Searching $artist - $album on Amazon..."); 
     132    my $attr; 
     133    $attr->{token}  = $self->conf->{aws_developer_token}; 
     134    $attr->{locale} = $self->conf->{aws_locale}; 
     135    $attr->{affiliate_id} = $self->conf->{aws_associate_id}; 
     136 
     137    my $ua = Net::Amazon->new(%$attr); 
     138 
     139    my $keyword = encode("UTF-8", "$artist $album"); 
     140    my $req = Net::Amazon::Request::Keyword->new( 
     141        keyword => $keyword, 
     142        mode    => 'music'. $self->conf->{aws_locale}, 
     143    ); 
     144 
     145    my $response = $ua->request($req); 
     146    my $item = ($response->properties())[0]; 
     147    return $item; 
     148} 
     149 
    1031501; 
    104151__END__ 
     
    115162      library_path: /path/to/iTunes Music Library.xml 
    116163      duration: 120 
     164      title_format: %track - %artist 
     165      aws_developer_token: XXXXXXXXXXXXXXXXXXXX 
     166      aws_associate_id: xxxxxxxxxx-22 
     167      aws_locale: jp 
    117168 
    118169=head1 DESCRIPTION 
     
    135186period of plagger with cron to reduce memory usage. 
    136187 
     188=item title_format 
     189 
     190Set a title format of an entry.You can use %track, %artist and %album. 
     191 
     192=item aws_developer_token 
     193 
     194If you set this parameter, this plugin get information about a track from the Amazon web service. 
     195 
     196=item aws_associate_id 
     197 
     198Your Amazon associate ID. 
     199 
     200=item aws_locale 
     201 
     202Set a web service locale. 
     203 
    137204=back 
    138205