User:HighInBC/MCP/RTCWatcher
Appearance
< User:HighInBC | MCP
This is a plugin, not a stand alone program.
This program is licensed under the GFDL
package HBCPlugins::RTCWatcher; use strict; use Data::Dumper; use URI::Escape; our $self; sub new { shift; $self = shift; bless($self); &{$self->{shared}{add_job}}(\&contact_irc_plugin , 0); return $self; } sub contact_irc_plugin { $self->{IRCFeed} = $self->{shared}{$self->{params}{irc_label}} || die; my $esc = chr(0x03); my $url_pattern = $esc.'02(.*?)'.$esc; foreach my $user (@{${$self}{params}{users}}) { $self->{IRCFeed}->add_hook( { 'check' => sub { my $statement = shift; my $esc = chr(0x03); my $name_pattern = $esc.'03(.*?)'.$esc; if (($statement =~ m|$name_pattern|i) && ($1 eq $user)) { $statement =~ m|$url_pattern|i; return $1; } else { return 0; } }, 'callback' => sub { shift; my $url = shift; system(${$self}{params}{browser_path},$url); }, }); } foreach my $page (@{${$self}{params}{pages}}) { $self->{IRCFeed}->add_hook( { 'check' => sub { my $statement = shift; my $article_pattern = 'title=(.*?)&'; $statement =~ m|$article_pattern|i; my $article = uri_unescape($1); $article =~ s|_| |g; if ((lc($page) eq lc($article))) { $statement =~ m|$url_pattern|i; return $1; } else { return 0; } }, 'callback' => sub { shift; my $url = shift; system(${$self}{params}{browser_path},$url); }, }); } # warn Dumper(${$self}{params}); return; } 1;