Можете ли вы получить свой статус Skype с помощью JSONP? - PullRequest
4 голосов
/ 16 июля 2010

Кто-нибудь знает URL-адрес для получения вашего статуса Skype с помощью JSONP?

Пока что я нашел только URL-адрес статуса XML (http://mystatus.skype.com/username.xml).

(Я пытаюсь запросить Skype, используя AJAX. Да, я мог бы использовать прокси-скрипт на стороне сервера, чтобы преодолеть междоменные ограничения, но прямой вызов был бы крут.)

Саймон.

Ответы [ 3 ]

6 голосов
/ 16 июля 2010

Ну, по-видимому, вы можете получить текстовую версию статуса, изменив расширение на .txt:

http://mystatus.skype.com/username.txt

Он вернется "Онлайн""или" Офлайн ".Что касается междоменного AJAX, вы можете сделать это только через сервер, и прямой вызов определенно запрещен.

4 голосов
/ 31 июля 2010

Вы можете изменить заголовок на «JSONP» вместо JSON. Это то, что вы хотите.

JSONP перехватывает междоменные выборки таким образом, чтобы работать без прокси-серверов, передавая данные в выборках. Это как самая хакерская полезная технология, которую я сейчас вспоминаю. :)

Я поносил Skype по этому поводу - проще всего было бы, чтобы их серверы имели официальный документированный интерфейс JSONP. Я надеюсь, что они сделают это.

А пока я решил проблему:

$enable_native   = true;
$valid_url_regex = '/^http:\/\/mystatus\.skype\.com\/myuserid.*/';

Это позволяет ему получать (через curl на сервере) информацию mystatus.skype.com/myuserid.num (или .txt).

  • Извлечение из JS с URL:
ba-simple-proxy.php?url=http%3A%2F%2Fmystatus.skype.com%2Fmyuserid.num&mode=native&full_status=1

Вот и все. Фууу ...:)

3 голосов
/ 28 сентября 2011

Также вы можете получить его, используя PHP

function getSkypeStatus($username) {
    $data = file_get_contents('http://mystatus.skype.com/' . urlencode($username) . '.xml');

    return strpos($data, '<presence xml:lang="en">Offline</presence>') ? 'Offline' : 'Online';
}

ИЛИ

function getSkypeStatus($username) {
    $data = file_get_contents('http://mystatus.skype.com/' . urlencode($username) . '.xml');
    preg_match('@<presence xml:lang="en">(.*?)</presence>@i', $data, $match);

    return isset($match[1]) ? $match[1] : 'Error retrieving status';
} 

Приветствия!

Благодаря Брэдграфельману из - http://www.phpbuilder.com/board/showthread.php?t=10361050

...