Changeset 494
- Timestamp:
- 04/02/06 12:54:53
- Files:
-
- trunk/plagger/assets/plugins/filter-entryfulltext/sportsnavi.pl (deleted)
- trunk/plagger/assets/plugins/filter-entryfulltext/sportsnavi.yaml (added)
- trunk/plagger/lib/Plagger/Plugin/CustomFeed/Simple.pm (modified) (2 diffs)
- trunk/plagger/lib/Plagger/Plugin/Filter/EntryFullText.pm (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/plagger/lib/Plagger/Plugin/CustomFeed/Simple.pm
r481 r494 19 19 my($self, $context, $args) = @_; 20 20 21 if ($args->{feed}->meta->{follow_link}) { 21 if (my $match = $args->{feed}->meta->{follow_link}) { 22 $args->{match} = $match; 22 23 return $self->aggregate($context, $args); 23 24 } … … 47 48 $feed->link($url); 48 49 49 my $re = $args->{ feed}->meta->{follow_link};50 my $re = $args->{match}; 50 51 51 52 my $parser = HTML::TokeParser->new(\$content); trunk/plagger/lib/Plagger/Plugin/Filter/EntryFullText.pm
r491 r494 10 10 use Plagger::Date; # for metadata in plugins 11 11 use Plagger::Util qw( decode_content ); 12 12 use Plagger::Plugin::CustomFeed::Simple; 13 13 use Plagger::UserAgent; 14 14 … … 17 17 $context->register_hook( 18 18 $self, 19 'customfeed.handle' => \&handle, 19 20 'update.entry.fixup' => \&filter, 20 21 ); … … 35 36 my $dir = $self->assets_dir; 36 37 my $dh = DirHandle->new($dir) or $context->error("$dir: $!"); 37 for my $file (grep -f $_->[0] && $_->[0] =~ /\. pl$/,38 for my $file (grep -f $_->[0] && $_->[0] =~ /\.(?:yaml)$/, 38 39 map [ File::Spec->catfile($dir, $_), $_ ], $dh->read) { 39 40 $self->load_plugin(@$file); … … 45 46 46 47 Plagger->context->log(debug => "loading $file"); 48 49 my $load_method = $file =~ /\.pl$/ ? 'load_plugin_perl' : 'load_plugin_yaml'; 50 push @{ $self->{plugins} }, $self->$load_method($file, $base); 51 } 52 53 sub load_plugin_perl { 54 my($self, $file, $base) = @_; 47 55 48 56 open my $fh, $file or Plagger->context->error("$file: $!"); … … 66 74 my $plugin = $plugin_class->new; 67 75 push @{ $self->{plugins} }, $plugin; 76 } 77 78 sub load_plugin_yaml { 79 my($self, $file, $base) = @_; 80 my $data = YAML::LoadFile($file); 81 82 return Plagger::Plugin::Filter::EntryFullText::YAML->new($data, $base); 83 } 84 85 sub handle { 86 my($self, $context, $args) = @_; 87 88 my $handler = first { $_->custom_feed_handle($args) } @{ $self->{plugins} }; 89 if ($handler) { 90 $args->{match} = $handler->custom_feed_follow_link; 91 return $self->Plagger::Plugin::CustomFeed::Simple::aggregate($context, $args); 92 } 68 93 } 69 94 … … 113 138 package Plagger::Plugin::Filter::EntryFullText::Site; 114 139 sub new { bless {}, shift } 140 sub custom_feed_handle { 0 } 141 sub custom_feed_follow_link { } 115 142 sub handle_force { 0 } 116 143 sub handle { 0 } 144 145 package Plagger::Plugin::Filter::EntryFullText::YAML; 146 sub new { 147 my($class, $data, $base) = @_; 148 bless {%$data, base => $base }, $class; 149 } 150 151 sub site_name { 152 my $self = shift; 153 $self->{base}; 154 } 155 156 sub custom_feed_handle { 157 my($self, $args) = @_; 158 $args->{feed}->url =~ /$self->{custom_feed_handle}/; 159 } 160 161 sub custom_feed_follow_link { 162 $_[0]->{custom_feed_follow_link}; 163 } 164 165 sub handle_force { 166 my($self, $args) = @_; 167 $self->{handle_force} 168 ? $args->{entry}->link =~ /$self->{handle_force}/ : 0; 169 } 170 171 sub handle { 172 my($self, $args) = @_; 173 $args->{entry}->link =~ /$self->{handle}/; 174 } 175 176 sub extract { 177 my($self, $args) = @_; 178 179 if (my @match = $args->{content} =~ /$self->{extract}/s) { 180 my @capture = split /\s+/, $self->{extract_capture}; 181 my %data; @data{@capture} = @match; 182 if ($data{date} && $self->{extract_date_format}) { 183 @data{date} = Plagger::Date->strptime($self->{extract_date_format}, $data{date}); 184 } 185 return \%data; 186 } 187 } 117 188 118 189 1;
