- Settings:
Page
Normal
Plain layout without fancy styles
Font
Normal
Large fonts
Very large fonts
Colour
Normal
Restful colour scheme
Light text on a dark background

Note: user account creation on this site has been disabled.

Programming, speculative fiction, science, technology
Powered by Drupal, an open source content management system
Scope
Include Children
If you select a term with children (sub-terms), do you want those child terms automatically included in the search? This requires that "Items containing" be "any."
Categories

Everything in the Events vocabulary

"Events" is used for: Convention Post, Page, Story.

People mentioned in the articles

"People" is used for: Page, Convention Post, Story.

Themes mentioned in the article

"Themes" is used for: Page, Convention Post, Story.
Skip to top of page

Getting all the notes in a notebook with Evernote API and Python

My impression of Evernote API documentation is that it is not very friendly to Python beginners, and rather short on examples. So I wrote this document on how to write a simple script that will get notes from a notebook.

Here is the idea. To get a note, you need to use noteStore.getNote() method. It requires the note's Guid. How would you get it? You get it from the notes' metadata by calling noteStore.findNotesMetadata() and passing it a filter that will select all the notes you need.

For example, maybe you need all the notes in a particular notebook. For that, you should create a NoteFilter object that contains this notebook's Guid.

How would you get a notebook's Guid? Good question. I admit I haven't looked very hard in Evernote API, since retrieving the notes is only a one-time setup step for a much bigger project, so I was satisfied with a quick-and-dirty script. The easiest thing for me seemed to print out the names of all the notebooks, then figure out that the notebook I needed had index 1 in that array. Thus, I passed to the NoteFilter the Guid of notebooks[1].

noteFilter = NoteStore.NoteFilter(notebookGuid=notebooks[1].guid)

Which means that before my note-getting script I ran this preliminary script:

from evernote.api.client import EvernoteClient
import evernote.edam.type.ttypes as Types
from evernote.edam.notestore import NoteStore

dev_token = "xxxx" #this should be your dev_token
client = EvernoteClient(token=dev_token)
noteStore = client.get_note_store()
notebooks = noteStore.listNotebooks()

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

And now that you know the index of the notebook you want to retrieve -- let's call it ind, here is the main script. It gets all the notes from a notebook, and writes them to files.

from evernote.api.client import EvernoteClient
import evernote.edam.type.ttypes as Types
from evernote.edam.notestore import NoteStore

dev_token = "xxxx" #this should be your dev_token
client = EvernoteClient(token=dev_token)
noteStore = client.get_note_store()
notebooks = noteStore.listNotebooks()

# The ind here is the index of the notebook you need in the notebooks list.

noteFilter = NoteStore.NoteFilter(notebookGuid=notebooks[ind].guid)
spec = NoteStore.NotesMetadataResultSpec()

# We are starting with the first note (offset=0) and getting 25 notes
# (or rather, their metadata).
# You should set these numbers appropriately for your needs.

nmdList = noteStore.findNotesMetadata(noteFilter, 0, 25, spec)

for n in nmdList.notes:
    # The first boolean argument is withContent=True. I am passing the rest as False,
    # because my notes don't have resources, such as images. You should, of course,
    # find out which of these arguments, if any, should be set to True.

    note = noteStore.getNote(n.guid, True, False, False, False)

    # The file name of the note will be its Guid with extension .txt
    fileName = 'C:\\path\\to\\your\\notes\\' + str(n.guid) + '.txt'
    f = open(fileName, 'w')
    f.write(note.content)
    f.close()