vitalyrodnenko / geeknote Goto Github PK
View Code? Open in Web Editor NEWConsole client for Evernote.
Console client for Evernote.
Traceback (most recent call last):
File "gnsync.py", line 11, in
from geeknote import GeekNote
File "/home/ivan/WebDevelop/geeknote/geeknote.py", line 23, in
import out
File "/home/ivan/WebDevelop/geeknote/out.py", line 7, in
import tools
File "/home/ivan/WebDevelop/geeknote/tools.py", line 4, in
from log import logging
File "/home/ivan/WebDevelop/geeknote/log.py", line 10, in
logging.basicConfig(format="%(asctime)-15s %(module)s %(funcName)s %(lineno)d : %(message)s", filename=config.ERROR_LOG)
File "/usr/lib/python2.7/logging/init.py", line 1511, in basicConfig
hdlr = FileHandler(filename, mode)
File "/usr/lib/python2.7/logging/init.py", line 893, in init
StreamHandler.init(self, self._open())
File "/usr/lib/python2.7/logging/init.py", line 912, in _open
stream = open(self.baseFilename, self.mode)
IOError: [Errno 2] No such file or directory: '/home/ivan/.geeknote/error.log'
Я описываю его в документации, но у поиске он не работает.
Как мне задать редактор которым я хочу открыть в редактирование заметку?
geeknote remove --force --note "тайтл" - ошибка
geeknote remove --note "тайтл" --force - нет ошибки
От перестановки аргументов ошибки не должны возникать.
Думаю, нужно сделать ссылку на Web++ в футере сайта? Сейчас это просто текст
skaizer@dev:~$ geeknote -h
Unexpected command "-h"
Available commands:
show : Create note
notebook-list : Create note
notebook-remove : Create note
logout : Create note
user : Create note
find : Create note
settings : Create note
edit : Create note
create : Create note
remove : Create note
notebook-create : Create note
login : Create note
notebook-edit : Create note
Надо поменять Create note
Нужен текст.
Если требуется что-то для этого оформить - пиши
Как сохранить многословный и многострочный текст, где есть кавычки? В логах очень часто встречаются ковычки, переносы на новые строки и т.д.
Они должны отрабатываться нашей программой, чтобы ее можн было использовать в серверных системах логирования.
Когда выполняем поиск, например:
python geeknote.py find --search "Shop*" --tags "important"
Он ищет метки с тегом important. Если мы зададим:
python geeknote.py find --search "Shop*" --tags "test, important"
То уже ничего не найдет, так как нет заметок, содержащих теги test и important одновременно.
Думаю стоит задать опцию & например --tags "test & important" Которая будет обозначать, что метки должны содержаться обязательно обе. Если стоит запятая, или | - то это значит "Или".
После установки деб пакета отсутствует программа синхрониазции. Нужно ее добавить.
Проверить перевод при вызове этих функций:
MacBook-Rodnenko-Vitalij:geeknote Skaizer$ python geeknote.py find --search "Shopping_" --date 23.06.2012
Notes not found
Search request: intitle:Shopping_ created:"20120623" -created:"20120624"
Total found: 0
MacBook-Rodnenko-Vitalij:geeknote Skaizer$
Хотя было сегодня создано 2 заметки.
В приложении ОБЯЗАТЕЛЬНО должна быть обработка ошибок ввода, чтобы не показывались питоновские ошибки.
MacBook-Rodnenko-Vitalij:geeknote Skaizer$ python geeknote.py edit --note тайтл
Total found: 2
1 : Новый тайтл
2 : Новый тайтл 2
0 : -Cancel-
: 1
: Saving note...2012-06-20 16:07:42,582 geeknote : Error: EDAMUserException(errorCode=2, parameter='Note.title')
Error while saving the note
MacBook-Rodnenko-Vitalij:geeknote Skaizer$
Обработать ситуацию, когда токен недействительный.
Сейчас ошибка:
python geeknote.py list-notebook
: Connect to Evernote...Traceback (most recent call last):
File "geeknote.py", line 608, in
main()
File "geeknote.py", line 596, in main
Notebooks().list(**ARGS)
File "geeknote.py", line 277, in list
result = self.getEvernote().findNotebooks()
File "geeknote.py", line 181, in findNotebooks
return self.getNoteStore().listNotebooks(self.authToken)
File "geeknote.py", line 71, in getNoteStore
noteStoreUrl = self.getUserStore().getNoteStoreUrl(self.authToken)
File "/home/ivan/WebDevelop/geeknote/lib/evernote/edam/userstore/UserStore.py", line 614, in getNoteStoreUrl
return self.recv_getNoteStoreUrl()
File "/home/ivan/WebDevelop/geeknote/lib/evernote/edam/userstore/UserStore.py", line 637, in recv_getNoteStoreUrl
raise result.userException
evernote.edam.error.ttypes.EDAMUserException: EDAMUserException(errorCode=2, parameter='authenticationToken')
Это скорее не ошибка, а "хотелка". У нас пароль вводится в открытом виде. т.е. его видно когда вводишь при авторизации. По хорошему было бы не плохо, что бы он в консоле не отображался. Я не знаю, реально ли это сделать.
Ваня у себя в синхронизаторе решал эту проблему.
Вот я синхронизировал файл
geeknote create --titlewebpp.ru log" --content /home/www/volgorate.ru/logs/access.log --notebook "projects" --tags "logs"
В результате загрузки все переносу на новую строку потерлись. Так как мы загружаем в формате хтмл, надо менять \n на новую строку
.
У Вани это уже готово, надо сделать так же. Этот баг очень срочный, так как этим функционалом будут пользоваться в первую очередь.
Перед консолью есть строка:
Syncronize local directories and files with Evernote. Geeknote will read and upload as a notes all text files in your local directory to Evernote.
нужно ей поменять, она тут не к месту.
Картинки мы договорились не синхронизировать, верно?
Вань, вопрос относительно синхронизации изменений. Если использовать синхронизацию директорий на сервере, в частности логов - файлы не изменяются. То есть обычно лог пишется в один файл.
Соответственно, если имеется возможность в блокноте держать заметки с одним и тем же именем нужно или: хранить контрольную сумму файла, и если есть возможность в Evernote API получать его и сравнивать с сожержимым нашего файла. Если нет - надо подумать над решением.
Сейчас при запуске python geeknote.py settings без аргументов ничего не выводится.
Думаю стоит сделать вывод просто всех текущих настроек приложения. Как вывод команды evn в линуксе.
Когда просто к консоле пишешь: geeknote , то выводит "About geeknote". Думаю надо либо написать номер версии, либо расширить эту информацию.
Ошибка при использовании: python geeknote.py find --count 2
Если какие-то команды будут отсутствовать - добавить
Когда ищешь с указанием блокнота, то не ищется.
python geeknote.py find --search "Shop*" --notebooks "Family"
Так же вопрос, я могу указывать через запятую сколько угодно блокнотов для поиска? Они буду восприниматься как "Или" или "И", если я укажу их через запятую?
Когда выполняешь поиск, например такой:
geeknote.py show --note 1231231231312312312389128309182093812093812938091283901283901283
Тебе выводится довольно большой список резуьтатов. Хотя явно такого контента нет нигде.
По моему, поиск не совсем качественный, в том смысле, что мало результатов:
skaizer@dev:~$ geeknote find --search "note"
Search request: intitle:note
Total found: 2
1 : 22.06.2012 note
2 : 08.06.2012 My note
Должен, как написано у нас в документации искать не только по заголовкам заметок, но и по содержимому.
поиск по этому же запросу в evernoteвеб клиенте дал больше результатов.
Может я неправильно пользуюсь?
Traceback (most recent call last):
File "gnsync.py", line 7, in
from geeknote import GeekNote
File "/home/ivan/WebDevelop/geeknote/geeknote.py", line 23, in
import io
File "/home/ivan/WebDevelop/geeknote/io.py", line 7, in
import editor
File "/home/ivan/WebDevelop/geeknote/editor.py", line 9, in
import markdown
ImportError: No module named markdown
Обработка KeyboardInterrupt в gnsync как в geeknote
Когда есть вослицательный знак в контенте создаваемой заметки - пишет ошибку.
На странице установки не корректная информация по установке:
Не будет: $ apt-get install geeknote
Нужно добавить файл deb пакета, собрать его можно из текущей версии. Я проверял, там все ОК в нем. и "geeknote" и "gnsync" есть.
Отсутствует режим force для удаления блокнотов, меток или заметок.
При удалении несуществующего блокнота
MacBook-Rodnenko-Vitalij:geeknote Skaizer$ python geeknote.py notebook-remove --notebook "Hangover"
Are you sure you want to delete this notebook: "Hangover"?
Yes/No: Yes
Error while removing the notebook
Пишет ошибку. Нужно обрабатывает его отсутствие.
Надо переименовать list-notepad в notepad-list
Сделал поиск, нашел 2 результата. После пишу:
MacBook-Rodnenko-Vitalij:geeknote Skaizer$ python geeknote.py edit 1
Note successfully saved
MacBook-Rodnenko-Vitalij:geeknote Skaizer$
Редактор у меня не открылся, редактирования я не делал никакого. То есть просто написалось, что сохранено.
На главной странице есть 6 блоков, причем только 3 уникальные:
Sync directories with Evernote
Read notes from console
Edit with nano, vi, vim
Думаю остальные 3 нужно как то изменить что бы они не были одинаковыми.
есть предложения?
Не могу создать заметку. Пишу как в документации:
skaizer@dev:~$ geeknote create --title "Shopping list 22.04.2012" --content "Don't forget to buy milk, turkey and chips. content"
После выполнения команды ничего не выводится. Авторизация ок, список блокнотов получить могу.
Работает ли перенаправление потоков в geeknote, как изначально предполагали?
Текст который будет в консоли когда ты не залогинен
Когда берешь, копируешь текст, в котором есть переносы строк, например:
python geeknote.py create --title 123123 --body "Главная ошибка стартаперов в том, что они пытаются создать сразу полнофункциональный проект и не запускают его, пока не разработают всю функциональность. Но что если вы где-то ошиблись, или ваш сервис не так удобен. Вы создадите огромный массив возможностей, который прийдется переделывать."Note successfully created
MacBook-Rodnenko-Vitalij:geeknote Skaizer$ Чем раньше вы запустите первую версию, пусть это будет альфа/бета, тем раньше вы получите первые отзывы, и сможете скорректировать направление проекта в нужном направлении. Иными словами, как говорит Рейд Хоффман: запускайте проект сразу же, как только вам за него не стыдно.
То есть он сам взял первый абзац, отделил его по переносу строки и сохранил. Второй абзац просто добавил после в консоль.
Как просто получить список последних заметок? Данная команда была описана в консольных вызовах в портале.
Вань, при синхронизации обычных txt файлов, не markdown формата, рушаться все переносы на новую строку. Попробовал синхронизировать книгу размером пол мегабайта. Нормально закачалась, но все переносы на новую строку слетели.
Думаю стоит добавить опцию - формат - plain или markdown. Если markdown - то соответственно подключается движок маркдауна. Если плейн - сохраняется просто как есть, без маркдаун предобработки.
Когда команду вызываешь без аргумента, хотя аргумент обязательный - выводится ексепшн. Нужно обрабатывать.
geeknote create --title "Тайтл" --content "WRITE"
Если есть файлы в не UTF формате, он их не синхронизирует. Это ок. Но важно, что если в категории есть не UTF файлы, он их просто пропустит и в лог выведет инфу об этом.
Требуется обязательно (!) обрабатывать интеррапт приложения на ctrl+C. Так как сейчас пишет питоновский трекбек ошибки. Нужно это ловить, закрывать жизненноважные соединения, файлы и закрывать приложение.
Получается у нас нельзя создавать заметки с неуникальным именем?
skaizer@volgorate:/$ geeknote create --title "Тайтл" --content "123"
Note successfully created
skaizer@volgorate:/$ geeknote find ""
Search request: intitle:
Total found: 15
1 : Тайтл #1.07.2012
2 : Тайтл #1.07.2012
3 : Тайтл #1.07.2012
4 : Тайтл #1.07.2012
4 раза создал заметки "Тайтл" - получается, что так, что так - имя одно. Только еще с датой.
А что делается с заметками при удалении блокнота?
Мы обсуждали флаг, поставив который все заметки в блокноте так же будут удалены.
Заметка: "Don't forget to buy milk, turkey and chips."
поиск:
python geeknote.py find --search "milk" --content-search
Notes not found
Search request: any:milk
Total found: 0
python geeknote.py find --search тест --url-only
Выводит ошибку
Traceback (most recent call last):
File "geeknote.py", line 549, in
ARGS = argparser.parse()
File "/Users/Skaizer/geeknote/argparser.py", line 140, in parse
INP_DATA[item] = CMD_FLAGS[item]["value"]
KeyError: 'value'
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.