印象笔记API NoteStore#updateNote修改笔记更新时间,而不pipe实际更改哪个字段

这样 ,如果我只修改一个音符的标签列表,它不应该被视为一个更新。 因此note.updated仍然是旧的价值。

这是真实的,当我手动添加或从官方客户端的笔记中删除标签。

试着做

以编程方式将新标记添加到现有笔记(标题为“test01”),而不更新note.updated 。 有点像模拟正式客户端的行为,同时修改标签列表。

使用Python代码

插入你自己的开发令牌后,它应该是直接可执行的。

 import uuid from datetime import datetime from evernote.api.client import EvernoteClient from evernote.edam.notestore import NoteStore from evernote.edam.type.ttypes import Tag, Note def main(): # create note_store auth_token = "<MyDevToken>" note_store = EvernoteClient(token=auth_token, sandbox=True).get_note_store() # create a new tag the_tag = create_new_tag(auth_token, note_store, "complex_") print("Tag (%s, %s) created." % (the_tag.guid, the_tag.name)) # search for the note note_list = remote_search(auth_token, note_store, "intitle:test01") # add tag to notes found for note in note_list.notes: print("Before: %s, tagGuids=%s" % (note.guid, note.tagGuids)) result_note = tag_note(auth_token, note_store, note, the_tag.guid) print("After: %s, tagGuids=%s, updated=%s" %\ (result_note.guid, result_note.tagGuids,\ datetime.fromtimestamp(result_note.updated/1000))) pass def create_new_tag(auth_token, note_store, tag_name_prefix="complex_") -> Tag: random_tag_name = tag_name_prefix + str(uuid.uuid4()) my_new_tag = Tag(name=random_tag_name) return note_store.createTag(auth_token, my_new_tag) def remote_search(auth_token, note_store, search_string): my_filter = NoteStore.NoteFilter() my_filter.words = search_string my_filter.ascending = False spec = NoteStore.NotesMetadataResultSpec() spec.includeTitle = True spec.includeTagGuids = True return note_store.findNotesMetadata(auth_token, my_filter, 0, 10, spec) def tag_note(auth_token, note_store, note, tag_guid) -> Note: if note.tagGuids is None: note.tagGuids = [tag_guid] else: note.tagGuids.append(tag_guid) return note_store.updateNote(auth_token, note) if __name__ == '__main__': main() 

结果

  1. [如预期]成功添加新的标签。
  2. [不按预期] note.updated修改。 不仅本地数据而且远程数据也反映了这种修改。 我已经检查过官方的networking应用程序。

额外01

即使我将tag_note()更改为:

 def tag_note(auth_token, note_store, note, tag_guid) -> Note: # intentionally doing nothing except updateNote() return note_store.updateNote(auth_token, note) 

结果保持不变。 看来不pipe哪个字段改变, updateNote() api调用都会修改note.updated字段。 这种行为是不一样的官方客户端。

额外02

我甚至试图用JavaScript API实现相同的逻辑。 结果保持不变。

难道我做错了什么? 或者是使用Evernote API这样做是不可能的?

尝试

 spec = NoteStore.NotesMetadataResultSpec() spec.includeTitle = True spec.includeTagGuids = True spec.includeUpdated = True 

这将在NoteStore.findNotesMetadata返回的注释中预先Note.updated NoteStore.findNotesMetadata 。 然后,使用updated的注释调用NoteStore.updateNote ,您将看到updated字段保留原始值。