Changeset 683
- Timestamp:
- 05/05/06 16:51:03
- Files:
-
- trunk/plagger/lib/Plagger.pm (modified) (1 diff)
- trunk/plagger/lib/Plagger/Plugin/Aggregator/Xango.pm (modified) (1 diff)
- trunk/plagger/lib/Plagger/Plugin/Publish/Planet.pm (modified) (2 diffs)
- trunk/plagger/lib/Plagger/Plugin/Subscription/XOXO.pm (modified) (1 diff)
- trunk/plagger/lib/Plagger/Subscription.pm (modified) (1 diff)
- trunk/plagger/lib/Plagger/Util.pm (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/plagger/lib/Plagger.pm
r671 r683 277 277 if (!$ok) { 278 278 Plagger->context->log(error => $feed->url . " is not aggregated by any aggregator"); 279 Plagger->context->subscription->delete_feed($feed); 279 280 } 280 281 } trunk/plagger/lib/Plagger/Plugin/Aggregator/Xango.pm
r680 r683 125 125 my @feeds = Feed::Find->find_in_html($r->content_ref, $url); 126 126 if (@feeds) { 127 $url = $feeds[0]; 128 return unless $url =~ m!^https?://!i; 129 $_[KERNEL]->post($_[HEAP]->{BROKER_ALIAS}, 'enqueue_job', Xango::Job->new(uri => URI->new($url), redirect => $redirect)); 127 my $feed_url = $feeds[0]; 128 return unless $feed_url =~ m!^https?://!i; 129 130 # OMG we should alias Feed so it can be looked up with $feed_url, too 131 $plugin->{_url2feed}->{$feed_url} = $plugin->{_url2feed}->{$url}; 132 133 $_[KERNEL]->post($_[HEAP]->{BROKER_ALIAS}, 'enqueue_job', Xango::Job->new(uri => URI->new($feed_url), redirect => $redirect)); 130 134 } 131 135 return; trunk/plagger/lib/Plagger/Plugin/Publish/Planet.pm
r680 r683 30 30 # HTML::Tidy->new, 31 31 undef, 32 HTML::Scrubber->new( 33 rules => [ 34 style => 0, 35 script => 0, 36 ], 37 default => [ 1, { '*' => 1, style => 0 } ], 38 ), 32 # HTML::Scrubber->new( 33 # rules => [ 34 # style => 0, 35 # script => 0, 36 # ], 37 # default => [ 1, { '*' => 1, style => 0 } ], 38 # ), 39 undef, 39 40 ); 40 41 … … 71 72 foreach my $entry ($feed->entries) { 72 73 # $entry->{body} = $tidy->clean($entry->{body}); 73 $entry->{body} = $scrubber->scrub($entry->{body}) ;74 $entry->{body} = $scrubber->scrub($entry->{body}) if $scrubber; 74 75 } 75 76 } trunk/plagger/lib/Plagger/Plugin/Subscription/XOXO.pm
r681 r683 28 28 29 29 my $xhtml = Plagger::Util::load_uri($uri, $self); 30 31 30 my $tree = HTML::TreeBuilder->new; 32 31 $tree->parse($xhtml); trunk/plagger/lib/Plagger/Subscription.pm
r20 r683 17 17 } 18 18 19 sub delete_feed { 20 my($self, $feed) = @_; 21 my @feeds = grep { $_ ne $feed } $self->feeds; 22 $self->{feeds} = \@feeds; 23 } 24 19 25 sub types { 20 26 my $self = shift; trunk/plagger/lib/Plagger/Util.pm
r681 r683 47 47 48 48 sub decode_content { 49 my $res = shift; 50 my $content = $res->content; 49 my $stuff = shift; 51 50 52 # 1) get charset from HTTP Content-Type header 53 my $charset = ($res->http_response->content_type =~ /charset=([\w\-]+)/)[0]; 51 my $content; 52 my $res; 53 if (ref($stuff) && ref($stuff) eq 'URI::Fetch::Response') { 54 $res = $stuff; 55 $content = $res->content; 56 } elsif (ref($stuff)) { 57 Plagger->context->error("Don't know how to decode " . ref($stuff)); 58 } else { 59 $content = $stuff; 60 } 54 61 55 # 2) if there's not, try META tag 62 my $charset; 63 64 # 1) if it is HTTP response, get charset from HTTP Content-Type header 65 if ($res) { 66 $charset = ($res->http_response->content_type =~ /charset=([\w\-]+)/)[0]; 67 } 68 69 # 2) if there's not, try XML encoding 70 $charset ||= ( $content =~ /<\?xml version="1.0" encoding="([\w\-]+)"\?>/ )[0]; 71 72 # 3) if there's not, try META tag 56 73 $charset ||= ( $content =~ m!<meta http-equiv="Content-Type" content=".*charset=([\w\-]+)"!i )[0]; 57 74 58 # 3) if there's not still, try Detector/Guess75 # 4) if there's not still, try Detector/Guess 59 76 $charset ||= $Detector->($content); 60 77 61 # 4) falls back to UTF-878 # 5) falls back to UTF-8 62 79 $charset ||= 'utf-8'; 63 80 … … 82 99 my($uri, $plugin) = @_; 83 100 101 require Plagger::UserAgent; 102 84 103 my $data; 85 104 if (ref($uri) eq 'SCALAR') { … … 95 114 $response->http_response->message); 96 115 } 97 $data = $response->content;116 $data = decode_content($response); 98 117 } 99 118 elsif ($uri->scheme eq 'file') { … … 101 120 open my $fh, '<', $uri->path 102 121 or Plagger->context->error( $uri->path . ": $!" ); 103 $data = join '', <$fh>;122 $data = decode_content(join '', <$fh>); 104 123 } 105 124 else {
