Changeset 204

Show
Ignore:
Timestamp:
02/28/06 18:07:11
Author:
miyagawa
Message:

Publish::Feed:

  • Added nasty check for XML::RSS::LibXML version
  • Use title_text to create feeds
  • Tweaked doc
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/plagger/lib/Plagger/Plugin/Publish/Feed.pm

    r202 r204  
    88use XML::Feed; 
    99use XML::Feed::Entry; 
     10use XML::RSS::LibXML; 
    1011use File::Spec; 
    1112 
    12 # Now XML::RSS::LibXML(0.15) has a bug when it process for RSS 2.0. 
    13 # So this module uses XML::RSS temporarily. 
    14 $XML::Feed::RSS::PREFERRED_PARSER = "XML::RSS"; 
     13# xxx ugh 
     14$XML::Feed::RSS::PREFERRED_PARSER = 
     15    $XML::RSS::LibXML::VERSION >= 0.16 ? "XML::RSS::LibXML" : "XML::RSS"; 
    1516 
    1617sub register { 
     
    4142 
    4243    # generate feed 
    43     $context->log(info => "generate feed: " . $f->type); 
    4444    my $feed = XML::Feed->new($feed_format); 
    45     $feed->title($f->title_text); 
     45    $feed->title($f->title); 
    4646    $feed->link($f->link); 
    47     $feed->modified(Plagger::Date->now(timezone => $context->conf->{timezone})); 
    48     $feed->generator("Plagger-$Plagger::VERSION"); 
     47    $feed->modified(Plagger::Date->now); 
     48    $feed->generator("Plagger/$Plagger::VERSION"); 
    4949 
    5050    # add entry 
    5151    for my $e ($f->entries) { 
    5252        my $entry = XML::Feed::Entry->new($feed_format); 
    53         $entry->title($e->title_text); 
     53        $entry->title($e->title); 
    5454        $entry->link($e->link); 
    5555        $entry->summary($e->body_text); 
     
    6363    my $filepath = File::Spec->catfile($self->conf->{dir}, $self->gen_filename($f)); 
    6464 
     65    $context->log(info => "save feed for " . $f->url . " to $filepath"); 
    6566 
    66     # output feed 
    6767    my $xml = $feed->as_xml; 
    6868    utf8::decode($xml) unless utf8::is_utf8($xml); 
     
    105105=head1 
    106106 
    107 Plagger::Plugin::Publish::Feed 
     107Plagger::Plugin::Publish::Feed - republish RSS/Atom feeds 
    108108 
    109109=head1 SYNOPSYS 
    110110 
    111     - module: Publish::Feed 
    112       config: 
    113         format: RSS 
    114         dir: /home/yoshiki/plagger/feed 
    115         filename: my_%t.rss 
     111  - module: Publish::Feed 
     112    config: 
     113      format: RSS 
     114      dir: /home/yoshiki/plagger/feed 
     115      filename: my_%t.rss 
    116116 
    117117=head1 CONFIG 
     
    119119=head2 format 
    120120 
    121 Specify the format of feed. C<Plagger::Plugin::Publish::Feed> supports the following syndication feed formats: 
     121Specify the format of feed. C<Plagger::Plugin::Publish::Feed> supports 
     122the following syndication feed formats: 
    122123 
    123124=over 4 
     
    131132=head2 dir 
    132133 
    133 Directory for saving feed files
     134Directory to save feed files in
    134135 
    135136=head2 filename 
    136137 
    137 File name for feed files. A default file name is used, if you do not specify it. It supports the following format like printf(): 
     138Filename to be used to create feed files. It defaults to C<%i.rss> for 
     139RSS and C<%i.atom> for Atom feed. It supports the following format 
     140like printf(): 
    138141 
    139142=over 4