Pull to refresh

Comments 34

С ICQ когда эксперементировал, то как ни бился, статусы редко когда адекватно отображались. Стал парсить страницу профиля — icq и на это стало палки в колёса вставлять. Оставил эту идею.
Интересно, думаю кому нибудь пригодится. А статусы в соц. сетях? :)
Я знаю что есть API, просто можно было бы собрать все в единую библиотеку.
UFO just landed and posted this here
Вот теперь пусть автор топика организует весь этот код в отдельный класс и выложит его в комментариях, мне кажется будет много полезней, нежели сам топик.
И все же, такое-себе API — интересная идея. Только вряд ли мне понадобится что-то подобное:

} catch (Exception $e){}
Вот теперь пусть автор этого комментария организует весь этот код в отдельный класс и выложит его в комментариях, мне кажется будет много полезней, нежели сам комментарий.
Вот вам и «организует». Наминусовалина.
Спасибо, чуть изменил и добавил в пост.
статус ICQ периодически ОЧЕНЬ сильно увеличивает время загрузки страницы…
В моём случае задержка была в основном из-за скайпа. По это причине и убрал все функции определения статусов из кода страницы.
По крону запускаете апдейт чтоль? Или типа того?
Совершенно верно, прописал выполнение каждые пять минут.
Можно же ajax-ом статусы дергать со старницы
Тоже с этим сталкивался.

Поэтому стал кешировать статусы раз в 3 минуты (мне этого с головой хватало) по крону.
Загружайте асинхронно.
UFO just landed and posted this here
Я так думаю, если человеку интересно узнать текущий статус, то он в любом случае обновит страницу. Это уже на подсознании.
А если очень интересно, то он посмотрит статус в самом клиенте (icq, skype, ...) :)
И чем же определение картинки по хешу принципиально лучше, чем по размеру? :D
Первоначально на просторах интернета я не нашёл простой функции определения размера файла на удалённом сервере, всегда попадались сложные + уверения, что так просто это невозможно. И как-то успокоился, оставив способ с хэшем. Но хорошо, что Вы задали вопрос, опять начал искать и нашёл способ через strlen.

try {
    $a = strlen(file_get_contents("http://status.mail.ru/?АДРЕС_ПОЧТЫ"));
    switch($a) {
        case '349': $mrastatus = 'Online'; break;
        case '568': $mrastatus = 'Away'; break;
        case '570': $mrastatus = 'Offline'; break;
        default: $mrastatus = 'N/A'; break;
    }
} catch (Exception $e){}
Не понял фишку про 5 минут.

Зачем зависимость от крона, разве нельзя определять статус на момент загрузки страницы?
Вроде можно.
Можно конечно. Но если функции определения статусов будут перед тем местом, где их нужно вывести, то страница будет притормаживать, пока идут запросы. Если поместить функции вниз страницы, чтобы они не мешали загрузке, то тогда не получится вывести статусы, т.к. переменные будут запрашиваться до того, как они они определятся.

Я понимаю, что есть возможность реализовать этот вариант оптимальным способом, но вряд ли он будет проще и удобнее. Временной интервал погоды не делает, 3-5 минут вполне подходящие значения. Вряд ли Вы сразу после захода в сеть получите много сообщений. Обычно сначала читаешь оффлайновые лички. Как раз нескольких минут хватит. Вопрос предпочтений конечно.
Скайп свои картинки статуса на выбор предоставляет(там ссылка на конфигуратор кнопок еще есть). У google talk пока еще работает даже чат встроить можно и тоже показывает статус. Да и думаю у многих других сервисов есть подобные странички.
Про Google Talk я имел ввиду это, а «пока еще работает», к тому что скоро этот функционал уйдет в небытие. Вроде в 2013.
Да и думаю у многих других сервисов есть подобные странички.

Всё верно. В тексте упоминается, что есть официальные сервисы. Статья призвана помочь сделать оригинальное представление статуса, не ограниченное несколькими заготовками.
UFO just landed and posted this here
Решил не резать сильно. Может кто-то захочет при неработающем сервисе показывать «N/A».
Два способа получения статуса ICQ номера
На счет Skype и javascript — напрямую получить данные от //mystatus.skype.com/ сейчас нельзя (из-за Access-Control-Allow-Origin), но есть такой способ:

// Sourse from: <https://gist.github.com/mattes/5253271>
var getSkypeStatus = function(user, callback) {
      if(!user) throw new Error('missing user');
      var query = 'select * from skype.user.status where user="' + user + '";';
      $.getJSON('//query.yahooapis.com/v1/public/yql?q=' + encodeURI(query + '&format=json&env=store://datatables.org/alltableswithkeys&callback=?'), 
      function(data){
        if(data.query.count > 0) {
          if(callback) return callback.call(null, data.query.results.result);
        } else {
          if(callback) return callback.call(null, false); 
        }
      });
    };

getSkypeStatus('trololo', function(status){
  // Offline (1), Online (2), Away (3), Do not disturb (3)
  console.log(status);
});
http://status.icq.com/online.gif?icq=ТУТ_ВАШ_UIN
кажется больше не работает!
Что делать?
Ответили из службы поддержки аськи:
На текущий момент такой функционал отсутствует.
Ваши пожелания будут переданы администрации проекта.
Спасибо за сотрудничество.
С уважением.
Служба поддержки пользователей ICQ
Sign up to leave a comment.

Articles