Как Вконтакте открыть календарь с днями рождения

Когда я пытался уйти из ВК, то многие плюшки меня безусловно останавливали. Одной из такой фич был Календарь ВК с днями рождения. Ведь забывать друзей и терять с ним контакт не хотелось, а лента ВК мешала тратить время на более полезные вещи. Поэтому ещё давно я задумывался об экспорте дней рождений из ВК. В конце концов руки дошли до этого и сначала я расскажу, как я это сделал через Python+Selenium, а потом через VK API (ссылка на след запись.)

Задача:

Написать скрипт, который заходит на страницу, открывает календарь, проходит по всем дням рождениям и записывает всё в файл формата ics (iCal). Данный формат поддерживается Apple календарем и Google Calendar.

Код python:

Если вы только знакомитесь с Python+Selenium, то рекомендую посмотреть «Начала«.
Итак, нам понадобятся в одной папке chromedriver.exe и скрипт со следующим содержимым:

Источник: abrekhov.ru

Календарь Дней рождения ваших друзей во ВКонтакте

Выгрузка дней рождений друзей из Вконтакте

Вконтакте умеет напоминать о днях рождениях push-уведомлениями, но это не всегда удобно, функционал приложений календарей намного обширней.

Собственно сразу результат: Ссылка на сервис

Инструкция

Все работает довольно просто. Авторизуете приложение, даете ему доступ к друзьям. Сервис абсолютно безопасен, все исходные коды открыты, да и сам API не позволит сделать что-то плохое.

После выгрузки, полученный ics файл (это формат iCalendar) можно загрузить в любой календарь. P.S. Проверял пока только с Гугл календарем, но должно заработать везде.

Еще по теме:  Как добавить человека в ВК

Справка по импорту в google calendar: ссылка

Важно! Импортируйте в новый календарь, иначе, если что не так, придется потратить немало времени на чистку )

Техническая часть

Задача: Сделать так, что бы в календаре (например, google) можно было быстро добавить дни рождения друзей из vk. Было бы круто, увидеть список и выбрать записи для выгрузки.

Мысли: Логично, что сервис должен получиться легким, доступным всем, без установки, так же будет круто, если не потребуется ничего, кроме стандартного хостинга. Хм… JavaScript! У VK есть отличный SDK

Реализация: Круто, API есть, нужно подобрать модули, которые облегчат разработку. Гугл, StackOwerflow и GitHub мне в помощь. Вот что я нашел:

  • Расширение Bootstrap-table
  • Библиотека для создания ics
  • Работа с датами Moment JS

Для приличного внешнего вида подключаю Bootstrap, так же без него не заработает плагин для работы с таблицей.

Для начала:

  1. Создаем приложение тут
  1. Тип выбираем веб-приложение.
  2. Для удобной локальной отладки в базовый домен добавляем localhost
  3. Запоминаем ID приложения

Логика работы и код:

    При загрузке проверяем, не авторизованы, ли мы уже

Как Скрыть или Убрать Дату Рождения в ВК с Телефона


$(document).ready(function () < VK.Auth.getLoginStatus(function (r) < if (r.session) < console.log(«Already auth»); uiLogin(); >else < console.log(«Not auth»); >>); >);
VK.Auth.login( function (r) < if (r.session) < uiLogin(); >>, VK.access.FRIENDS );
VK.Api.call( «users.get», , function (r) < if (r.response) < $(«#userInfo»).text(» Пользователь: » + r.response[0].first_name + » » + r.response[0].last_name); >> );
VK.Api.call( «friends.get», < order: «name», fields: «bdate,nickname,city,domain» >, function (r) < . >);

Тут есть один момент. Города возвращаются как id, а не названия.

Не порядок. В вк есть вспомогательный метод, для получения данных о городе по id (« database.getCitiesById «), он отлично нам подходит, на вход нужно передать список id. Тянуть все города для страны — не корректно.

Еще по теме:  Как подарить голоса Вконтакте

// Эта функция поможет вывести массив, только с существующими значениями // По сути так я добился от массива поведения похожего на java Set function fToStr() < var str = «»; for (i = 0; i < this.length; i++) < if (this[i] === undefined) continue; str += this[i]; if (i + 1 < this.length) str += «,»; >return str; > Array.prototype.toStr = fToStr; // После получения ответа от вк, пробежимся по него и соберем все города var cityIds = []; filterResp.forEach(function (e) < cityIds[e.city] = e.city; >); // Для получения строчки 1,5,9 воспользуемся нашей функцией cityIds.toStr();
// now Date from vk response var dt = e.bdate.split(«.»); var date; if (dt.length == 2) < // DD.MM date = new Date(«1900», dt[1] — 1, dt[0]); >else < // DD.MM.YYYY date = new Date(dt[2], dt[1] — 1, dt[0]); >
var cal = ics(«ru-RU»); c = 0; birtdayList.forEach(function (e) < if ($(«input#»+e.uid).prop(«checked»)) < cal.addEvent( «ДР » + e.first_name + » » + e.last_name, e.link, e.city, e.birthday, e.birthday); c++; >>); alert(«Будет выгруженно » + c + » дней рождений»); cal.download(«vk-birtdays»);

Источник: sboychenko.ru

Как перенести дни рождения из Вконтакте в Android (Google Calendar)

P.s. скрипт взят с хабра и закинут на свой хостинг

Tagged android, вконтакте, дни рождения, календарь, синхронизация. Bookmark the permalink.

17 Responses to Как перенести дни рождения из Вконтакте в Android (Google Calendar)

seaji says:
Кажется это у тебя уже было, я уже так переносил.
dmitry says:
Да, было просто как приложение и ссылка в твиттере, сейчас решил перенести в блог.
Тарас says:

Огромное спасибище. Искал как перенести дни рождения из Вконтакте в Андроид-кмк. Платные проги есть, а вот бесплатного аналога я не нашел. А платить 70 рублей за одно дейтсвие как-то не серьезно. Еще раз спасибо.

Еще по теме:  Как скрыть фотки в ВК не удаляя их со страницы

Ирина says:

Огромное спасибо за столь подробное и понятное описание ОЧЕНЬ нужной вещи. Долго искала, нашла и все получилось с первой попытки

Дмитрий says:

Даже ссылка автора скрипта на странице Хабра не работает, а ваша работает. Спасибо! Рассказал друзьям.

Дмитрий says:
Супеер. очень благодарен за информация – все перенес на за минуты 3-4 )))
Крот из-под берега Невы says:

Надеюсь информация не сохраняется и не будет использована в злостных целях)
Спасибо тебе, добрый человек. Все хорошо работает.

Руслан says:

Скопировать скопировал, но вот в телефоне (андройд) эти дни рождения упорно отображаться не хотят. Созданные вручную – пожайлуста, а те что с помощью этого перенесены – нет. Синхронизация не лечит

Источник: sandalov.org

Рейтинг
( Пока оценок нет )
Загрузка ...