|
|
|
|
|
|
Всякое |
Программное определение статуса Skype через сервисы skype.com
Посмотрим, что отдает сервер при запросе изображения и разном статусе для самого маленького из предлагаемых изображений (smallicon). При статусе онлайн запрос адреса http://mystatus.skype.com/smallicon/direqtor дает следующие заголовки: HTTP/1.1 200 OK Date: Mon, 14 Sep 2009 06:05:21 GMT Server: Apache Expires: Mon, 14 Sep 2009 06:11:21 GMT Last-Modified: Thu, 01 May 2008 00:00:00 GMT Content-Length: 428 Connection: close Content-Type: image/png При запросе этого адреса с другим статусом пользователя, отдаваемые заголовки не изменяются, за исключением поля Content-Length. Изображения немного отличаются размером. Тестирование позволило собрать следующую информацию: Статус «Онлайн» В случае неправильного имени пользователя возвращается ошибка 404. Воспользуемся этой информацией, чтобы написать функцию, определяющую статус пользователя Skype. function skype_get_status($skype) { // Задаем статус на случай отсутствия соединения со skype.com. $status = "Сервис недоступен"; $size = 0; // Соединяемся с сервисом картинок статусов. if($fp = @fsockopen ("mystatus.skype.com", 80, &$errno, &$errstr, 30)) { // Отсылаем HEAD-запрос. fputs($fp, "HEAD /smallicon/$skype HTTP/1.0\n\n"); $out = ''; while(!feof($fp)) { $out .= $line = fgets($fp, 1024); // Если сервер отдает загодовок размера файла, то парсим его. if(eregi('^Content-Length: ([0-9][0-9][0-9])', $line, $regs)) { switch($regs[1]) { case 428: $status = "Онлайн"; break; case 376: $status = "Оффлайн"; break; case 502: $status = "Позвони мне!"; break; case 546: $status = "Отсутствую"; break; case 490: $status = "Недоступен"; break; case 500: $status = "Не беспокоить!"; break; default: $status = "Статус неизвестен"; } } } fclose($fp); // Если размер файла не получен, например, ошибка 404, то такого пользователя нет. if($status == "Сервис недоступен") $status = "Пользователь неизвестен"; } return $status; } Указанный алгоритм реализован в сервисе проверки статуса Skype на моём сайте. |
|
Direqtor Home Page by ASIADATA. |
|
Отправить комментарий