Просим вконтакте напомнить про пельмешки. Дни рождения вконтакте

Всем приятно получать подарки, а ещё приятнее их дарить. Но совсем становится приятно, когда о твоём дне рождения помнят многие и многие, и близкие знакомые и далёкие. Очень приятно получить в день рождения смску или хотя бы сообщение в социальной сети, пусть с шаблонным поздравлением, но всё-таки тебя не забывают. Для iPhone/iPad существует замечательное, хоть и платное, приложение ВКонтакте.ДниРождения , которое напомнит вам о днях рождения ваших друзей в социальной сети вконтакте. Напомнит и поможет отправить небольшое поздравление, получив которое, ваш друг, возможно когда-то очень близкий, порадуется, что вы его не забываете

Если вы читаете статью с вашего iPhone/iPad, просто перейдите по

ЭТОЙ ССЫЛКЕ и сразу же сможете загрузить приложение ВКонтакте.ДниРождения . Если же вы читаете статью с компьютера, хватайте ваш iPhone/iPad, открывайте App Store и в поиске набирайте ВКонтакте.ДниРождения . Приложение стоит 1$. Лично мне совершенно не жалко этих денег за такое полезное приложение!

После установки в меню появится иконка приложения

Использование приложения ВКонтакте.ДниРождения очень простое. После первого запуска приложение загрузит список дней рождения ваших друзей, используя вашу учетную запись вконтакте. Для загрузки списка в главном меню нажмите кнопку Обновить

После этого в главном меню нажмите кнопку Настройки и настройте время суток, когда приложение ВКонтакте.ДниРождения будет уведомлять вас о том, кто из ваших друзей вконтакте празднует свой день рождения сегодня.

Так же можно не дожидаться уведомлений о днях рождения ваших друзей, а нажать в главном меню кнопку Друзья и увидеть ближайшие дни рождения ваших друзей вконтакте.

Лично я стараюсь писать поздравительные смс, нежели сообщения вконтакте. На пару рублей я не обеднею, а получить смску у юбиляра гораздо больше шансов, так как телефон всегда с собой, нежели неизвестно когда полезть в контакт и увидеть сообщение одно из многих и закрыть его на автомате. Но бывают случаи когда номера телефона друга, чей случился день рождения, нет. И на своей странице вконтакте номер телефона он так же не написал. Остается отправлять поздравительное сообщение в социальную сеть. Для этого в правом верхнем углу контакта, у которого сегодня день рождения, жмем конвертик

Сегодня меня вновь попросили напомнить человеку о важной вещи в определённое время. Но что делать, если я и про свои-то дела забываю постоянно, а уж тем более про дела кого-то ещё? И тут мне снова помог мой любимый python.

Честно говоря, обычные программы-напоминалки, что в телефоне, что в компьютере, меня не устраивали из-за их ограниченности рамками устройства + они совершенно не решали задачу, когда нужно напомнить о чём-то, но не мне. Решение пришло как-то само-собой. А что, если напоминания будут приходить как сообщения вконтакте? Если я не на рабочем месте - телефон свибрирует своим пуш-ап уведомлением, а за компьютером всё ещё очевиднее. Цель - написать скрипт, который читает мои сообщения о напоминании и в заданное время напоминает кому нужно о том, что, собственно, требуется. Ну раз идея пришла, я приступаю к её реализации.

Стартуем

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

Для начала научим наш скрипт логиниться в эту социальную сеть. Всё просто, используем стандартный mechanize.Browser()

Br = mechanize.Browser() br.set_handle_equiv(True) br.set_handle_redirect(True) br.set_handle_robots(False) br.open("https://vk.com/") br.select_form(nr=0) br.form["email"] = name br.form["pass"] = password br.submit()
Вуаля! Мы зашли на свою страничку вконтакте. Теперь используем классную особенность вконтакта - возможность писать самому себе(кто не в курсе, как это делается - перейдите по ссылке vk.com/im?sel=id , где id - Ваш id в социальной сети. В моём случае это был 38591009).

Первым делом прочитаем эти сообщения. Для этого мне нужно узнать свой id(он есть в коде главной страницы, причём повторяется множество раз).

