NexxDigital - компьютеры и операционные системы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Зачем?

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

Как?

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

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

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

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

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

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

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

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

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

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

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



Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter
ПОДЕЛИТЬСЯ:
NexxDigital - компьютеры и операционные системы