*** empty log message ***
[spider.git] / cmd / show / contest.pl
1 # contest.pl - contest calendar from www.sk3bg.se/contest
2 # used with 1 argument: sh/contest <yearandmonth>
3 # e g sh/contest 2002sep
4 # Tommy Johansson (SM3OSM) 2002-07-23
5 # New version using Net::Telnet  2003-03-09
6 #
7 # $Id$
8 #
9
10 my ($self, $line) = @_;
11
12 return (1, "usage: sh/contest  <year_and_month>, e g sh/contest 2002sep ") unless $line;
13
14 my @out;
15
16 my $mon;;
17
18 # trying to make the syntax abit more user friendly...
19 # and yes, I have been here and it *is* all my fault (dirk)
20 $line = lc $line;
21 my ($m,$y) = $line =~ /^([a-z]{3})\w*\s*(\d+)/;
22 ($y,$m) = $line =~ /^(\d+)\s*([a-z]{3})/ unless $y && $m;
23 $y += 2000 if $y <= 50;
24 $y += 1900 if $y > 50 && $y <= 99;
25 $m = 'oct' if $m eq 'okt';
26 $m = 'may' if $m eq 'mai' || $m eq 'maj';
27 $mon = "$y$m";
28
29 dbg($mon);
30
31 my $filename = "c" . $mon . ".txt";
32 my $host = 'www.sk3bg.se';
33 my $port = 80;
34 my $url = "http://www.sk3bg.se/contest/text/$filename";
35
36 my $t = new Net::Telnet (Telnetmode => 0);
37 eval {
38     $t->open(Host => $host, Port => $port, Timeout => 15);
39     };
40
41 if (!$t || $@) {
42     push @out, $self->msg('e18','sk3bg.se');
43 } else {
44     my $s = "GET http://www.sk3bg.se/contest/text/$filename";
45     $t->print($s);
46     my $notfound = $t->getline(Timeout => 10);
47     if ($notfound =~ /404 Object Not Found/) {
48             return (1, "there is no contest info for $mon")
49         } else {
50             push @out, $notfound;
51         }
52     while (!$t->eof) {
53         eval { 
54             push @out, $t->getline(Timeout => 10);
55         };
56         if ($@) {
57             push @out, $self->msg('e18', 'sk3bg.se');
58             last;    
59         }
60     }
61 }
62 $t->close;
63
64 return (1, @out);