Changeset 719

Show
Ignore:
Timestamp:
05/13/06 03:23:25
Author:
miyagawa
Message:

very, very basic enclosure support for RSS 2.0 <enclosure /> and Atom <link rel="enclosure" />

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/plagger/lib/Plagger/Entry.pm

    r384 r719  
    1717        tags    => [], 
    1818        meta    => {}, 
     19        enclosures => [], 
    1920    }, $class; 
    2021} 
     
    6970} 
    7071 
     72sub add_enclosure { 
     73    my($self, $enclosure) = @_; 
     74    push @{ $self->{enclosures} }, $enclosure; 
     75} 
     76 
     77sub enclosure { 
     78    my $self = shift; 
     79    wantarray ? @{$self->{enclosures}} : $self->{enclosures}->[0]; 
     80} 
     81 
     82sub enclosures { 
     83    my $self = shift; 
     84    wantarray ? @{$self->{enclosures}} : $self->{enclosures}; 
     85} 
     86 
    71871; 
    7288 
  • trunk/plagger/lib/Plagger/Plugin/Aggregator/Simple.pm

    r680 r719  
    44 
    55use Feed::Find; 
     6use Plagger::Enclosure; 
    67use Plagger::UserAgent; 
    78use List::Util qw(first); 
     
    137138        $entry->body(_u($e->content->body || $e->summary->body)); 
    138139 
     140        # enclosure support, to be added to XML::Feed 
     141        if ($remote->format =~ /^RSS / && $e->{entry}->{enclosure}) { 
     142            my $enclosure = Plagger::Enclosure->new; 
     143            $enclosure->url($e->{entry}->{enclosure}->{url}); 
     144            $enclosure->length($e->{entry}->{enclosure}->{length}); 
     145            $enclosure->type($e->{entry}->{enclosure}->{type}); 
     146            $entry->add_enclosure($enclosure); 
     147        } elsif ($remote->format eq 'Atom') { 
     148            for my $link ( grep { $_->rel eq 'enclosure' } $e->{entry}->link ) { 
     149                my $enclosure = Plagger::Enclosure->new; 
     150                $enclosure->url($link->href); 
     151                $enclosure->length($link->length); 
     152                $enclosure->type($link->type); 
     153                $entry->add_enclosure($enclosure); 
     154            } 
     155        } 
     156 
    139157        my $args = { 
    140158            entry      => $entry,