User:HighInBC/MCP/RTCWatcher

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;