--- trunk/bin/irc-logger.pl 2008/03/14 14:45:04 123 +++ trunk/bin/irc-logger.pl 2008/03/14 15:26:33 125 @@ -618,7 +618,7 @@ $a->{me} ||= 0; $a->{time} ||= strftime($TIMESTAMP,localtime()); - _log + _log "ARCHIVE", $a->{channel}, " ", $a->{me} ? "***" . $a->{nick} : "<" . $a->{nick} . ">", " " . $a->{message}; @@ -673,15 +673,25 @@ Timeout => 30, ); +=head2 rss_parse_xml + + rss_parse_xml({ + url => 'http://www.example.com/rss', + send_rss_msgs => 42, + }); + +=cut + sub rss_parse_xml { my ($args) = @_; warn "## rss_parse_xml ",dump( @_ ) if $debug; # how many messages to send out when feed is seen for the first time? - my $send_rss_msgs = 1; + my $send_rss_msgs = $args->{send_rss_msgs}; + $send_rss_msgs = 1 if ! defined $send_rss_msgs; - _log "RSS fetch", $args->{url}; + _log "RSS fetch first $send_rss_msgs items from", $args->{url}; my $feed = XML::Feed->parse( \$args->{xml} ); if ( ! $feed ) { @@ -759,13 +769,14 @@ $sql .= qq{where id = } . $args->{id}; eval { $dbh->do( $sql ) }; - _log "RSS got $total items of which $updates new"; + _log "RSS got $total items of which $updates new from", $args->{url}; return $updates; } sub rss_fetch_all { - my $kernel = shift; + my ( $kernel, $send_rss_msgs ) = @_; + warn "## rss_fetch_all -- send_rss_msgs: $send_rss_msgs\n" if $debug; my $sql = qq{ select id, url, name, channel, nick, private from feeds @@ -778,7 +789,7 @@ warn "# ",$sth->rows," active RSS feeds\n"; my $count = 0; while (my $row = $sth->fetchrow_hashref) { - warn "## queued rss-fetch for ", $row->{url} if $debug; + $row->{send_rss_msgs} = $send_rss_msgs if defined $send_rss_msgs; $_stat->{rss}->{fetch}->{ $row->{url} } = $row; $kernel->post( 'rss-fetch', @@ -786,6 +797,7 @@ 'rss_response', HTTP::Request->new( GET => $row->{url} ), ); + warn "## queued rss-fetch ", dump( $row ) if $debug; } return "OK, scheduled " . $sth->rows . " feeds for refresh"; } @@ -803,7 +815,6 @@ # XXX send queue messages while ( my $job = $dq->pickup_queued_job() ) { my $data = read_file( $job->get_data_path ) || die "can't load ", $job->get_data_path, ": $!"; -# $kernel->post( $irc => $type => $to, $msg ); my @data = eval $data; _log "IRC post from queue:", @data; $kernel->post( $irc => @data ); @@ -822,8 +833,8 @@ my $poco_object = $sender->get_heap(); _log "connected to",$poco_object->server_name(); $kernel->post( $sender => join => $_ ) for @channels; - # seen RSS cache - _log rss_fetch_all( $kernel ); + # seen RSS cache, so don't send out messages + _log rss_fetch_all( $kernel, 0 ); undef; }, # irc_255 => sub { # server is done blabbing