Self_username = "username" def get_self_page_id(br): br.open("https://vk.com/"+self_username) return br.response().read().split("

").split("
") all_numbers.append(msg_num) if first_start: msg_numbers = all_numbers first_start = False new_numbers = set(all_numbers) - set(all_numbers).intersection(set(msg_numbers)) for num in new_numbers: reply_to_message(br, get_message_text(response, num)) #вызов функции ответа на сообщение. Опишу её позже. msg_numbers = all_numbers

Начинаем внутренний диалог

Отлично. Теперь мы знаем какие сообщения поступили мне от меня недавно. Осталось их понять и сделать что-то в ответ. Займёмся сначала первой задачей:

Def reply_to_message(br, message): if message.find("напомнить") == -1: print "nothing" else: print "I obey, my lord" ms_words = message.split(" ") user = "self" time_s = datetime.datetime.now().strftime("%H:%M") day_s = str(datetime.date.today()) msg = "something went wrong" times = message.split("|") if len(times) == 1: times = "1" else: times = int(times) if ms_words == "в": user = "self" time_s = ms_words msg = message.split("текст ").split("|") elif ms_words == "день": user = "self" time_s = ms_words day_s = ms_words msg = message.split("текст ").split("|") elif ms_words == "в": user = get_page_id(br, ms_words) time_s = ms_words msg = message.split("текст ").split("|") elif ms_words == "день": user = get_page_id(br, ms_words) time_s = ms_words day_s = ms_words msg = message.split("текст ").split("|") let_it_do(user, time_s, day_s, msg, times) #вызов функции, которая знает, что делать с полученными из сообщения значениями.
Здесь я спличу полученные сообщения и заношу в переменные соответствующие значения. В общем, отвечаю на вопросы «кому напомнить?», «что напомнить?», «когда и сколько раз это сделать?». Синтаксис сообщения/команды выбрал не сложный: напомнить [кому] [дата] в [время] текст [текст сообщения]|[сколько раз]. Вот пример:«напомнить tenoclock в 14:10 текст Очередной тест | 4»

Так наш робот видит внутренний диалог

Для хранения заданий я выбрал базу данных sqlite3. Нагрузка у нас минимальная, разворачивается она совершенно без усилий. Теперь приступим к записи заданий в базу данных, по пути проверяя валидность даты и времени. Выглядит это вот так:

Def valid_time(time_text): try: datetime.datetime.strptime(time_text, "%H:%M") return True except ValueError: send_message(br_fake, get_self_page_id(br), "неверный формат времени") return False def valid_date(date_text): try: datetime.datetime.strptime(date_text, "%Y-%m-%d") return True except ValueError: send_message(br_fake, get_self_page_id(br), "неверный формат даты") return False def let_it_do(user, time_s, day_s, message, times): if valid_time(time_s) and valid_date(day_s): c = conn.cursor() c.execute("INSERT INTO reminder (time, date, user, message, times) VALUES (?,?,?,?,?)",(time_s, day_s, user, message, str(times))) conn.commit()

Финишная прямая

Мы уже близки к финалу! Задания наш робот получил, себе их записал. По сути, осталось только их выполнить. Тут я столкнулся с небольшой трудностью. Скрипт постоянно читает мои сообщения ко мне, поэтому, если он будет отправлять их в этот-же диалог, то в непрочитанных у меня ничего висеть не будет. А это плохо. Проблема решилась заведением фэйкового аккаунта для этого случая. Теперь если скрипт напоминает мне о чём-то, он пишет со второго аккаунта, если же нужно напомнить кому-то другому, то он пишет от моего имени, дабы людей не пугать.

Собственно вот пара функций, которые отвечают за чтение из базы и отсылку сообщений:

Def check_answers(): conn = sqlite3.connect("reminder.db") rows = get_rows(conn) for row in rows: print row c = conn.cursor() if row == "self": pass send_message(br_fake, get_self_page_id(br), row.encode("utf-8")) else: send_message(br, row, row.encode("utf-8")) if row == "1" or row == 1: c.execute("DELETE FROM reminder WHERE id = ?;", str(row)) else: time_s = (datetime.datetime.now()+datetime.timedelta(seconds=60)).strftime("%H:%M") num = int(row) - 1 c.execute("UPDATE reminder SET time = ?, times = ? WHERE id = ?",(time_s, str(num), row)) conn.commit() def send_message(br, id, message): br.open("https://vk.com/im?sel="+id) br.select_form(nr=0) br.form["message"] = message br.submit()
Ну и после отсылки сообщений скрипт удаляет запись из базы, если она не актуальна(если нужно повторить ещё сколько-то раз, то переносит время напоминания на минуту вперёд и уменьшает количество оставшихся отправок)

Подводим итоги

Так скрипт, который укладывается в 200 строк кода, решает проблему напоминаний себе и другим, используя социальную сеть вконтакте. Целиком его можно скачать отсюда . Если он вдруг кому-то нужен, то советую не собирать из кусков статьи, здесь только функциональные вещи. Некоторые вспомогательные штуки остались за кадром. Я запустил его на одном из своих vps. Пока, вроде как, удобно.


Робот указывает мне, что делать. В воскресенье! Дожили

После несложных модификаций сюда так-же можно включить любые другие функции управления системой, если скрипт запущен на удалённом компьютере. Поставить тот же торрент на скачивание, например. А так, в целом, можно реализовать веб-сервис, который будет заниматься напоминаниями для всех, кто попросит(фактически бота, как в, уже забытых сейчас, irc и icq) Но эти вещи уже не относятся к данной статье. Буду очень рад, если кому-то это было полезным.

Всем спасибо за внимание.

UPD: Не спешите разжигать факелы и точить вилы по поводу API. Я сознательно его не использую в этом скрипте из-за некоторых неудобных мест. А именно авторизации и работы с диалогами. Впрочем, в первых же комментариях я раскрыл эту тему. Цель этой статьи показать, как быстро и, практически, не применяя сторонней информации, кроме знания родного для разработчика языка, сделать жизнь несколько проще.

UPD #2: Тот же скрипт, но с использованием могучего API Вконтакте можно взять . Теперь работает без использования фэйкового аккаунта. Это несомненный плюс.

Теги: Добавить метки

  1. Убедись, что в основных настройках страницы (откроется в новом окне) у тебя правильно указана дата рождения и выбран один из вариантов:
    • «Показывать дату рождения» или
    • «Показывать только месяц и день»
  2. Проверь свои настройки приватности (откроется в новом окне) — напротив пункта «Кто видит основную информацию моей страницы» должен быть выбран один из этих пунктов:
    • «Все пользователи»
    • «Только друзья»
    • «Друзья и друзья друзей»

Если друг закрыл напоминание, то именно ему этот день рождения не будет показываться (но только этот). Другие будут его видеть. Повлиять на это ты не можешь, ведь каждый пользователь сам решает, как ему пользоваться Контактом. То есть ТЫ не можешь ИМ что-то такое настроить на сайте. Другое дело, если человек закрыл напоминание случайно — конечно, после этого он может вовсе забыть поздравить тебя. Это можно считать недоработкой, но не стоит расстраиваться — такому другу можно посоветовать посмотреть дни рождения друзей через «Календарь» (об этом читай ниже). Кроме того, это не навсегда — через некоторое время друг снова будет видеть напоминание о твоей дате.

Внимание, логика!

Если кто-то из твоих друзей не видит уведомление о твоем дне рождения, это не значит, что все твои друзья его не видят. Если кто-то не увидел в ВК, что у тебя день рождения, не делай из этого вывод, что никто этого не увидел.

Некоторые добавляют в друзья очень много пользователей (до 10 тысяч), и каждый день случается день рождения у кого-нибудь из них. Не удивительно, что человек, у которого так много «друзей» в ВК, пропустил уведомление именно о твоем дне рождения.

И помни, что настоящие друзья помнят твой день рождения и поздравят тебя, придя в гости или позвонив по телефону! Ведь раньше люди обходились без сайтов типа ВКонтакте и тем не менее поздравляли друг друга вовремя.

Как посмотреть дни рождения друзей?

Чтобы посмотреть все дни рождения твоих друзей ВКонтакте в этом месяце или в любом другом:

  1. Нажми «Друзья»
  2. В правой колонке вверху рядом со словами «Мои друзья» нажми на значок календаря — откроется календарь, который можно листать по месяцам (кнопки-треугольники влево и вправо). При наведении мыши на картинку будет показано имя друга и сколько лет ему в этот день исполнится (или исполнилось).

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

Почему ВКонтакте не показывает дни рождения друзей?

Обычно ВКонтакте напоминает о днях рождения друзей под знаком колокольчика:

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

День рождения — это он, а не оно! Правильно говорить «день рождения был», а не «было», ведь слово «день» имеет мужской род. Кроме того, слова «деньрождение» вообще нет, только представь! Учись говорить и писать правильно, это полезно в жизни.

Как сделать свой ВК удобнее?

Попробуй стартовую страницу «Вход ». Через нее ты войдешь на сайт ВКонтакте или на любой другой одним нажатием. И там еще много интересных возможностей.

Если вы являетесь активным участником ВКонтакте с момента его запуска, то знаете, сколько изменений социальная сеть уже претерпела. Корректировался дизайн, одни функции и разделы появлялись, другие – удалялись. Сегодня мы немного понастальгируем и вспомним о таком разделе, как Заметки ВКонтакте. Вы, наверняка, думаете, что почитать свои старые записи у вас уже не получится. Но мы расскажем, как их найти и придаться трепетным воспоминаниям.

Что такое Заметки?

Для старожилов ВК это было культовое время. Время, когда пользователи размещали текстовые публикации на своих страничках и трепетно ждали оценок от своих Друзей. Но среди читающих эту статью, наверняка, есть те, кто и не видел раздел заметок. Для них проведем небольшой ликбез.

Появление Заметок ВКонтакте пришлось на этап запуска сервиса. Раздел входил в состав стандартных на тот момент, поэтому знакомились с ним все новички социальной сети. В то время сама Стена ВК выглядела иначе, и форма публикаций была иная. Если сегодня все свои мысли вы сразу же постите на Стене, то тогда для этих целей как раз и использовались Заметки. В своей массе это были сентиментального вида тексты – прозаичные зарисовки, стихи, рассуждения и размышления и т.д.

Пользователи «контакта» могли прочитать публикацию и добавить к ней комментарий. А вот лайков еще не было, поэтому популярность постов оценивалась количеством оставленных комментов. Кстати, и «расшарить» понравившиеся тексты было невозможно: функция просто не была предусмотрена.

В какой-то момент стало ясно, что Заметки заметно устарели. Они уже не были так интересны пользователям, обновлялись все реже. Но разработчики старались все-таки преобразить раздел, добавив в 2011 году новые функции – возможность сделать публикацию с музыкой и фото. Однако раздел от «гибели» это не спасло, и в скором времени он перестал существовать как самостоятельный.

Где Заметки сейчас?

Логичные вопросы: куда делись Заметки ВКонтакте и возможно ли вообще их отыскать во «вконтактовском» пространстве? Не беспокойтесь, все ваши электронные записки, сделанные в ВК, сохранились. Просто сам раздел руководство социальной сети решило убрать, и в основном меню сайта вы его не увидите.

Зачем же вообще было это сделано? А по той причине, что соцсеть претерпевала серьезные изменения: ее постепенно переводили на блог-формат по шаблону небезызвестного Фейсбука. Отсюда и структурные преобразования внутри уже привычного сайта.

Однако есть и другое объяснение принятому руководством ВК решению. В Службе поддержки, куда обращались многие пользователи, говорили о необходимости сменить формат Заметок с целью защиты личных данных. По словам представителей соцсети, пользователи часто использовали записки в «контакте» для того, чтобы сохранить пароли, коды и другую важную информацию. Настройки безопасности и конфиденциальности при этом зачастую давали сбой, рискуя открыть конфиденциальные данные третьим лицам. Во избежание подобных ситуаций, было решено перенести все ранее написанные Заметки на Стену, где и по сей день вы можете обнаружить свои старые публикации. А для хранения важной информации Служба поддержки предлагает создавать записи в приватной группе.

И, конечно, сейчас расскажем вам, как посмотреть те самые заветные записочки, оставленные вами на страницах «контакта». Действуем следующим образом:
1.Заходим в свой профиль ВК (Моя Страница);

2.Переходим во вкладку «Мои записи» на Стене;

3.Еще раз кликаем на «Мои записи»;

4.Переходим в раздел «Мои заметки».

Вуаля! 4 простейших шага – и вы можете пуститься по волнам своей памяти. Какое счастье, что функция заметок пропала, а они сами – нет.

Кстати, есть и альтернативный вариант перехода в давно забытый раздел. Вы можете просто забить в адресную строку браузера прямую ссылку: http://vk.com/notes. Так, наверное, будет даже проще.

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

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

Статьи по теме: