evernote обновляет ресурсы заметок

Я использую API Evernote для Python для создания приложения, которое позволяет пользователю создавать и обновлять заметки, но у меня возникают проблемы с пониманием того, как эффективно обновлять ресурсы Evernote. В основном это происходит, когда я конвертирую HTML в ENML (язык разметки Evernote), где я создаю ресурсы из тегов img (сейчас я рассматриваю только ресурсы изображений).

Мой вопрос таков: как я могу сказать, учитывая HTML, нужно ли обновлять ресурсы заметки? Я подумал о сравнении данных изображения со всеми данными текущих ресурсов, но это кажется очень медленным. Сейчас я просто создаю новый ресурс для каждого тега img.

Некоторые полезные ресурсы, которые я нашел, включают руководство по ресурсам Evernote и этот пример кода в Evernote SDK. Любые советы приветствуются.


person pryan    schedule 26.05.2014    source источник
comment
может быть, хеширование html и определение различий - это ваше решение? programmers.stackexchange.com/questions/49550/   -  person StanleyZheng    schedule 27.05.2014
comment
это возможно, но тогда мне нужно будет хэшировать данные изображения для сравнения каждый раз, когда я получаю HTML, что все еще кажется дорогим   -  person pryan    schedule 30.05.2014


Ответы (1)


Лучшим способом было бы сравнение хеша MD5 файла. Заметки Evernote отслеживают ресурсы по их хэшу MD5.

Чтобы увидеть хэш MD5 файла, прикрепленного к заметке Evernote, просто посмотрите на элементы ENML с пометкой «en-media», форму тегов можно увидеть ниже:

 <en-media type="mime-type" hash="md5-of-file" />

Где mime-type — это тип файла, а md5-of-file — это хэш MD5 файла. Чтобы получить ENML заметки, вызовите getNote (документация здесь) и обязательно укажите, что вам нужно содержимое. Содержимое заметки в формате ENML представляет собой значение атрибута content объекта, возвращаемого функцией getNote (объект примечания).

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

Кроме того, в документации по методу updateResource говорится:

"Отправить набор изменений ресурса в службу. Это можно использовать для обновления метаданных о ресурсе, но нельзя использовать для изменения двоичного содержимого ресурса (включая длину и хэш)< /strong>. Их нельзя изменить напрямую, не создавая новый ресурс и не удаляя старый через updateNote».

Таким образом, единственный способ «обновить» ресурс — это удалить старый ресурс из заметки и создать на его месте новый. Вы можете сделать это, удалив ресурс, удалив объект ресурса из список, содержащийся в атрибуте ресурсов рассматриваемой заметки. Чтобы добавить новую заметку, просто добавьте новый объект ресурса в тот же список.

person matthewayne    schedule 29.01.2015