--- trunk/bin/irc-logger.pl 2008/03/14 15:26:33 125 +++ trunk/bin/irc-logger.pl 2008/03/14 16:06:57 126 @@ -18,8 +18,6 @@ use Carp qw/confess/; use XML::Feed; use DateTime::Format::Flexible; -use IPC::DirQueue; -use File::Slurp; use Encode; =head1 NAME @@ -59,8 +57,6 @@ ircname => 'Anna the bot: try /msg irc-logger help', }; -my $queue_dir = './queue'; - my $HOSTNAME = `hostname -f`; chomp($HOSTNAME); @@ -113,7 +109,6 @@ GetOptions( 'import-dircproxy:s' => \$import_dircproxy, 'log:s' => \$log_path, - 'queue:s' => \$queue_dir, 'debug!' => \$debug, ); @@ -127,14 +122,6 @@ open(STDOUT, '>', $log_path) && warn "log to $log_path: $!\n"; -# queue - -if ( ! -d $queue_dir ) { - warn "## creating queue directory $queue_dir"; - mkdir $queue_dir or die "can't create queue directory $queue_dir: $!"; -} - -my $dq = IPC::DirQueue->new({ dir => $queue_dir }); # HTML formatters @@ -683,7 +670,7 @@ =cut sub rss_parse_xml { - my ($args) = @_; + my ($kernel,$args) = @_; warn "## rss_parse_xml ",dump( @_ ) if $debug; @@ -691,7 +678,7 @@ my $send_rss_msgs = $args->{send_rss_msgs}; $send_rss_msgs = 1 if ! defined $send_rss_msgs; - _log "RSS fetch first $send_rss_msgs items from", $args->{url}; + warn "## RSS fetch first $send_rss_msgs items from", $args->{url} if $debug; my $feed = XML::Feed->parse( \$args->{xml} ); if ( ! $feed ) { @@ -751,14 +738,8 @@ my ( $type, $to ) = ( 'notice', $args->{channel} ); ( $type, $to ) = ( 'privmsg', $args->{nick} ) if $args->{private}; - _log("RSS generated $type to $to:", $msg); - # XXX enqueue message to send later - sub enqueue_post { - my $post = dump( @_ ); - warn "## queue_post $post\n" if $debug; - $dq->enqueue_string( $post ); - } - enqueue_post( $type => $to => $msg ); + _log(">> RSS $type to $to:", $msg); + $kernel->post( $irc => $type => $to => $msg ); $updates++; } @@ -769,7 +750,7 @@ $sql .= qq{where id = } . $args->{id}; eval { $dbh->do( $sql ) }; - _log "RSS got $total items of which $updates new from", $args->{url}; + _log "RSS $updates/$total new items from", $args->{url}; return $updates; } @@ -812,15 +793,6 @@ $_stat->{rss}->{last_poll} = time(); _log rss_fetch_all( $kernel ); } - # 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, ": $!"; - my @data = eval $data; - _log "IRC post from queue:", @data; - $kernel->post( $irc => @data ); - $job->finish; - warn "## done queued job: ",dump( @data ) if $debug; - } } POE::Session->create( inline_states => { @@ -1052,7 +1024,7 @@ if ($@) { $res = "ERROR: $@"; } else { - $res = "OK, RSS executed $command " . ( $sub ? "-$sub" : '' ) ."on $channel url $url"; + $res = "OK, RSS executed $command" . ( $sub ? "-$sub" : '' ) ." on $channel url $url"; if ( $command eq 'clean' ) { my $seen = $_stat->{rss}->{seen} || die "no seen?"; my $want_link = $_stat->{rss}->{url2link}->{$url} || warn "no url2link($url)"; @@ -1064,6 +1036,8 @@ _log "RSS removed seen $c $url $link"; } } + } elsif ( $command eq 'add' ) { + rss_fetch_all( $_[KERNEL] ); } } } else { @@ -1073,7 +1047,7 @@ # this makes sense because we didn't catch rss-clean http://... before! $_stat->{rss} = undef; $dbh->do( qq{ update feeds set last_update = now() - delay } ); - $res = "OK, cleaned RSS cache"; + $res = rss_fetch_all( $_[KERNEL] ); } if ($res) { @@ -1161,7 +1135,7 @@ my $row = delete( $_stat->{rss}->{fetch}->{ $request_object->uri } ); if ( $row ) { $row->{xml} = $response_object->content; - rss_parse_xml( $row ); + rss_parse_xml( $_[KERNEL], $row ); } else { warn "## can't find rss->fetch for ", $request_object->uri; }