Сайт о телевидении

Сайт о телевидении

» » Дни рождения вконтакте

Дни рождения вконтакте

Сегодня меня вновь попросили напомнить человеку о важной вещи в определённое время. Но что делать, если я и про свои-то дела забываю постоянно, а уж тем более про дела кого-то ещё? И тут мне снова помог мой любимый 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. зайдите в размещенный на панели слева пункт «Друзья» (вкладка «Все друзья»);
  3. в правом верхнем углу нажмите на графическое изображение «Календарь»;
  4. на открывшейся вкладке «Ближайшие события» вверху размещены те, кто отпразднует именины в течение следующих суток (тут предусмотрена функция поздравления этих людей сообщением, виртуальным подарком);
  5. далее список сменяется календарным изображением текущего месяца, на датах которого расположены фотографии пользователей;
  6. подведите мышь на аватарку, чтобы увидеть имя человека, узнать, сколько ему исполняется лет;
  7. чтобы просмотреть именинников других месяцев, достаточно кликнуть влево-вправо стрелки вверху табличного изображения (уже прошедшие даты выглядят более блеклыми по сравнению с еще не наступившими).

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

Поздравить друга можно такими способами:

  • отправить сообщение через соответствующий пункт меню;
  • оставить поздравление, красивую открытку на стене.
  • откройте общие настройки и убедитесь, что правильно указали нужные данные;
  • проверьте настройку приватности, отметив среди тех, кто имеет доступ к информации на странице, всех пользователей или только друзей.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Всем привет и с Новым Годом! Сегодня расскажу о своем новом проекте Бот Напоминалка (vk.com/notifytomebot)

Зачем?

Отвечая на этот вопрос, я опираюсь на собственный опыт работы с программами напоминалками на мобильный. У всех у них есть один существенный минус: они сторонние приложения. Именно поэтому иногда так не приятно смотреть на то, как долго оно открывается после закрытия другого. Боты же набирают всё большую популярность. А чего стоит эта история с ботом Дедом Морозом (vk.com/cocacola) ?! В связи с этим возникла мысль, а почему бы не сделать такого же бота в вк только напоминалок? Задача не трудоёмкая, интересная да и возможно востребованная.

Как?

С помощью API Vk и PHP.

Как оно работает?

Работает по принципу телеграмм ботов. Основная функция на данный момент — «Напомни». То есть ты пишешь ему напомни съездить завтра в магазин. И на следующий день он пришлет напоминание в 9 часов утра!
Если хочется уточнить время напоминания — надо просто добавить в фразе «в 12.15 «.
Если написать ему просто «напомни купить сыр», то задание «купить сыр» попадает в туду лист, и весит там пока вы его не вычеркните.
Чтобы увидеть текущий туду лист отправьте «Список».
Чтобы вычеркнуть оттуда задачу напишите «Удалить (номер задачи в листе)».
Чтобы увидеть текущий план (то есть предстоящие задачи с указанным временем) отправьте боту «План». После чего он выведет задачи с указанием времени.