http://perl.lt/temp :: /Kodas/temp.pl - irssi skriptas pasakantis oro temperatūrą Kaune./


#######################################################################
# temp.pl
# - Temperatura Kaune -
# Author: Saulius <saulius@tornado.ktu.lt>
#######################################################################

use strict;
use Irssi;
use Socket;
use vars qw($VERSION %IRSSI);
$VERSION = '1.00';
%IRSSI   = (
    author      => 'Saulius',
    contact     => 'saulius@tornado.ktu.lt',
    name        => 'temperatura',
    description => 'Temperatura kaune !temp',
    license     => 'Free',
    changed     => '2003-11-07',
);

# kiek sekundziu ignoruoti temp. request'a
my $delay  = 25;
my %floodi = ();

# kanalams: #16barakas, #if-2/14

sub httpget {
    my $ip = ( gethostbyname( $_[0] ) )[4];
    socket( S, 2, 1, 6 );
    bind( S, sockaddr_in( 0, INADDR_ANY ) );
    connect( S, sockaddr_in( 80, $ip ) );
    select(S);
    $| = 1;
    select(STDOUT);
    print S "GET $_[1] HTTP/1.0\n\n";
    my @request = <S>;
    close(S);
    return $request[6];    # reikia tik 6 eilutes
}

sub msg_public {
    my ( $server, $msg, $nick, $address, $target ) = @_;
    if (   ( ( $target eq "#if-2/14" ) || ( $target eq "#16barakas" ) )
        && ( $msg =~ /^\!temp$/ ) )
    {

        # test flood:
        if ( defined $floodi{$target} ) {
            if   ( time - $floodi{$target} < $delay ) { return }
            else                                      { undef $floodi{$target} }
        }

        # add ignore:
        $floodi{$target} = time;

        my $query = httpget( "195.14.162.13", "/cgi-bin/c.cgi?c=t&ver=1.03" );
        if ( $query =~ /Temperature\:/ ) {
            $query = ( split( /:/, $query ) )[1];
            chop($query);

            # print temp:
            $server->command(
                "MSG $target \x037,5\x02temp. kaune:\x031,15 $query \xB0C");
        }

    }
}

sub msg_own_public {
    my ( $server, $msg, $target ) = @_;
    msg_public( $server, $msg, $server->{nick}, 0, $target );
}

# events:
Irssi::signal_add( 'message public',     'msg_public' );
Irssi::signal_add( 'message own_public', 'msg_own_public' );


2005.04.11 - 2012.05.21 © algirdas@perl.lt