html/bgta.pl


   1 #!/usr/local/bin/perl
   2 
   3 # BgTA SCRIPT
   4 
   5 use strict;
   6 use vars qw($VERSION %IRSSI %FEATURES);
   7 
   8 use Irssi;
   9 
  10 # Define Script Version
  11 $VERSION = '0.0.1';
  12 %IRSSI = (
  13 	authors		=> '[^BgTA^]',
  14 	contact		=> 'raul@bgta.net',
  15 	name		=> 'BgTA Script',
  16 	description	=> 'Byte\'s Gallery of the TAilor Script',
  17 	license		=> 'Public Domain',
  18 );
  19 
  20 # /bgversion command
  21 
  22 sub cmd_bgversion {
  23 	my ($data, $server, $witem) = @_;
  24 
  25 	print("\cC4BgTA Script v. ".$VERSION);
  26 	foreach my $key (sort keys %IRSSI) {
  27 		print("\cC4$key: \cC0".$IRSSI{$key}) unless $key =~ /name/i;
  28 	}
  29 	return 1;
  30 }
  31 
  32 Irssi::command_bind bgversion => \&cmd_bgversion;
  33 
  34 # /bghelp command
  35 $FEATURES{'help'} = "/bghelp \c0 List the BgTA Script FEATURES";
  36 
  37 sub cmd_bghelp {
  38 	my ($data, $server, $witem) = @_;
  39 
  40 	print("\cC4BgTA Script v. ".$VERSION);
  41 	foreach my $key (sort keys %FEATURES) {
  42 		print("\cC4$key: \cC0".$FEATURES{$key}) unless $key =~ /name/i;
  43 	}
  44 	return 1;
  45 }
  46 
  47 Irssi::command_bind bghelp => \&cmd_bghelp;
  48 # GOOGLE
  49 $FEATURES{'google'} = "/bggoogle \cC7search_string \t \cC5Search one result in Google.com";
  50 
  51 sub cmd_bggoogle {
  52 	my ($data, $server, $witem) = @_;
  53 
  54 	return unless $witem;
  55 
  56 
  57 	use Net::Google;
  58 	
  59 	# Put here the Google Key. See Google->Tools & Services
  60 	use constant LOCAL_GOOGLE_KEY => "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
  61 
  62 	$witem->command("me Google Searching [$data]...");
  63 	my $google = Net::Google->new(key=>LOCAL_GOOGLE_KEY);
  64 
  65 	my $search = $google->search(max_results => 100);
  66 
  67 	 $search->query($data);
  68 
  69 	 my @tresults = @{$search->results()};
  70 
  71 	if(!defined($tresults[0])) {
  72 		$witem->command("me NO RESULTS");
  73 		return;
  74 	}
  75 	my $title = $tresults[0]->title();
  76 	$title =~ s/<[^<]*>//ig;
  77 	$witem->command("me ".$title."\cC2: ".$tresults[0]->URL());
  78 	return;
  79 }
  80 
  81 Irssi::command_bind bggoogle => \&cmd_bggoogle;
  82 
  83 # PHP Documentation
  84 $FEATURES{'php'} = "/bgphp \cC7function_name \t \cC5Search a PHP Function URL and Definition";
  85 $FEATURES{'phpwb'} = "/bgphpwb \cC7function_name \t \cC5Search a PHP Function URL and Definition AND Kick BAN With the URL";
  86 sub cmd_bgphp {
  87 
  88 	my ($data, $server, $witem) = @_;
  89 
  90 	return unless $witem;
  91 
  92 
  93 	use LWP;
  94 
  95 	my $Navigator = new LWP::UserAgent({
  96         "agent" => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)",
  97         "timeout" => "180", 
  98         });
  99 
 100 	$data =~ s/\_/\-/ig;
 101 
 102 	my $Page = $Navigator->get('http://www.php.net/manual/es/function.'.$data.'.php');
 103 	
 104 	my $content = $Page->content if $Page->is_success;
 105 	if($Page->is_success && $content =~ /([^<]*)<B\nCLASS=\"methodname\"\n>([^<]*)<\/B\n> ([^<]*)/i) {
 106 		$witem->command("me PHP Function $data:");
 107 		$witem->command("me Location: \cC5 http://www.php.net/manual/es/function.".$data.'.php');
 108 		if($content =~ /<td><a href=\"ref.([^\.]*).php\">/i) {
 109 			$witem->command("me Reference: \cC6 http://www.php.net/manual/es/ref.$1.php");
 110 		}
 111 		if($content =~ />([^<]*)<B\nCLASS=\"methodname\"\n>([^<]*)<\/B\n> ([^<]*)/i) {
 112 			$witem->command("me $1\cC0$2\cC $3");
 113 		}
 114 		if($content =~ /--\&nbsp;([A-Za-z0-9\ áéíóú\n]+)/i) {
 115 			my $sal = $1;
 116 			$sal =~ s/\ \ /\ /gi;
 117 			$sal =~ s/\n/\ /gi;
 118 			chomp($sal);
 119 			$witem->command("me Description: $sal");
 120 		}
 121 	} else {
 122 		$witem->command("me \cC5PHP Function $data: No Results.");
 123 	}
 124 
 125 	return;
 126 
 127 }
 128 
 129 sub cmd_bgphpwb {
 130 
 131 	my ($data, $server, $witem) = @_;
 132 
 133 	return unless $witem;
 134 
 135 
 136 	use LWP;
 137 
 138 	my $Navigator = new LWP::UserAgent({
 139         "agent" => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)",
 140         "timeout" => "180", 
 141         });
 142 	
 143 	$data =~ /^([^\ ]*) (.*)$/i;
 144 	my $nick = $1;
 145 	$data = $2;
 146 	$data =~ s/\_/\-/ig;
 147 
 148 	my $Page = $Navigator->get('http://www.php.net/manual/es/function.'.$data.'.php');
 149 	
 150 	my $content = $Page->content if $Page->is_success;
 151 	if($Page->is_success && $content =~ /([^<]*)<B\nCLASS=\"methodname\"\n>([^<]*)<\/B\n> ([^<]*)/i) {
 152 		$witem->command("kickban $nick Mira el Jodido Manual: \cC5 http://www.php.net/manual/es/function.".$data.'.php');
 153 	} 
 154 
 155 	return;
 156 
 157 }
 158 sub bgphpevent {
 159 	my ($server, $data, $nick, $address) = @_;
 160 	my ($target, $text) = $data =~ /^(\S*)\s:(.*)/;
 161 
 162 	#if($text =~ /bgphp:(.*)$/) {
 163 	#}	
 164 
 165 }
 166 Irssi::signal_add("event notice", "bgphpevent");
 167 Irssi::command_bind bgphp => \&cmd_bgphp;
 168 Irssi::command_bind bgphpwb => \&cmd_bgphpwb;
 169 
 170 
 171 #  WEB SEARCH TITLE
 172 $FEATURES{'wwwd'} = "/bgwwwd \cC7http://some.web.com/ \t \cC5Look for title and Description of Web";
 173 sub cmd_bgwwwd {
 174 
 175 	my ($data, $server, $witem) = @_;
 176 
 177 	return unless $witem;
 178 
 179 
 180 	use LWP;
 181 
 182 	my $Navigator = new LWP::UserAgent({
 183         "agent" => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)",
 184         "timeout" => "180", 
 185         });
 186 
 187 	my $Page = $Navigator->get($data);
 188 
 189 	if($Page->is_success) {
 190 		my $content = $Page->content;
 191 		my $title = "No Title";
 192 		my $description = "No Description Page";
 193 
 194 		if($content =~ /TITLE>([^<]*)<\/TITLE>/i) {
 195 			$title = $1;
 196 		}
 197 
 198 		if($content =~ /META NAME=\"DESCRIPTION\" CONTENT=\"([^\"]*)\"/i) {
 199 			$description = $1;
 200 		}
 201 		$witem->command("me [ $data ]: ".$title);
 202 		$witem->command("me \cC5 $description");
 203 	} else {
 204 		$witem->command("me [ $data ] Page Not Found");
 205 	}
 206 }
 207 
 208 Irssi::command_bind bgwwwd => \&cmd_bgwwwd;
 209 
 210 
 211 # Perl Documentation
 212 $FEATURES{'perl'} = "/bgperl \cC7function_name \t \cC5Search a Perl Function URL and Definition";
 213 sub cmd_bgperl {
 214 
 215 	my ($data, $server, $witem) = @_;
 216 
 217 	return unless $witem;
 218 
 219 
 220 	use LWP;
 221 
 222 	my $Navigator = new LWP::UserAgent({
 223         "agent" => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)",
 224         "timeout" => "180", 
 225         });
 226 
 227 	my $Page = $Navigator->get('http://www.perldoc.com/perl5.8.0/pod/func/'.$data.'.html');
 228 	
 229 	my $content = $Page->content if $Page->is_success;
 230 	if($Page->is_success && $content =~ /<span class=\"docTitle\">([^<]*)<\/span>/i) {
 231 		$witem->command("me Perl Function $data:");
 232 		$witem->command("me Location: \cC5 http://www.perldoc.com/perl5.8.0/pod/func/".$data.'.html');
 233 		if($content =~ /<DL><DT><A NAME=\"[^\"]*\">(.*)\n/i) {
 234 			$witem->command("me \cC0$1");
 235 		}
 236 		if($content =~ /<DT><A NAME=\"$data\">$data\n\n<\/A><\/DT>\n<DD>\n([^\n]*)/i) {
 237 			$witem->command("me $1");
 238 		}
 239 	} else {
 240 		$witem->command("me \cC5Perl Function $data: No Results.");
 241 	}
 242 
 243 	return;
 244 
 245 }
 246 Irssi::command_bind bgperl => \&cmd_bgperl;
 247 
 248 # Debian Search Packages
 249 $FEATURES{'debian'} = "/bgdebian \cC7package name | \cC5Search a package in a Debian stable distribution";
 250 sub cmd_bgdebian {
 251 
 252 	my ($data, $server, $witem) = @_;
 253 
 254 	return unless $witem;
 255 
 256 
 257 	use LWP;
 258 
 259 	my $Navigator = new LWP::UserAgent({
 260         "agent" => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)",
 261         "timeout" => "180", 
 262         });
 263 
 264 	$data =~ s/\ /\+/;
 265 	my $Page = $Navigator->get('http://packages.debian.org/cgi-bin/search_packages.pl?keywords='.$data.'&searchon=names&subword=1&version=stable&release=all');
 266 	
 267 	my $content = $Page->content if $Page->is_success;
 268 	if($Page->is_success && $content =~ /<TD><B><A HREF=\"http:\/\/packages\.debian\.org\/stable\/misc\/([^\.]*).html\"> $data/i) {
 269 		$witem->command("me Debian \cC2$data\cC package:");
 270 		$witem->command("me Location: \cC5 http://packages.debian.org/stable/misc/$1.html");
 271 		if($content =~ /<TD COLSPAN=2>([^<]*)</i) {
 272 			$witem->command("me Description: $1");
 273 		}
 274 	} else {
 275 		$witem->command("me \cC5Debian $data package: No Results.");
 276 	}
 277 
 278 	return;
 279 
 280 }
 281 Irssi::command_bind bgdebian => \&cmd_bgdebian;
 282 1;
 283 
 284