1#!/usr/local/bin/perl
2
3# BgTA SCRIPT
4
5use strict;
6use vars qw($VERSION %IRSSI %FEATURES);
7
8use 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
22sub 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
32Irssi::command_bind bgversion => \&cmd_bgversion;
33
34# /bghelp command
35$FEATURES{'help'} = "/bghelp \c0 List the BgTA Script FEATURES";
36
37sub 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
47Irssi::command_bind bghelp => \&cmd_bghelp;
48# GOOGLE
49$FEATURES{'google'} = "/bggoogle \cC7search_string \t \cC5Search one result in Google.com";
50
51sub 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
81Irssi::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";
86sub 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
129sub 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}
158sub bgphpevent {
159	my ($server, $data, $nick, $address) = @_;
160	my ($target, $text) = $data =~ /^(\S*)\s:(.*)/;
161
162	#if($text =~ /bgphp:(.*)$/) {
163	#}
164
165}
166Irssi::signal_add("event notice", "bgphpevent");
167Irssi::command_bind bgphp => \&cmd_bgphp;
168Irssi::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";
173sub 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
208Irssi::command_bind bgwwwd => \&cmd_bgwwwd;
209
210
211# Perl Documentation
212$FEATURES{'perl'} = "/bgperl \cC7function_name \t \cC5Search a Perl Function URL and Definition";
213sub 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}
246Irssi::command_bind bgperl => \&cmd_bgperl;
247
248# Debian Search Packages
249$FEATURES{'debian'} = "/bgdebian \cC7package name | \cC5Search a package in a Debian stable distribution";
250sub 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}
281Irssi::command_bind bgdebian => \&cmd_bgdebian;
2821;
283
284
285