/[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 73 by dpavlin, Fri Feb 23 11:48:39 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 @feeds = Feed::Find->find_in_html( \$content );
97    
98          if (@feeds) {          if (@feeds) {
99    
100                  Jifty->log->info("found possible feeds: ", dump( @feeds ));                  Jifty->log->info("found possible feeds: ", dump( @feeds ));
101    
102                  @feeds = map {                  my @search_feeds = map {
103                          my $t = $_;                          my $t = $_;
104                          $t =~ s/\b$search_moniker\b/%s/;                          $t =~ s/\b$search_moniker\b/%s/;
105                          $t                          $t
106                  } grep(/\b$search_moniker\b/,@feeds);                  } grep(/\b$search_moniker\b/,@feeds);
107    
                 $self->result->message('Found ' . @feeds . ' feeds, using first one. ' . join(" ", @feeds) );  
108    
109                  $uri = shift @feeds;                  if ( my $feed_uri = shift @search_feeds ) {
110    
111                            $self->result->message('Found ' . @feeds . " feeds, using first: $feed_uri" );
112                            $self->argument_value('uri', $feed_uri);
113    
114                  $self->argument_value('uri', $uri);                          Jifty->log->debug("calling parent take_action with new uri $feed_uri");
115    
116                  Jifty->log->debug("calling parent take_action with new uri $uri");                          return $self->SUPER::take_action( @ARGS );
117    
118                  $self->SUPER::take_action( @ARGS );                  } else {
119                            Jifty->log->debug("found feeds ", dump( @feeds ), " but none of them has search moniker!");
120                    }
121            }
122    
123                  return 1;          Jifty->log->debug("no feeds found, trying content_class detection");
124    
125          } else {          my $source = Grep::Source->new();
126    
127            if ( my $class = $source->content_class( $content ) ) {
128    
129                    Jifty->log->debug("$class registred for feed $uri");
130    
131                  my $r = $ua->get( sprintf( $uri, $search_moniker ) );                  $self->argument_value('source', $source);
132                  warn "no feeds in ", $r->content;                  $self->result->message("Found $class scraper for $uri" );
133                    return $self->SUPER::take_action( @ARGS );
134    
135            } else {
136    
137                  $self->result->error('No feeds found on supplied URI');                  $self->result->error('No feeds found on supplied URI');
138                  return 0;                  return 0;
139    
140          }          }
141    
142  }  }

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

  ViewVC Help
Powered by ViewVC 1.1.26