二、Evernote API 的批量處理能力簡介

Evernote 提供了一系列支持批量操作的 API 方法,包括但不限于:

操作類型 對應 API 方法
查詢筆記 findNotes, findNotesMetadata
創建筆記 createNote(循環方式)
更新筆記 updateNote
刪除筆記 deleteNote
同步數據 getSyncChunk / getFilteredSyncChunk

雖然 Evernote 沒有直接提供 “一鍵多條” 批量接口,但通過高效循環 + 異常處理 + 延遲控制,完全可以實現穩定的批量操作邏輯。


三、環境準備與基礎連接

3.1 獲取開發者 Token

訪問 Evernote Developer

3.2 安裝 Python SDK

pip install evernote

初始化連接:

from evernote.api.client import EvernoteClient

client = EvernoteClient(token="your_token", sandbox=False)
note_store = client.get_note_store()

四、批量查詢筆記:findNotesMetadata

該方法適合批量獲取筆記的元信息:

from evernote.edam.notestore.ttypes import NotesMetadataResultSpec, NoteFilter

note_filter = NoteFilter()
spec = NotesMetadataResultSpec(includeTitle=True, includeCreated=True)
offset = 0; limit = 50; all_notes = []

while True:
    chunk = note_store.findNotesMetadata(note_filter, offset, limit, spec)
    if not chunk.notes:
        break
    all_notes.extend(chunk.notes)
    offset += limit

這樣可以獲取大量筆記的 guid、title、created 信息,為后續更新或刪除打下基礎。


五、批量創建筆記

from evernote.edam.type import ttypes as Types

def create_batch_notes(note_store, count):
    for i in range(count):
        note = Types.Note()
        note.title = f"項目筆記-{i+1}"
        note.content = """ < ?xml version="1.0" encoding="UTF-8"? >
        < !DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml2.dtd" >
        < en-note > 這是一條自動創建的筆記。< /en-note > """
        try:
            note_store.createNote(note)
        except Exception as e:
            print(f"第{i+1}條失?。簕e}")

建議一次性創建數量控制在 10-20 條之間,并設置延時防止觸發限流。


六、批量更新筆記內容和標簽

for note_meta in all_notes:
    note = note_store.getNote(note_meta.guid, True, False, False, False)
    note.title = f"[更新] {note.title}"
    note.tagNames = (note.tagNames or []) + ["已歸檔"]
    note_store.updateNote(note)

可同時更新:

?? 注意:更新 content 時需嚴格遵循 ENML 格式,否則會拋出 EDAMUserException。


七、批量刪除筆記

for note_meta in all_notes:
    try:
        note_store.deleteNote(note_meta.guid)
        print(f"已刪除筆記:{note_meta.guid}")
    except Exception as e:
        print(f"刪除失敗:{e}")

刪除操作不可恢復,建議配合 GUI 工具或數據庫記錄操作日志,以防誤刪。


八、通過 getSyncChunk 實現大規模筆記同步

適合同步多賬戶、多個筆記本的筆記變更記錄:

token = ""
while True:
    chunk = note_store.getSyncChunk(token, 1000, True)
    for note in chunk.notes:
        # 保存本地備份或執行操作
        pass
    if not chunk.notes:
        break
    token = chunk.chunkHighUSN

支持以下內容的批量同步:


九、異常處理與限流策略

Evernote 對頻繁調用接口的客戶端會返回 EDAMSystemExceptionEDAMRateLimitException。建議添加指數退避機制:

import time

def safe_update(note):
    retry = 0
    while retry < 5:
        try:
            note_store.updateNote(note)
            return
        except EDAMSystemException as e:
            if e.errorCode == 19:  # RATE_LIMIT_REACHED
                wait = 2 ** retry
                time.sleep(wait)
                retry += 1

十、批量操作最佳實踐與優化建議

項目 推薦做法
限流控制 每次操作間加 1-2 秒延遲
批量上限 每批處理 10-20 條記錄
錯誤記錄 日志記錄失敗項,便于重試
并發處理 使用 ThreadPoolExecutor 異步執行
數據備份 操作前導出 GUID 與內容存檔
操作確認機制 設置 dry_run=True 模式先模擬操作

十一、實際應用場景


十二、總結與擴展方向

通過 Evernote API,開發者可以輕松實現以下筆記批量處理:

下一步推薦擴展:

上一篇:

使用MCP服務在Cursor中集成高德地圖API教程
最后一篇
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費