|
|
|
|
Всякое |
Программное определение статуса 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. |
спасбо за этот способ
спасбо за этот способ определения, поставлю и у себя на сайте
На каком хотя бы скажите?
На каком хотя бы скажите?
huerga.by (хуерга точка бай)
huerga.by (хуерга точка бай) где же еще
Сколько пробую, правильный
Сколько пробую, правильный статус пользователя еще ни разу не высветился.
Да я вот подумываю, а не
Да я вот подумываю, а не стоит ли в запрос картинки ввести случайный параметр. Кажется код требует именно этого дополнения. Кэширование никто не отменял. Даже для программ PHP
А что мешает вместо того,
А что мешает вместо того, чтобы проделывать такой долгий путь просто попросить у скайпа текст (http://mystatus.skype.com/direqtor.txt) или XML (http://mystatus.skype.com/direqtor.xml)?
К слову, для того, чтобы статус пользователя был отличным от "offline" необходимо включить в вашем клиенте SkypeWeb. Для этого в меню скайпа: "Инструменты" > "Настройки" > "Безопасность" и там чекбокс "Показывать мой сетевой статус в интернете".
Есть еще один несложный вариант: зайти на скайп и получить html-код для своего индикатора. Это можно сделать здесь: http://www.skype.com/intl/en/share/buttons/wizard.html
А как указать
А как указать http://mystatus.skype.com/direqtor.txt ник нейм?
Спасибо за инфу
Не знал про такие возможности от скайпа. Обязательно дополню эту заметку, а может и новую напишу. XML и TXT - это то, что доктор прописал. :)
А визард картинок со статусом
А визард картинок со статусом у скайпа не очень удачный код отдаёт. Мой лучше :) http://shaman.asiadata.ru/service/skype-status-code
Ой ли... :)
А как на счет проверки наличия на компьютере посетителя клиента Skype?
В указанном мной визарде см. js-файл - функционал внутри.
Кто его знает
Что-то когда я смотрел этот файл, решил не включать его в свой код. Но я еще раз просмотрю его функционал, может там появилось что-то ценное.