1 # WWWSearch backend, with queries updating the is-db (optionally)
2 # Uses WWW::Search::Google and WWW::Search
3 # originally Google.pl, drastically altered.
8 use vars qw(@W3Search_engines $W3Search_regex);
9 @W3Search_engines = qw(AltaVista Dejanews Excite Gopher HotBot Infoseek
10 Lycos Magellan PLweb SFgate Simple Verity Google);
11 $W3Search_regex = join '|', @W3Search_engines;
16 my ($where, $what, $type) = @_;
17 my $retval = "$where can't find \002$what\002";
20 my @matches = grep { lc($_) eq lc($where) ? $_ : undef } @W3Search_engines;
22 $where = shift @matches;
24 &::msg($::who, "i don't know how to check '$where'");
28 return unless &::loadPerlModule("WWW::Search");
31 if ($where eq 'Google') {
32 # key is your Google API key.
33 # Get it from http://api.google.com/createkey
34 $Search = new WWW::Search('Google',key => '')
37 $Search = new WWW::Search($where);
39 if (!defined $Search) {
40 &::msg($::who, "$where is invalid search.");
44 my $Query = WWW::Search::escape_query($what);
45 $Search->native_query($Query,{ num => 10,
47 search_parse_debug => 2,
50 $Search->http_proxy($::param{'httpProxy'}) if (&::IsParam("httpProxy"));
51 #my $max = $Search->maximum_to_retrieve(10); # DOES NOT WORK.
53 my (@results, $count, $r);
55 $retval = "$where says \002$what\002 is at ";
56 while ($r = $Search->next_result()) {
58 $retval .= ' or ' if ($count > 0);
60 last if ++$count >= $maxshow;
63 $retval = "$where was unable to find any results for \002$what\002" unless $count > 0;
65 &::performStrictReply($retval);