我知道如果我Evernote Python API get a special API key提供了一个名为getNote
的方法。
但是,对于我想要的应用程序来说,这一切都太过分了:使用Python对我自己的个人Evernotes进行文本分析。即使使用API看起来也有点矫枉过正,因为它更适合应用程序开发人员。
是否有更简单的方法通过注释名称在Python中访问我自己的个人Evernotes并阅读他们的内容?
答案 0 :(得分:7)
您提到的特殊API密钥是针对OAuth的,对于仅访问您自己的帐户的某些应用来说,这样做太过分了。为此目的,Evernote有一个developer token。
下面是一个简单的例子,说明如何获得带标题的笔记。
import evernote.edam.type.ttypes as Types
import evernote.edam.notestore.ttypes as NoteStore
from evernote.api.client import EvernoteClient
auth_token = "your developer token"
client = EvernoteClient(token=auth_token, sandbox=True)
note_store = client.get_note_store()
note_filter = NoteStore.NoteFilter()
note_filter.words = 'intitle:"test"'
notes_metadata_result_spec = NoteStore.NotesMetadataResultSpec()
notes_metadata_list = note_store.findNotesMetadata(note_filter, 0, 1, notes_metadata_result_spec)
note_guid = notes_metadata_list.notes[0].guid
note = note_store.getNote(note_guid, True, False, False, False)
答案 1 :(得分:1)
我能看到的最简单的解决方案是在Evernote内容文件夹中搜索每个笔记的唯一内容。它在这里找到:
/Users/[system_username]/Library/Application Support/Evernote/accounts/Evernote/[evernote_username]/content/
备注的标题未列在内容文件夹中,因此您必须手动将它们映射到其关联的文件夹。例如,标题为'Monday'
到'Sunday'
的注释可以映射到字典中,如下所示:
day = {
'Monday': 'p1647',
'Tuesday': 'p1648',
'Wednesday': 'p1622',
'Thursday': 'p1620',
'Friday': 'p1641',
'Saturday': 'p1644',
'Sunday': 'p1635',
}
Evernotes的内容存储在各自content.html
文件夹中的p\d+
个文件中。它们可以通过以下函数作为字符串访问:
import os
def getHTML(note_folder):
system_username = 'your_username'
evernote_username = 'your_username'
base_dir = '/Users/'+system_username+'/Library/Application Support/Evernote/accounts/Evernote/'+evernote_username+'/content/'
f = open(os.path.join(base_dir,note_folder,'content.html'), 'r')
return f.read()
您可以使用BeautifulSoup解析HTML。这将以简单的注释打印所有行:
from BeautifulSoup import BeautifulSoup
html = getHTML(day['Monday'])
soup = BeautifulSoup(html)
divs = soup.findAll('div')
for div in divs:
if len(div.contents) == 1:
s = div.contents[0]
if div.br != None:
s = ''
print s