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 =~ /--\ ([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