diff options
Diffstat (limited to 'scripts/mygoogle.pl')
| -rw-r--r-- | scripts/mygoogle.pl | 114 | 
1 files changed, 114 insertions, 0 deletions
| diff --git a/scripts/mygoogle.pl b/scripts/mygoogle.pl new file mode 100644 index 0000000..b2d0cc1 --- /dev/null +++ b/scripts/mygoogle.pl @@ -0,0 +1,114 @@ +####################################################################### +# mygoogle.pl +# +# Author: Tim Van Wassenhove <timvw@users.sourceforge.net> +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +#    notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +#    notice, this list of conditions and the following disclaimer in the +#    documentation and/or other materials provided with the distribution. +# 3. The name of the author may not be used to endorse or promote products +#    derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +####################################################################### + +use strict; +use Irssi; +use LWP::UserAgent; +use vars qw($VERSION %IRSSI); + +$VERSION = '1.01'; +%IRSSI = ( +	authors     => 'Tim Van Wassenhove', +	contact     => 'timvw@users.sourceforge.net', +	name        => 'mygoogle', +  description => 'Query Google', +	license     => 'BSD', +	url         => 'http://home.mysth.be/~timvw', +	changed     => '13-03-04 01:35', +); + +# Perform the query and return the results +sub google_query { + +	my $query = shift; + +	my $ua = LWP::UserAgent->new; +	$ua->agent("irssi/0.1"); + +  # Request the page +	my $request = HTTP::Request->new(GET => "http://www.google.com/search?hl=en&q=$query"); +	my $result = $ua->request($request); +	my $content = $result->content; + +  # Parse the returned page +  my @lines = split("<br>",$content); +	my @results = (); +	push(@results,"Results for $query on Google:"); +	my $counter = 0; +	foreach(@lines) { +		if ($counter < 3 && $_ =~ /^\<font color=#008000\>(.*?)\s+(.*?)\s+\-\s+\<\/font\>(.*)$/) { +			push(@results,"http://$1"); +			++$counter; +		} +	} +	push(@results,"--"); + +	return @results; +} + +# Output the results +sub results_write { +	my ($server,$target,@lines) = @_; +	foreach(@lines) { +		$server->command("MSG $target $_"); +	} +} + +# Handle what others say in public +sub message_public { +	my ($server,$msg,$nick,$address,$target) = @_; +	if ($msg =~ /^\!google\s+(.+)$/) { +		my @lines = google_query($1); +		results_write($server,$target,@lines); +	} +} + +# Handle what we say in public +sub message_own_public { +	my ($server,$msg,$target) = @_; +	message_public($server,$msg,$server->{nick},0,$target); +} + +# Handle what others say in private +sub message_private { +	my ($server,$msg,$nick,$address) = @_; +	message_public($server,$msg,$nick,$address,$nick); +} + +# Handle what we say in private +sub message_own_private { +	my ($server,$msg,$target,$otarget) = @_; +	message_public($server,$msg,$server->{nick},0,$target); +} + +# Connect the signals with the functions +Irssi::signal_add('message public','message_public'); +Irssi::signal_add('message own_public','message_own_public'); +Irssi::signal_add('message private','message_private'); +Irssi::signal_add('message own_private','message_own_private');
\ No newline at end of file | 
