Changeset 208
- Timestamp:
- 02/28/06 19:57:42
- Files:
-
- trunk/plagger/lib/Plagger/Entry.pm (modified) (2 diffs)
- trunk/plagger/lib/Plagger/Feed.pm (modified) (1 diff)
- trunk/plagger/lib/Plagger/Plugin/Filter/ResolveRelativeLink.pm (modified) (1 diff)
- trunk/plagger/lib/Plagger/Plugin/Publish/Debug.pm (modified) (1 diff)
- trunk/plagger/lib/Plagger/Plugin/Subscription/Bloglines.pm (modified) (6 diffs)
- trunk/plagger/lib/Plagger/Thing.pm (added)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/plagger/lib/Plagger/Entry.pm
r171 r208 2 2 use strict; 3 3 4 use base qw( Class::Accessor::Fast);4 use base qw( Plagger::Thing ); 5 5 __PACKAGE__->mk_accessors(qw( title author tags date link id summary body rate icon meta)); 6 6 … … 40 40 } 41 41 42 sub has_tag {43 my($self, $want_tag) = @_;44 for my $tag (@{$self->tags}) {45 return 1 if $tag eq $want_tag;46 }47 return 0;48 }49 50 sub add_tag {51 my($self, $tag) = @_;52 push @{$self->tags}, $tag53 unless $self->has_tag($tag);54 }55 56 42 sub permalink { 57 43 my $self = shift; trunk/plagger/lib/Plagger/Feed.pm
r177 r208 2 2 use strict; 3 3 4 use base qw( Class::Accessor::Fast);4 use base qw( Plagger::Thing ); 5 5 __PACKAGE__->mk_accessors(qw( link url image description language author updated tags meta type source_xml )); 6 6 trunk/plagger/lib/Plagger/Plugin/Filter/ResolveRelativeLink.pm
r206 r208 18 18 my $entry = $args->{entry}; 19 19 20 my $resolver = HTML::ResolveLink->new(base => $entry->permalink); 20 my $base = $entry->permalink || $args->{feed}->link; 21 my $resolver = HTML::ResolveLink->new(base => $base); 21 22 my $html = $resolver->resolve($entry->body); 22 23 trunk/plagger/lib/Plagger/Plugin/Publish/Debug.pm
r104 r208 15 15 sub feed { 16 16 my($self, $context, $args) = @_; 17 $context->dumper($args->{feed}); 17 18 if ($self->conf->{expression}) { 19 eval $self->conf->{expression}; 20 $context->log(error => "Expression error: $@ with '" . $self->conf->{expression} . "'") if $@; 21 } else { 22 $context->dumper($args->{feed}); 23 } 18 24 } 19 25 trunk/plagger/lib/Plagger/Plugin/Subscription/Bloglines.pm
r199 r208 30 30 31 31 for my $folder ($subscription->folders) { 32 $self->add_subscription($ context, $subscription, $folder->{BloglinesSubId}, $folder->{title});33 } 34 35 $self->add_subscription($ context, $subscription, 0);32 $self->add_subscription($subscription, $folder->{BloglinesSubId}, $folder->{title}); 33 } 34 35 $self->add_subscription($subscription, 0); 36 36 } 37 37 … … 46 46 $feed->url($source->{xmlUrl} ); 47 47 $feed->tags([ $title ]) if $title; 48 $context->subscription->add($feed);48 Plagger->context->subscription->add($feed); 49 49 } 50 50 } … … 67 67 $feed->type('bloglines'); 68 68 $context->subscription->add($feed); 69 70 if ($self->conf->{fetch_folders}) { 71 # TODO: cache it! 72 $self->fetch_folders($context); 73 } 74 } 75 } 76 77 sub fetch_folders { 78 my($self, $context) = @_; 79 80 $self->{folders} = {}; 81 $context->log(info => "call Bloglines listsubs API to get folder structure"); 82 83 my $subscription = $self->{bloglines}->listsubs(); 84 85 for my $folder ($subscription->folders) { 86 my @feeds = $subscription->feeds_in_folder($folder->{BloglinesSubId}); 87 for my $feed (@feeds) { 88 # BloglinesSubId is different from bloglines:siteid. Don't use it 89 $self->{folders}->{$feed->{htmlUrl}} = $folder->{title}; 90 $context->log(debug => "$feed->{htmlUrl}: $folder->{title}"); 91 } 69 92 } 70 93 } … … 91 114 $feed->author($source->{webmaster}); 92 115 $feed->meta->{bloglines_id} = $source->{bloglines}->{siteid}; 116 117 # under fetch_folders option, set folder as tags to feeds 118 if (my $folder = $self->{folders}->{$feed->link}) { 119 $feed->tags([ $folder ]); 120 } 121 93 122 $feed->source_xml($update->{_xml}); 94 123 … … 144 173 =item mark_read 145 174 146 C<mark_read> specifies whether this plugin "marks as read"the items175 C<mark_read> specifies whether this plugin I<marks as read> the items 147 176 you synchronize. With this option set to 0, you will get the 148 177 duplicated updates everytime you run Plagger, until you mark them … … 156 185 to 1, the default. 157 186 187 =item fetch_folders 188 189 C<fetch_folders> specifies whether this plugin fetches I<folder> 190 strucuture using listsubs API. With this option on, all feeds under 191 I<Plagger> folder will have I<Plagger> as its tag. 192 193 You can use this tags information using Rules in later phase. 194 158 195 =back 159 196
