Как говорят разработчики Android — данная ОС ни на что не похожа, и является совершенно новым продуктом.
С одной стороны данное утверждение верно. А вот при пристальном рассмотрении выясняется, что нет – система сама по себе замечательна, но странным образом собрала в себе все косяки своих предшественников. Одной из проблем можно считать знакомое пользователям по Windows Mobile — отсутствие отображения в календаре праздников контактов. Так же естественно отсутствуют напоминания о днях рождениях.
Проблема, собственно как и WM решаема, но требует определенных танцев с бубном. Итак, как же уговорить свой Android смартфон напоминать вам о днях рождениях своих родных и близких?

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

Итак, являясь обладателем смартфона на андроид, вы наверняка имеете свою учетную запись в Google и используете синхронизацию контактов. Если ни того ни другого вы не делали, то следует зайти в настройки своего телефона, там найти пункт под названием «учетные записи и синхронизация». Если вы нажмете на данную строчку меню настроек, то перед вами откроется окно, в котором будет доступно создание учетной записи.

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

Следующим шагом будет посещение своего аккаунта на сервисе Google с персонального компьютера. При вводе в соответствующие окошки логина и пароля перед вами откроется персонализированная страница, на которой вы увидите свои контакты, и прочее, что было синхронизировано.

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

После этих действии вам необходимо синхронизировать календарь со своего смартфона и теперь у вас будет напоминание о днях рождениях контактов.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Зачем?

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

Как?

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

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

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

Сегодня меня вновь попросили напомнить человеку о важной вещи в определённое время. Но что делать, если я и про свои-то дела забываю постоянно, а уж тем более про дела кого-то ещё? И тут мне снова помог мой любимый 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 Вконтакте можно взять . Теперь работает без использования фэйкового аккаунта. Это несомненный плюс.

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

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

При и в разделе “Редактировать”, вкладка “Основное” по желанию любой пользователь может заполнить графу “День рождения”, вписав туда дату. Это можно сделать не только при регистрации, но и в любое время после создания страницы.

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

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

Где отображается день рождения пользователя ВК

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


Оповещение о дне рождения друга

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

Если перейти на страницу к имениннику, то и там появится оповещение о празднике. В обоих оповещениях вам сразу предложат отправить подарок пользователю (об этом читайте в статье “Подарки ВКонтакте”).

Вы можете нажать на ссылку “Показать все подарки” и перейти в магазин. Для того, чтобы купить подарок, вы должны иметь деньги на счету аккаунта. Об этом читайте в статье “Как положить деньги на счет ВКонтакте”. Если у вас на счету есть деньги – то вы можете просто выбрать подарок, купить его и отправить имениннику.

Как изменить дату рождения ВКонтакте

Вы можете в любое время изменить или заполнить информацию о дне вашего рождения. Для этого нужно перейти в , раздел “Редактирование”, вкладка “Основное”.

Календарь ВКонтакте

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

Информация в календаре

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

  • посмотреть ближайшие дни рождения друзей и события;
  • прямо отсюда написать поздравление или отправить подарок имениннику;
  • посмотреть праздники друзей и события на весь текущий месяц, а так ДР и события в следующих месяцах (и минувшие);

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