20 декабря 2010 в 02:33

Статистика личных сообщений вконтакте v 4.0.2



Наверное, некоторые из вас уже читали (например, тут) о некотором чудо-скрипте, который позволяет «посчитать» ваше общение вконтакте. С тех пор прошло не очень мало времени, и мы (ortemij и я) успели выпустить новую, четвёртую, версию. Под катом я расскажу немного о своих впечатлениях от работы с vkontakte api и совсем чуть-чуть попиарюсь.

Vkontakte API


Каюсь, изначально мы API не использовали, а просто подглядели в исходниках раздела с личными сообщениями, как там происходит ajax-подгрузка новых страничек, и сделали по образу и подобию. Не буду вдаваться в подробности реализации, поскольку это всё-таки не блог о javascript, а просто перечислю минусы такого подхода:
  • Серьёзные ограничения: не более 20 сообщений в секунду;
  • Если пользователь будет в это время переписываться, то ограничения будут наложены и на это;
  • У некоторых пользователей вконтакте стабильно выдавал malformed ответы на ajax-запросы, начиная с какого-то конкретного сообщения;
  • Сложилось впечатление, что контроль за количеством обращений в секунду жёстко подглючивает;
  • Зависимость от языка, установленного у пользователя: чтобы найти в ответе дату, нужно знать определённую строчку, свою для каждого языка;
  • Отсутствие возможности считывать сообщения целиком, чтобы, например, посчитать статистику по размеру сообщений;
  • Так, вообще говоря, делать нельзя: в правилах написано. Но мы об этом узнали слишком поздно :)

Потому мы перешли на API. Честно сказать, он мне скорее понравился, чем нет. Вот его плюсы:
  • Низкий порог вхождения. Чтобы разобраться, что к чему, мне потребовалось всего около пятнадцати минут. Действительно приятно работать с интуитивно-понятным API.
  • Богатые возможности. Большинство фич, которые просят пользователи (или мы хотим реализовать сами), реализуемы с помощью API, будь то «хочу сообщения только за последние 9000 секунд», «только от друзей» или «хочу (не)учитывать полный текст сообщений»
Но есть, конечно, и минусы, в основном в организационных моментах:
  • Нелогичные ограничения на вызов разных методов для разных типов приложений
  • Нигде не написаны ограничения на количество вызовов каких-либо методов в секунду. Приходится определять эмпирически. Насколько я понял, любой метод нельзя вызывать чаще, чем раз в секунду. Это, с моей точки зрения, глупо, так как запросы «получить целиком 100 сообщений» и «получить имена и фамилии по следующим id» загружают сервер совершенно по-разному

На правах рекламы


Собственно, что умеет наш чудо-скрипт:
  • Учёт количества входящих и исходящих сообщений
  • (опционально) Учёт размеров входящих и исходящих сообщений
  • (опционально) Учёт только тех сообщений, которые написали люди, находившиеся в тот момент(!) в друзьях
  • Экспорт в заметку
  • Обработка до 100 сообщений в секунду

Наши ближайшие планы:
  • Возможность не учитывать сообщения из чата
  • Возможность построить красивый график общего количества(или размера) сообщений от времени
  • Возможность построить облако часто используемых слов(как для всех людей, так и отдельно по каждому)


Немного статистики группы о статистике


Мы до сих пор немного офигеваем от дикого роста популярности нашего скрипта, и не очень знаем, что с ней делать:

Посмотреть остальную статистику можно тут.

Наши контакты


Официальная группа: vkontakte-stats
Проект на google code: vkontakte-stats
Почтовый ящик: vkontakte.stats@gmail.com
Skype: vkontakte.stats

Всем желаем разнообразных благ! Ждём от вас классных идей, злостной критики и много шуток!
+31
76601
36
gvsmirnov 52,3

Комментарии (36)

+2
Dellirium, #
Помню, когда я ещё учился в школе, мне очень нравилось смотреть на всякие статистики по сообщениям у меня в ICQ, рассказывать про это друзьям и конечно же, мериться ими. А сейчас — не понимаю, зачем? Или я вырос из ЦА?
+7
metrofun, #
Это вы так рекламодателей для своей группы ищите? Потому, что никакой смысловой нагрузки статья не несёт.
–1
kradzhyan, #
Метрофан, дорогой, смысл этой статьи в том, что я прочитал ее, а потом узнал с кем сколько я общаюсь в контакте. Очень полезная штука.
НЛО прилетело и опубликовало эту надпись здесь
+10
kradzhyan, #
а представь один парень (но не я), посмотрит эту статистику и поймет, что за три года он очень много с одной девочкой общается. Позвонит ей и скажет, что мол Люся, ты хоть в курсе, что ты мне 465378458 символов написала? Так что давай ка мы поженимся.

