Pull to refresh

Экспорт дней рождения из ВКонтакте (работа с OpenAPI)

Reading time2 min
Views30K
imageЛично я не любитель соцсетей, а в особенности — вконтакте, из-за которого у меня было немало времени, потраченного впустую. Собственно поэтому в свое время я решил из него удалиться. Но в определенный момент я понял, что контакт служил не только местом , где можно было с утра до ночи нажимать F5 на странице Новостей для общения, но также сервисом, благодаря которому я мог вовремя узнавать о днях рождения друзей и, таким образом, поддерживать с ними хорошие отношения.

Таким образом, была поставлена задача: экспорт календаря в внешний сервис (в моем случае — Google Calendar). Используется родной API, поэтому все работает быстро и без багов. Кому интересно — прошу под кат.

Итак, были рассмотрены следующие варианты:

Вариант в лоб — написать скрипт, который собирает ответы на AJAX-запросы страницы календаря. В общем, обход проблем с безопасностью, полчаса над Firebug-овскими ответами сервера, создание php-шки — и получился файлик с форматированными HTML-блоками, с которого к тому же надо вычислять год рождения от возраста в скобках, ну и конечно же, даже HTML «не особо» валидный. Вариант отпал. Дальше пошла работа, и времени+желания искать другие варианты не было.

Вскоре на Хабре появилась статья «Экспорт Дней рождения из вКонтакте в Google Calendar», которая предлагала аналогичное решение, только в виде юзерскрипта, причем с впихнутым внутрь jQuery. Ну ладно, подумал я, то что тормозит — не очень страшно, главное — работает. К сожалению, обнаружилась пара неприятных багов (в т.ч. проблемы с спецсимволами в именах, ограничение в одного человека на день) и этот вариант тоже отпал.

Вчера же от нежелания делать что-либо полезное нечего делать решил вернуться к вопросу. Так как на этот момент у контакта уже есть более-менее нормальное API для внешних сайтов и js-приложений (OpenAPI), было решено использовать его. Пара часов разбирательств, сожаление, что нет аналога FQL или соцграфа, далее разборка с форматом iCalendar — и, таким образом, был создан простейший в плане кода и дизайна HTML-файл и контактовское приложение (дабы не нагружать сервер), которые позволяют получить ics-файл для последующего импорта в любую популярную программу-календарь.

Ознакомиться и скачать «страничку» можно здесь: http://pastebin.com/Q4dwGQyL
Если лень создавать свое приложение вконтакте и хотите просто воспользоваться готовым решением, можете попробовать здесь: http://rreverser.com/dev/vkcal.htm (предупреждаю, хостинг бесплатный, так что может не выдержать знаменитого эффекта).

Способ использования:
  • Нажимаете кнопку логина вконтакте
  • Разрешаете доступ
  • Ждете до появления кода в textarea
  • Нажимаете одну из кнопок «Save...» либо сохраняете полученный код в ICS-файл вручную
  • Импортируете сохраненный файл в календарь (Google Calendar, Outlook, etc.)
Спасибо, пока все.

Примечание: скрипт написан моим другом RReverser.
Tags:
Hubs:
+53
Comments69

Articles

Change theme settings