/[Grep]/lib/Grep/Action/AddFeed.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /lib/Grep/Action/AddFeed.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 26 by dpavlin, Mon Feb 19 10:58:27 2007 UTC revision 78 by dpavlin, Fri Feb 23 17:34:20 2007 UTC
# Line 79  sub take_action { Line 79  sub take_action {
79    
80          Jifty->log->debug("trying to find feed on $uri");          Jifty->log->debug("trying to find feed on $uri");
81    
82          my @feeds = Feed::Find->find( sprintf( $uri, $search_moniker ), $ua );          my $r = $ua->get( sprintf( $uri, $search_moniker ) );
83    
84            return $self->result->error( $r->status_line . " from $uri" ) unless ( $r->is_success );
85    
86            my $ct = $r->header('Content-type') or warn "can't get Content-type";
87            my $content = $r->content;
88    
89            Jifty->log->debug("got ", length( $content ), " bytes $ct");
90    
91            if ( $ct =~ /xml/ ) {
92                    $self->result->message( "Assuming $uri is feed from $ct" );
93                    return $self->SUPER::take_action( @ARGS );
94            }
95    
96            my $base_uri = $uri;
97            $base_uri =~ s!/[^/]+$!!;
98    
99            my @feeds = Feed::Find->find_in_html( \$content, $base_uri );
100    
101          if (@feeds) {          if (@feeds) {
102    
103                  Jifty->log->info("found possible feeds: ", dump( @feeds ));                  Jifty->log->info("found possible feeds: ", dump( @feeds ));
104    
105                  @feeds = map {                  my @search_feeds = map {
106                          my $t = $_;                          my $t = $_;
107                          $t =~ s/\b$search_moniker\b/%s/;                          $t =~ s/\b$search_moniker\b/%s/;
108                          $t                          $t
109                  } grep(/\b$search_moniker\b/,@feeds);                  } grep(/\b$search_moniker\b/,@feeds);
110    
                 $self->result->message('Found ' . @feeds . ' feeds, using first one. ' . join(" ", @feeds) );  
111    
112                  $uri = shift @feeds;                  if ( my $feed_uri = shift @search_feeds ) {
113    
114                  $self->argument_value('uri', $uri);                          $self->result->message('Found ' . @feeds . " feeds, using first: $feed_uri" );
115                            $self->argument_value('uri', $feed_uri);
116    
117                  Jifty->log->debug("calling parent take_action with new uri $uri");                          Jifty->log->debug("calling parent take_action with new uri $feed_uri");
118    
119                  $self->SUPER::take_action( @ARGS );                          return $self->SUPER::take_action( @ARGS );
120    
121                  return 1;                  } else {
122                            Jifty->log->debug("found feeds ", dump( @feeds ), " but none of them has search moniker!");
123                    }
124            }
125    
126          } else {          Jifty->log->debug("no feeds found, trying content_class detection");
127    
128            my $source = Grep::Source->new();
129    
130            if ( my $class = $source->content_class( $content ) ) {
131    
132                    Jifty->log->debug("$class registred for feed $uri");
133    
134                  my $r = $ua->get( sprintf( $uri, $search_moniker ) );                  $self->argument_value('source', $source);
135                  warn "no feeds in ", $r->content;                  $self->result->message("Found $class scraper for $uri" );
136                    return $self->SUPER::take_action( @ARGS );
137    
138            } else {
139    
140                  $self->result->error('No feeds found on supplied URI');                  $self->result->error('No feeds found on supplied URI');
141                  return 0;                  return 0;
142    
143          }          }
144    
145  }  }

Legend:
Removed from v.26  
changed lines
  Added in v.78

  ViewVC Help
Powered by ViewVC 1.1.26