а если серьезно, статистика такая вещь, что либо она безразлична, либо очень полезна/интересна, но никогда не вредна.
+1
ZolDoR, #
В некоторых случаях лучше не знать.
Например, когда живёшь с «Люсей» в разных странах, с разницей в 5 часовых поясов. >_<
0
rubyrabbit, #
Вредна она тогда, когда неверна )
НЛО прилетело и опубликовало эту надпись здесь
–2
ortemij, #
Все слышали? SmileSRG эта статистика неинтересна! Знайте! :)
0
ZVaness, #
35к входящих и столько же в исходящих в ФФ на 32% начали сопротивляться к подсчётам и зависать в браузере. И скорость 100 сообщений в секунду резко стала 100 сообщений раз в 30-50 секунд.
+3
igrishaev, #
Мы до сих пор немного офигеваем от дикого роста популярности нашего скрипта, и не очень знаем, что с ней делать

Может, сделать приложение для вконтакта? С монетизацией бонусных фич.

По поводу API: лично меня бесит, что не используется OAuth, ставший де-факто на западе, и отсутствие библиотек для не-PHP.
–1
gvsmirnov, #
Мы не думали пока о монетизации. Возможно, что и не будем.
+1
igrishaev, #
Для твиттера существует немало сторонних средств аналитики и статистики, в т.ч. и платных. С появлением бесплатной официальной службы статистики их будущее туманно, но для вконтакта такого нет, и, возможно, вы в этом первооткрыватели.
0
danilissimus, #
>We hope it was worth it!
тонко, ничего не скажешь
–2
aumeena, #
Ожидал увидеть source-code (или хотя бы отрывки) внутри топика, чтобы увидеть, как это все работает, но вместо этого ничего не увидел, кроме приглашения в какую-то группу. Сам возился с API vkontakte с помощью Python, но кроме получения списка своих друзей через API мне сделать ничего не удалось.
+2
gvsmirnov, #
Ссылка на проект на google code должна покрыть все ваши нужды в исходниках
+1
aumeena, #
Когда я писал сей пост, ссылки не было :) О том же вам пишут нижним постом.
+4
cyberia, #
Я не вижу на гуглкоде ссылку на 4 версию. Быть может мне стоило поспать этой ночью…
–1
gvsmirnov, #
Спасибо, сейчас пофиксю!
+1
AgentSmith, #
Статистика о статистике.
Зачем это нужно?
–1
gvsmirnov, #
Чтоб вы за нас порадрвались. С именно вами, AgentSmith, похоже, не прокатило.
+5
Serov_George, #
— Серьёзные ограничения: не более 20 сообщений в секунду; — И не поспоришь, действительно серьезное ограничение :-)
0
glx, #
Мне кажется было бы интересно добавить к скрипту возможность просмотра всех сообщений, в том числе и удаленных, для каждого собеседника, ну и в заключение добавить экспорт не только в заметку но и в какой нибудь распространенный формат.
0
Aliance, #
Как Вы себе представляете получение доступа к удаленным сообщениям?
0
ortemij, #
Это с недавних пор возможно: messages.restore.
0
Aliance, #
Нужно было тогда сделать так:
Для вызова этого метода Ваше приложение должно иметь права с битовой маской КГБ
0
ilgub, #
Это крутотень, ребята! Большущее спасибо. Можно сделать множество интересных выводов.
0
seriyPS, #
Я пишу плагин для Gwibber для вконтакта, соответственно работаю с API для десктоп-приложений. Скажу сразу — у фейсбука API гораздо удобнее и продуманнее…
Что сильнее всего удивило — что у вконтакте-API сессионный ключ привязан к IP. Т.е. при смене IP адреса у пользователя десктоп-приложения приходится снова запускать браузерный движок и снова показывать юзеру страничку ввода логина/пароля.
0
ortemij, #
Хм, интересно.
Сомнительная защита, прямо скажем.
+1
loginsin, #
Ждем новую волну «Прочитай сообщения своей половинки» в интернете :-)
–3
Spavvn, #
Чтобы узнать, с кем я чаще всего общаюсь, я лучше использую память своего головного мозга.
0
EvgeniyLazarev, #
Раз в 2-3 секунды в логе пишется Too many requests бла-бла-бла.
Вы хорошо тестировали? :)
0
gvsmirnov, #
Это не страшно. Проявляется у тех, у кого пинг шибко маленький. Ну и ещё не очень ясно, как именно контакт считает свои ограничения на запросы в секунду — то ли если очередной запрос пришёл менее, чем на 333 мсек позже, чем прошлый, то его реджектит(на что рассчитываем мы), то ли как-то ещё(причём, похоже, это именно так)
0
DeeZ, #
Я правильно понял что ваш скрипт создает заметку? причем делает ее общедоступной. Yandex их начал индексировать (у меня настроено оповещение не по некоторым словам).
Думаю стоит вам создавать заметку с приватными настройками, а то не секурно.
0
Neolite, #
tags: «тотальное воровство паролей»
Я знал… =)
НЛО прилетело и опубликовало эту надпись здесь

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.