|
|
ICQ online status
Наверное, я сильно не в тему, но, тем не менее, надеюсь, что мне кто-нибудь поможет..
Вытащить удалённый файл по HTTP парсер не умеет, посему вызываем маленький перловый скрипт такого вот содержания с помощью ^exec[]#!/usr/bin/perl
print "Content-type: text/html\n\n";
use LWP::Simple;
my $uin="84619830";
my $url="http://wwp.icq.com/scripts/" .
"online.dll?icq=${uin}&img=2";
my $cachefile="temp/icqstatus.temp.gif";
my $messageonline="<font color=green><nobr>" .
"В онлайне ;-)</nobr></font>";
my $messageoffline="<font color=red><nobr>В" .
" оффлайне :-(</nobr></font>";
my $messageunknown="<font color=gray>" .
"<nobr>Неизвестно :-|</nobr></font>";
my $html = get $url;
open(CLEAR, ">$cachefile");
print CLEAR "Empty file.";
close(CLEAR);
if (defined $html){
open(CACHE, ">$cachefile") ||
die $messageunknown;
binmode(CACHE);
print CACHE $html;
close(CACHE)
}
my $size=(stat($cachefile))[7];
# Размер '$url' составляет: $size байт, а должно быть:
# 1035 байт, когда статус неизвестен (т.е. WebAware выключен)
# 653 байт, когда ICQ в онлайне
# 670 байт, когда ICQ в оффлайне
# 11 байт, когда не удалось связяться с www.icq.com
print "<p><a href=\"http://www.icq.com/\"><img";
print "src=\"http://www.icq.com/images/downloadanim.gif\"";
print "alt=\"\" valign=baseline width=\"32\" height=\"32\"";
print " border=\"0\"></a> <font size=+2><b>Состояние моей";
print " ICQ $uin:</b> ";
if ($size == "653"){
print $messageonline;
}
elsif ($size == "670"){
print $messageoffline;
}
else {
print $messageunknown;
}
print "</b></font>";
Скрипт делает чрезвычайно простую вещь - определяет, в онлайне ли я, хозяин сайта, основываясь на размере стандартной картинки-индикатора, и на этой основе выводит сообщение на странце (а можно и формочку нарисовать или ещё что).
Трабл в том, что icq.com теперь не выводит картинку, а осуществляет редирект на другой адрес, где и располагается искомый гифчик - и я не знаю, как выяснить свой online presence status скриптом.
Ау, откликнитесь те, кто сталкивался с проблемой выяснения состояния ICQ из перла или же, желательно, из Парсера. Так не хочется вставлять в страницы уродские картинки, предлагаемые на ICQ.com... Может быть, существуют и другие, без использования LWP / Wget'оподобных методов, способы определения состояния ICQ?
|