618 |
$a->{me} ||= 0; |
$a->{me} ||= 0; |
619 |
$a->{time} ||= strftime($TIMESTAMP,localtime()); |
$a->{time} ||= strftime($TIMESTAMP,localtime()); |
620 |
|
|
621 |
_log |
_log "ARCHIVE", |
622 |
$a->{channel}, " ", |
$a->{channel}, " ", |
623 |
$a->{me} ? "***" . $a->{nick} : "<" . $a->{nick} . ">", |
$a->{me} ? "***" . $a->{nick} : "<" . $a->{nick} . ">", |
624 |
" " . $a->{message}; |
" " . $a->{message}; |
673 |
Timeout => 30, |
Timeout => 30, |
674 |
); |
); |
675 |
|
|
676 |
|
=head2 rss_parse_xml |
677 |
|
|
678 |
|
rss_parse_xml({ |
679 |
|
url => 'http://www.example.com/rss', |
680 |
|
send_rss_msgs => 42, |
681 |
|
}); |
682 |
|
|
683 |
|
=cut |
684 |
|
|
685 |
sub rss_parse_xml { |
sub rss_parse_xml { |
686 |
my ($args) = @_; |
my ($args) = @_; |
687 |
|
|
688 |
warn "## rss_parse_xml ",dump( @_ ) if $debug; |
warn "## rss_parse_xml ",dump( @_ ) if $debug; |
689 |
|
|
690 |
# how many messages to send out when feed is seen for the first time? |
# how many messages to send out when feed is seen for the first time? |
691 |
my $send_rss_msgs = 1; |
my $send_rss_msgs = $args->{send_rss_msgs}; |
692 |
|
$send_rss_msgs = 1 if ! defined $send_rss_msgs; |
693 |
|
|
694 |
_log "RSS fetch", $args->{url}; |
_log "RSS fetch first $send_rss_msgs items from", $args->{url}; |
695 |
|
|
696 |
my $feed = XML::Feed->parse( \$args->{xml} ); |
my $feed = XML::Feed->parse( \$args->{xml} ); |
697 |
if ( ! $feed ) { |
if ( ! $feed ) { |
769 |
$sql .= qq{where id = } . $args->{id}; |
$sql .= qq{where id = } . $args->{id}; |
770 |
eval { $dbh->do( $sql ) }; |
eval { $dbh->do( $sql ) }; |
771 |
|
|
772 |
_log "RSS got $total items of which $updates new"; |
_log "RSS got $total items of which $updates new from", $args->{url}; |
773 |
|
|
774 |
return $updates; |
return $updates; |
775 |
} |
} |
776 |
|
|
777 |
sub rss_fetch_all { |
sub rss_fetch_all { |
778 |
my $kernel = shift; |
my ( $kernel, $send_rss_msgs ) = @_; |
779 |
|
warn "## rss_fetch_all -- send_rss_msgs: $send_rss_msgs\n" if $debug; |
780 |
my $sql = qq{ |
my $sql = qq{ |
781 |
select id, url, name, channel, nick, private |
select id, url, name, channel, nick, private |
782 |
from feeds |
from feeds |
789 |
warn "# ",$sth->rows," active RSS feeds\n"; |
warn "# ",$sth->rows," active RSS feeds\n"; |
790 |
my $count = 0; |
my $count = 0; |
791 |
while (my $row = $sth->fetchrow_hashref) { |
while (my $row = $sth->fetchrow_hashref) { |
792 |
warn "## queued rss-fetch for ", $row->{url} if $debug; |
$row->{send_rss_msgs} = $send_rss_msgs if defined $send_rss_msgs; |
793 |
$_stat->{rss}->{fetch}->{ $row->{url} } = $row; |
$_stat->{rss}->{fetch}->{ $row->{url} } = $row; |
794 |
$kernel->post( |
$kernel->post( |
795 |
'rss-fetch', |
'rss-fetch', |
797 |
'rss_response', |
'rss_response', |
798 |
HTTP::Request->new( GET => $row->{url} ), |
HTTP::Request->new( GET => $row->{url} ), |
799 |
); |
); |
800 |
|
warn "## queued rss-fetch ", dump( $row ) if $debug; |
801 |
} |
} |
802 |
return "OK, scheduled " . $sth->rows . " feeds for refresh"; |
return "OK, scheduled " . $sth->rows . " feeds for refresh"; |
803 |
} |
} |
815 |
# XXX send queue messages |
# XXX send queue messages |
816 |
while ( my $job = $dq->pickup_queued_job() ) { |
while ( my $job = $dq->pickup_queued_job() ) { |
817 |
my $data = read_file( $job->get_data_path ) || die "can't load ", $job->get_data_path, ": $!"; |
my $data = read_file( $job->get_data_path ) || die "can't load ", $job->get_data_path, ": $!"; |
|
# $kernel->post( $irc => $type => $to, $msg ); |
|
818 |
my @data = eval $data; |
my @data = eval $data; |
819 |
_log "IRC post from queue:", @data; |
_log "IRC post from queue:", @data; |
820 |
$kernel->post( $irc => @data ); |
$kernel->post( $irc => @data ); |
833 |
my $poco_object = $sender->get_heap(); |
my $poco_object = $sender->get_heap(); |
834 |
_log "connected to",$poco_object->server_name(); |
_log "connected to",$poco_object->server_name(); |
835 |
$kernel->post( $sender => join => $_ ) for @channels; |
$kernel->post( $sender => join => $_ ) for @channels; |
836 |
# seen RSS cache |
# seen RSS cache, so don't send out messages |
837 |
_log rss_fetch_all( $kernel ); |
_log rss_fetch_all( $kernel, 0 ); |
838 |
undef; |
undef; |
839 |
}, |
}, |
840 |
# irc_255 => sub { # server is done blabbing |
# irc_255 => sub { # server is done blabbing |