2017-05-31 92 views
0

这是我列出笔记本和笔记的代码。我现在试图列出与每个音符关联的标签。有人可以帮忙吗?谢谢。印象笔记Python API - 如何获取笔记的标签列表?

from evernote.api.client import EvernoteClient 
from evernote.edam.notestore import NoteStore 

dev_token = "dev_token" 
client = EvernoteClient(token=dev_token) 
userStore = client.get_user_store() 

user = userStore.getUser() 
print 
print user.username 
print 

noteStore = client.get_note_store() 
notebooks = noteStore.listNotebooks() 

for n in notebooks: 
    print "Notebook = " + n.name + " GUID = " + n.guid 

    filter = NoteStore.NoteFilter() 
    filter.ascending = False 
    filter.notebookGuid=n.guid 

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

    ourNoteList = noteStore.findNotesMetadata(filter, 0, 25, spec) 
    for note in ourNoteList.notes: 
     print "%s :: %s" % (note.title, note.guid) 
    print 
+0

欢迎来到SO。请阅读[如何问] (http://stackoverflow.com/help/how-to-ask),并按照指导方针来改善您的问题,并提供足够的信息来描述和重现您的问题。 – thewaywewere

回答

0

如果调用NoteStore#findNotesMetadataspec.includeTagGuids = True,返回NoteMetadata将包含与笔记相关标签GUID的列表。

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

notesMetadataList = noteStore.findNotesMetadata(filter, 0, 25, spec) 
for noteMetadata in notesMetadataList.notes: 
    for tagGuid in noteMetadata.tagGuids 
     tag = noteStore.getTag(tagGuid) 

或者,如果你只是想的标签名称,你可以使用NoteStore#getNoteTagNames

notesMetadataList = noteStore.findNotesMetadata(filter, 0, 25, spec) 
for noteMetadata in notesMetadataList.notes: 
    tagNames = noteStore.getNoteTagNames(noteMetadata.guid) 

但它会更好调用NoteStore#listTags在第一和创建标签的GUID字典来标记,这样你就不必在每次循环时间打电话NoteStore#getTag

+0

这很完美,谢谢。在沙箱环境中工作。然后我得到了一个用于生产的开发人员令牌,现在它引发了一堆异常。您是否知道在使用生产令牌推送代码时需要做什么不同? – eenewbie

+0

想通了。必须使用'client = EvernoteClient(token = dev_token,sandbox = False)' – eenewbie