如何访问笔记内容?调用getNoteContent遇EDAMNotFoundException求助
解决Evernote EDAMNotFoundException:传错GUID类型的问题
哦,这个坑我之前也踩过!你这里的问题核心太明确了——你把笔记本的GUID传给了需要单个笔记GUID的getNoteContent方法,难怪Evernote找不到对应的资源,抛出EDAMNotFoundException。
问题拆解
note_store.getNoteContent(developer_token, note_guid)的第二个参数要求的是单条笔记的唯一标识,但你传入的first_notebook.guid是整个笔记本的GUID,这俩完全不是一个东西。Evernote在笔记数据库里搜这个笔记本GUID,自然找不到对应的笔记,就报错了。
修正步骤
要导出笔记本里的所有笔记内容,得先拿到这个笔记本下的所有笔记GUID,再逐个调用getNoteContent:
获取笔记本内的笔记列表
用findNotesMetadata方法(比findNotes更轻量,适合批量获取笔记标识):from evernote.edam.notestore.ttypes import NoteFilter, NotesMetadataResultSpec # 创建过滤器,指定要获取的笔记本GUID note_filter = NoteFilter(notebookGuid=first_notebook.guid) # 获取笔记元数据(这里取前100条,可根据需要调整) notes_meta = note_store.findNotesMetadata( developer_token, note_filter, offset=0, # 分页偏移量 maxNotes=100, # 单次获取的最大笔记数 resultSpec=NotesMetadataResultSpec(includeTitle=True) # 按需获取额外字段 )遍历笔记GUID获取内容并保存
拿到笔记元数据后,逐个提取GUID调用getNoteContent:for note in notes_meta.notes: try: # 用笔记的GUID获取内容 content = note_store.getNoteContent(developer_token, note.guid) # 这里处理保存纯文本的逻辑,比如按标题命名文件 with open(f"{note.title}.txt", "w", encoding="utf-8") as f: # 注意:Evernote返回的content是HTML格式,需要转成纯文本 # 可以用BeautifulSoup之类的库解析提取文本 # from bs4 import BeautifulSoup # soup = BeautifulSoup(content, "html.parser") # f.write(soup.get_text()) f.write(content) # 若直接保存原始HTML,后续再处理转纯文本 except Exception as e: print(f"获取笔记 {note.title} 失败: {str(e)}")分页处理大量笔记
如果你的笔记本里超过100条笔记,需要循环调整offset参数,直到notes_meta.totalNotes等于已获取的数量为止。
快速验证方法
你可以先手动在Evernote客户端里找一条笔记的GUID(右键笔记→查看笔记信息),把这个GUID直接传给getNoteContent,如果能正常返回内容,就彻底确认是参数传错的问题了。
内容的提问来源于stack exchange,提问作者Eos2350
相关产品推荐
相关产品推荐

