- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
#!/usr/bin/perl
use strict;
# немного настроек
my $url = "http://govnokod.ru/comments";
my $min_delay = 2*60;
my $max_delay = 30*60;
my $delay_slowdown = 2;
# получение идентификатора последнего коммента
sub get_last_comment_info {
print STDERR "Checking for the new comments...\n";
my @content = `curl "$url" 2>/dev/null`;
my $s = join(' ', @content);
if ($s =~ /<a href=".*?\/(\d+)#comment(\d+)"/) {
print STDERR "Last comment id was $2 in the thread $1\n";
return ("thread" => $1, "comment" => $2);
}
print "Can't get new comments\n";
return ();
}
# отправка сообщения
sub notify {
my ($id) = @_;
print STDERR "Sending notify about $id\n";
`notify-send "Кто-то наложил в $id"`;
}
my $last_id = undef;
my $delay = $min_delay;
while (1) {
# смотрим есть ли новый коммент
if (my %r = get_last_comment_info()) {
if (defined($last_id) && $r{"comment"} > $last_id) {
$delay = $min_delay;
notify($r{"thread"});
}
$last_id = $r{"comment"};
}
# спим
print STDERR "Sleeping for $delay seconds...\n";
sleep($delay);
# пересчитываем задержку
$delay = $delay * $delay_slowdown;
$delay = $max_delay if ($delay > $max_delay);
}