diff options
Diffstat (limited to 'scripts/bgta.pl')
| -rw-r--r-- | scripts/bgta.pl | 284 | 
1 files changed, 284 insertions, 0 deletions
| diff --git a/scripts/bgta.pl b/scripts/bgta.pl new file mode 100644 index 0000000..3b388e3 --- /dev/null +++ b/scripts/bgta.pl @@ -0,0 +1,284 @@ +#!/usr/local/bin/perl + +# BgTA SCRIPT + +use strict; +use vars qw($VERSION %IRSSI %FEATURES); + +use Irssi; + +# Define Script Version +$VERSION = '0.0.1'; +%IRSSI = ( +	authors		=> '[^BgTA^]', +	contact		=> 'raul@bgta.net', +	name		=> 'BgTA Script', +	description	=> 'Byte\'s Gallery of the TAilor Script', +	license		=> 'Public Domain', +); + +# /bgversion command + +sub cmd_bgversion { +	my ($data, $server, $witem) = @_; + +	print("\cC4BgTA Script v. ".$VERSION); +	foreach my $key (sort keys %IRSSI) { +		print("\cC4$key: \cC0".$IRSSI{$key}) unless $key =~ /name/i; +	} +	return 1; +} + +Irssi::command_bind bgversion => \&cmd_bgversion; + +# /bghelp command +$FEATURES{'help'} = "/bghelp \c0 List the BgTA Script FEATURES"; + +sub cmd_bghelp { +	my ($data, $server, $witem) = @_; + +	print("\cC4BgTA Script v. ".$VERSION); +	foreach my $key (sort keys %FEATURES) { +		print("\cC4$key: \cC0".$FEATURES{$key}) unless $key =~ /name/i; +	} +	return 1; +} + +Irssi::command_bind bghelp => \&cmd_bghelp; +# GOOGLE +$FEATURES{'google'} = "/bggoogle \cC7search_string \t \cC5Search one result in Google.com"; + +sub cmd_bggoogle { +	my ($data, $server, $witem) = @_; + +	return unless $witem; + + +	use Net::Google; +	 +	# Put here the Google Key. See Google->Tools & Services +	use constant LOCAL_GOOGLE_KEY => "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; + +	$witem->command("me Google Searching [$data]..."); +	my $google = Net::Google->new(key=>LOCAL_GOOGLE_KEY); + +	my $search = $google->search(max_results => 100); + +	 $search->query($data); + +	 my @tresults = @{$search->results()}; + +	if(!defined($tresults[0])) { +		$witem->command("me NO RESULTS"); +		return; +	} +	my $title = $tresults[0]->title(); +	$title =~ s/<[^<]*>//ig; +	$witem->command("me ".$title."\cC2: ".$tresults[0]->URL()); +	return; +} + +Irssi::command_bind bggoogle => \&cmd_bggoogle; + +# PHP Documentation +$FEATURES{'php'} = "/bgphp \cC7function_name \t \cC5Search a PHP Function URL and Definition"; +$FEATURES{'phpwb'} = "/bgphpwb \cC7function_name \t \cC5Search a PHP Function URL and Definition AND Kick BAN With the URL"; +sub cmd_bgphp { + +	my ($data, $server, $witem) = @_; + +	return unless $witem; + + +	use LWP; + +	my $Navigator = new LWP::UserAgent({ +        "agent" => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)", +        "timeout" => "180",  +        }); + +	$data =~ s/\_/\-/ig; + +	my $Page = $Navigator->get('http://www.php.net/manual/es/function.'.$data.'.php'); +	 +	my $content = $Page->content if $Page->is_success; +	if($Page->is_success && $content =~ /([^<]*)<B\nCLASS=\"methodname\"\n>([^<]*)<\/B\n> ([^<]*)/i) { +		$witem->command("me PHP Function $data:"); +		$witem->command("me Location: \cC5 http://www.php.net/manual/es/function.".$data.'.php'); +		if($content =~ /<td><a href=\"ref.([^\.]*).php\">/i) { +			$witem->command("me Reference: \cC6 http://www.php.net/manual/es/ref.$1.php"); +		} +		if($content =~ />([^<]*)<B\nCLASS=\"methodname\"\n>([^<]*)<\/B\n> ([^<]*)/i) { +			$witem->command("me $1\cC0$2\cC $3"); +		} +		if($content =~ /--\ ([A-Za-z0-9\ αινσϊ\n]+)/i) { +			my $sal = $1; +			$sal =~ s/\ \ /\ /gi; +			$sal =~ s/\n/\ /gi; +			chomp($sal); +			$witem->command("me Description: $sal"); +		} +	} else { +		$witem->command("me \cC5PHP Function $data: No Results."); +	} + +	return; + +} + +sub cmd_bgphpwb { + +	my ($data, $server, $witem) = @_; + +	return unless $witem; + + +	use LWP; + +	my $Navigator = new LWP::UserAgent({ +        "agent" => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)", +        "timeout" => "180",  +        }); +	 +	$data =~ /^([^\ ]*) (.*)$/i; +	my $nick = $1; +	$data = $2; +	$data =~ s/\_/\-/ig; + +	my $Page = $Navigator->get('http://www.php.net/manual/es/function.'.$data.'.php'); +	 +	my $content = $Page->content if $Page->is_success; +	if($Page->is_success && $content =~ /([^<]*)<B\nCLASS=\"methodname\"\n>([^<]*)<\/B\n> ([^<]*)/i) { +		$witem->command("kickban $nick Mira el Jodido Manual: \cC5 http://www.php.net/manual/es/function.".$data.'.php'); +	}  + +	return; + +} +sub bgphpevent { +	my ($server, $data, $nick, $address) = @_; +	my ($target, $text) = $data =~ /^(\S*)\s:(.*)/; + +	#if($text =~ /bgphp:(.*)$/) { +	#}	 + +} +Irssi::signal_add("event notice", "bgphpevent"); +Irssi::command_bind bgphp => \&cmd_bgphp; +Irssi::command_bind bgphpwb => \&cmd_bgphpwb; + + +#  WEB SEARCH TITLE +$FEATURES{'wwwd'} = "/bgwwwd \cC7http://some.web.com/ \t \cC5Look for title and Description of Web"; +sub cmd_bgwwwd { + +	my ($data, $server, $witem) = @_; + +	return unless $witem; + + +	use LWP; + +	my $Navigator = new LWP::UserAgent({ +        "agent" => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)", +        "timeout" => "180",  +        }); + +	my $Page = $Navigator->get($data); + +	if($Page->is_success) { +		my $content = $Page->content; +		my $title = "No Title"; +		my $description = "No Description Page"; + +		if($content =~ /TITLE>([^<]*)<\/TITLE>/i) { +			$title = $1; +		} + +		if($content =~ /META NAME=\"DESCRIPTION\" CONTENT=\"([^\"]*)\"/i) { +			$description = $1; +		} +		$witem->command("me [ $data ]: ".$title); +		$witem->command("me \cC5 $description"); +	} else { +		$witem->command("me [ $data ] Page Not Found"); +	} +} + +Irssi::command_bind bgwwwd => \&cmd_bgwwwd; + + +# Perl Documentation +$FEATURES{'perl'} = "/bgperl \cC7function_name \t \cC5Search a Perl Function URL and Definition"; +sub cmd_bgperl { + +	my ($data, $server, $witem) = @_; + +	return unless $witem; + + +	use LWP; + +	my $Navigator = new LWP::UserAgent({ +        "agent" => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)", +        "timeout" => "180",  +        }); + +	my $Page = $Navigator->get('http://www.perldoc.com/perl5.8.0/pod/func/'.$data.'.html'); +	 +	my $content = $Page->content if $Page->is_success; +	if($Page->is_success && $content =~ /<span class=\"docTitle\">([^<]*)<\/span>/i) { +		$witem->command("me Perl Function $data:"); +		$witem->command("me Location: \cC5 http://www.perldoc.com/perl5.8.0/pod/func/".$data.'.html'); +		if($content =~ /<DL><DT><A NAME=\"[^\"]*\">(.*)\n/i) { +			$witem->command("me \cC0$1"); +		} +		if($content =~ /<DT><A NAME=\"$data\">$data\n\n<\/A><\/DT>\n<DD>\n([^\n]*)/i) { +			$witem->command("me $1"); +		} +	} else { +		$witem->command("me \cC5Perl Function $data: No Results."); +	} + +	return; + +} +Irssi::command_bind bgperl => \&cmd_bgperl; + +# Debian Search Packages +$FEATURES{'debian'} = "/bgdebian \cC7package name | \cC5Search a package in a Debian stable distribution"; +sub cmd_bgdebian { + +	my ($data, $server, $witem) = @_; + +	return unless $witem; + + +	use LWP; + +	my $Navigator = new LWP::UserAgent({ +        "agent" => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)", +        "timeout" => "180",  +        }); + +	$data =~ s/\ /\+/; +	my $Page = $Navigator->get('http://packages.debian.org/cgi-bin/search_packages.pl?keywords='.$data.'&searchon=names&subword=1&version=stable&release=all'); +	 +	my $content = $Page->content if $Page->is_success; +	if($Page->is_success && $content =~ /<TD><B><A HREF=\"http:\/\/packages\.debian\.org\/stable\/misc\/([^\.]*).html\"> $data/i) { +		$witem->command("me Debian \cC2$data\cC package:"); +		$witem->command("me Location: \cC5 http://packages.debian.org/stable/misc/$1.html"); +		if($content =~ /<TD COLSPAN=2>([^<]*)</i) { +			$witem->command("me Description: $1"); +		} +	} else { +		$witem->command("me \cC5Debian $data package: No Results."); +	} + +	return; + +} +Irssi::command_bind bgdebian => \&cmd_bgdebian; +1; + + | 
