polemon.org
 

crap.pl

crap.pl

  1: # crap.pl
  2: #
  3: # shit nobody cares about
  4: #
  5: # Szymon 'polemon' Bereziak (2008 - 2010)
  6: #
  7: # I WILL NOW KILL STUFF WITH FIRE!
  8: # This script is licensed untder ISC license
  9: #
 10:
 11: use strict;
 12: use vars qw($VERSION %IRSSI);
 13:
 14: use Irssi;
 15: use LWP;
 16: use XML::DOM;
 17: use Data::Dumper;
 18:
 19: $VERSION = "0.01";
 20:
 21: %IRSSI = (
 22:          author => "Szymon 'polemon' Bereziak",
 23:         contact => "polemon\@polemon.org",
 24:            name => "crap",
 25:     description => "crap nobody cares about",
 26:         license => "ISC",
 27:             url => "",
 28:         changed => "2008-12-12",
 29: );
 30:
 31: Irssi::command_bind('track', 'c_track');
 32: Irssi::command_bind('stats', 'c_stats');
 33: Irssi::signal_add_first('message public', 't_act');
 34:
 35: my $agent = LWP::UserAgent->new;
 36: $agent->agent("Multi-Crapper/9001");
 37:
 38: my $parser = XML::DOM::Parser->new;
 39:
 40: my $damper; # public command damper...
 41: my $semaphore = 1; # semaphore: 1 = open, 0 = closed
 42:
 43: sub c_track {
 44:     my ($data, $server, $witem) = @_;
 45:
 46:     my $doc;
 47:     my $req = HTTP::Request->new(GET => 'http://justbase.fm/include/misc.php?section=trackupdate');
 48:     my $res = $agent->request($req);
 49:
 50:     my $line;
 51:
 52:     if($res->is_success) {
 53:         $doc = $parser->parse($res->content);
 54:         $line = $doc->getElementsByTagName("track")->item(0)->getFirstChild->getNodeValue;
 55:     }
 56:     else {
 57:         $line = "(track info unavailable)";
 58:     }
 59:
 60:     if($witem && (($witem->{type} eq "CHANNEL" && $server->{'address'} eq "justbase.fm") || $witem->{type} eq "QUERY")) {
 61:         $witem->command("MSG " . $witem->{name} . " [TRACK] " . $line);
 62:     }
 63:     else {
 64:         Irssi::print("[TRACK] " . $line);
 65:     }
 66: }
 67:
 68: sub c_stats {
 69:     my ($data, $server, $witem) = @_;
 70:
 71:     my $doc;
 72:     my $req = HTTP::Request->new(GET => 'http://justbase.fm/stats.xml');
 73:     my $res = $agent->request($req);
 74:
 75:     my $line;
 76:
 77:     if($res->is_success) {
 78:         $doc = $parser->parse($res->content);
 79:         my $mps = $doc->getElementsByTagName("mountpoint");
 80:
 81:         $line = "[STATS]";
 82:
 83:         my $total = 0;
 84:
 85:         for(my $i = 0; $i < $mps->getLength; $i++) {
 86:             $line .= " " . $mps->item($i)->getAttribute("item") . ": " . $mps->item($i)->getFirstChild->getFirstChild->getNodeValue . ";";
 87:             $total += $mps->item($i)->getFirstChild->getFirstChild->getNodeValue . ";";
 88:         }
 89:     $line .= " Total: " . $total;
 90:     }
 91:     else {
 92:         $line = "(statistics unavailable)";
 93:     }
 94:
 95:     if($witem && (($witem->{type} eq "CHANNEL" && $server->{'address'} eq "justbase.fm") || $witem->{type} eq "QUERY")) {
 96:         $witem->command("MSG " . $witem->{name} . " " . $line);
 97:     }
 98:     else {
 99:         Irssi::print($line);
100:     }
101: }
102:
103: sub t_act {
104:     if($semaphore) {
105:         my ($server, $msg, $nick, $address, $target) = @_;
106:         my $witem = $server->window_item_find($target);
107:
108:         if($msg =~ /^!track/i) {
109:             $semaphore = 0;
110:             $damper = Irssi::timeout_add_once(5 * 1000, 'open_sema', '');
111:
112:             c_track($msg, $server, $witem);
113:         }
114:         elsif($msg =~ /^!stats/i) {
115:             $semaphore = 0;
116:             $damper = Irssi::timeout_add_once(5 * 1000, 'open_sema', '');
117:
118:             c_stats($data, $server, $witem);
119:         }
120:     }
121: }
122:
123: sub open_sema {
124:     Irssi::timeout_remove($damper);
125:     $semaphore = 1;
126: }
 
crap.pl.txt · Last modified: 2010/10/21 00:48 by polemon
 
RSS • 2012 © --polemon Powered by: