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);
10 @W3Search_engines = qw(AltaVista Dejanews Excite Gopher HotBot Infoseek
11 Lycos Magellan PLweb SFgate Simple Verity Google z);
12 $W3Search_regex = join '|', @W3Search_engines;
17 my ( $where, $what, $type ) = @_;
18 my $retval = "$where can't find \002$what\002";
21 my @matches = grep { lc($_) eq lc($where) ? $_ : undef } @W3Search_engines;
23 $where = shift @matches;
26 &::msg( $::who, "i don't know how to check '$where'" );
30 return unless &::loadPerlModule("WWW::Search");
32 eval { $Search = new WWW::Search( $where, agent_name => 'Mozilla/4.5' ); };
34 if ( !defined $Search ) {
35 &::msg( $::who, "$where is invalid search." );
39 my $Query = WWW::Search::escape_query($what);
40 $Search->native_query(
46 # search_parse_debug => 2,
49 $Search->http_proxy( $::param{'httpProxy'} ) if ( &::IsParam('httpProxy') );
51 #my $max = $Search->maximum_to_retrieve(10); # DOES NOT WORK.
53 my ( @results, $count, $r );
54 $retval = "$where says \002$what\002 is at ";
55 while ( $r = $Search->next_result() ) {
57 $retval .= ' or ' if ( $count > 0 );
59 last if ++$count >= $maxshow;
62 &::performStrictReply($retval);
67 # vim:ts=4:sw=4:expandtab:tw=80