Geeknote — консольный клиент для Evernote

в 5:14, , рубрики: evernote, geeknote, linux, open source, python, системное администрирование, метки: , , , ,

Приветствую, коллеги!

Хочу рассказать вам о нашем проекте — Geeknote. Это консольный клиент для Evernote. Проект Open Source и исходные коды доступны на Github. Geeknote позволяет работать с Evernote из командной строки. Реализованы все основные функции Evernote — создание/удаление заметок, создание блокнотов и тегов, поиск, а так же редактирование через обычный текстовый редактор заметок в формате markdown. То есть можно использовать Evernote в bash скриптах, cron, любых приложениях, где нельзя использовать Evernote SDK. Расскажу подробнее про проект.

Идея проекта

Мы активные пользователи Evernote и используем его в наших делах, личных и не личных, а так же глубоко верим в удобство идеологии Evernote — храни все в одном месте. И раз Evernote это сосредоточение информации для нас, мы подумали, что было бы удобно его использовать и в целях сбора статистики серверов, которые мы ведем. Так пришла мысль написать простой клиент для командной строки, который можно было бы использовать в cron + bash скриптах наших серверов.

Что было и сделано. В результате использования нам в Evernote прилетает информация:

  • критические и не очень ошибки на серверах;
  • статистики по бекапам;
  • статистика по нагрузке;
  • различная информация с наших сайтов;
  • прочая информация, которая так или иначе мониторилась.

Просто шаблон мониторинга изменился — все стало приходить в отдельно выделенные блокноты в Evernote. Нам понравилось, это оказалось очень удобным. Мы решили сделать публичный клиент, для всех. И назвали его Geeknote, думаю понятно почему.

Что Geeknote умеет?

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

Редактирование в текстовом редакторе

Geeknote позволяет редактировать заметку в обычном консольном текстовом редакторе, который вам нравится — nano, mcedit и т.д.

$ geeknote edit --note "Shoplist 22.05.2012" --title "Shoplist 23.05.2012" --content "WRITE"

Передаем слово WRITE в качестве атрибута контента и открывается текстовый редактор по умолчанию.
О редактировании заметок в документации.
После редактирования заметки в текстовом редакторе она прогоняется через markdown обработчик и сохраняется в Evernote.

Создание заметки — напрямую и из файла

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

Пример создания просто заметки:


$ geeknote create --title "Shopping list 22.04.2012"
                  --content "Don't forget to buy milk, turkey and chips."
                  --notebook "Family"
                  --tags "shop, holiday, important"

И из файла:


$ geeknote create --title "Web-site queues"
                  --content /home/website/queues.log
                  --notebook "Projects"
                  --tags "queues, logs"
Вывод --url-only

В Geeknote можно выполнять поиск с атрибутом --url-only, таким образом в результатах поиска вы увидите ссылки на веб-версию каждой заметки.

$ geeknote find --search "Shopping" --url-only
Интерактивный веб-терминал

Для демонсттрации работы Geeknote на сайте мы разработали интерактивный веб-терминал, который умеет работать с реальными аккаунтами Evernote и с Sandbox, если хотите просто потестировать. Авторизация происходит через oAUTH.

Geeknote — консольный клиент для Evernote

Терминал имеет весь функционал Geeknote, даже редактирование через edit. Отключены системные команды, такие как login и settings.

Технически веб-терминал Geeknote работает на web-sockets + Tornado в бекенде и временными сессиями.

Сохранение предыдущей сессии поиска

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


$ geeknote find "*"
Search request: intitle: *
Total found: 9
  1 : 02.07.2012  Go shopping
  2 : 02.07.2012  Shopping list 22.04.2012
  3 : 01.07.2012  webpp.ru log
  4 : 01.07.2012  The title
  5 : 23.06.2012  Shopping list 25.04.2012
  6 : 23.06.2012  Shopping list 22.04.2012
  7 : 20.06.2012  Martin_Dzhordzh - Igra_prestolov_Kniga_I
  8 : 20.06.2012  2012-06-15-are-you-a-problem-or-a-solution
  9 : 20.06.2012  2012-06-13-pedagogical-poem-by-anton-makarenko

$ geeknote show 1
# Или удалить
$ geeknote remove 2
# Или отредактировать в редакторе
$ geeknote edit 3 --content "WRITE"
Синхронизация директорий

В пакете Geeknote мы добавили приложение gnsync, которое предназначено для синхронизации локальных директорий с файлами с блокнотами в Evernote.

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

Пример команды gnsync:


$ gnsync --path /home/project/xmpp/logs/
         --mask "*.logs"
         --logpath /home/user/logs/xmpp2evernote.log
         --notebook "XMPP logs"
Автокомплит команд

Если вы будете работать с Geeknote вручную, то можете использовать двойное нажатие TAB для автокомплита команд и подсказок.

Проект сегодня

Проект участвует в конкурсе Evernote Devcup. Судя по голосам и лайкам, а так же фидбеку за неделю, как мы запустились — идея проекта востребована. Если вам понравился Geeknote, пожалуйста, поддержите нас голосом в конкурсе.
Наша страница на проекте. Будем благодарны.

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

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

Об авторах

Меня зовут Родненко Виталий, давно я писал статьи на хабр про поиск нечетких дубликатов и алгоритм шинглов для веб-документов, и в своем техническом блоге показывал простую его реализацию на Python. А так же мои коллеги Моисеенко Семен и Гуреев Иван — любимые сотрудники нашей студии.

Резюме

Geeknote — консольный клиент для Evernote. Позволяет работать с Evernote из командной строки, открывая тем самым возможности использования Evernote в автоматизации, системном администрировании, программировании bash скриптов и т.д.

Автор: Skaizer

* - обязательные к заполнению поля