import thrift.protocol.TBinaryProtocol
import thrift.transport.THttpClient
import evernote.edam.userstore.UserStore
import evernote.edam.userstore.constants
import evernote.edam.notestore.NoteStore
import evernote.edam.type.ttypes
import evernote.edam.error.ttypes
userStore=evernote.edam.userstore.UserStore.Client(
thrift.protocol.TBinaryProtocol.TBinaryProtocol(
thrift.transport.THttpClient.THttpClient(
"https://sandbox.evernote.com/edam/user")))
# 本番サーバーなら https://www.evernote.com/edam/user
success=userStore.checkVersion("Evernote Test/0.0.0; Windows/XP SP3",
evernote.edam.userstore.constants.EDAM_VERSION_MAJOR,
evernote.edam.userstore.constants.EDAM_VERSION_MINOR)
# 第一引数はアプリケーション名を UserAgent 的に書くのが本当
# ユーザー名とパスワードと、発行された API キーを指定
authResult=self.userStore.authenticate(
username,password,consumerKey,consumerSecret)
noteStore=evernote.edam.notestore.NoteStore.Client(
thrift.protocol.TBinaryProtocol.TBinaryProtocol(
thrift.transport.THttpClient.THttpClient(
"http://sandbox.evernote.com/edam/note/"+authResult.user.shardId)))
# ここも本番サーバーなら https://www.evernote.com/edam/note/
authToken=authResult.authenticationToken
filter=evernote.edam.notestore.NoteStore.NoteFilter() noteList=noteStore.findNotes(authToken,filter,0,10) # noteList にノート 10 件を取得
expiredTime=time.time()+(authResult.expiration/1000.0-authResult.currentTime/1000.0) # expiredTime<time.time() なら認証し直して、authenticationToken を取得し直すべし
filter=evernote.edam.notestore.NoteStore.NoteFilter()
filter.order=evernote.edam.type.ttypes.NoteSortOrder.UPDATED
# 検索条件として、検索語なし、更新日順ソートを指定
noteList=noteStore.findNotes(authToken,filter,0,10)
# noteList にノート 10 件を取得
# ノートごとに処理
for note in noteList.notes:
title=note.title.decode("utf_8") # ノートタイトルを取得
print(title)
guid=noteList.notes[0].guid note=noteStore.getNote(authToken,guid,True,True,True,True) # note.content で本文が読み取れる
note=evernote.edam.type.ttypes.Note()
note.title=u"ノートタイトル".encode("utf_8")
defaultNotebook=noteStore.getDefaultNotebook(authToken)
# デフォルトのノートブックを取得して、その GUID を指定する
note.notebookGuid=defaultNotebook.guid
content=u"<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
content=content+u"<!DOCTYPE en-note SYSTEM \"http://xml.evernote.com/pub/enml.dtd\">"
content=content+u"<en-note>"
content=content+u"ノートの本文"
content=content+u"</en-note>"
note.content=content.encode("utf_8")
# 本文の指定内容は次章を参照
note.created=int(time.time()*1000)
note.updated=note.created
# ノートの作成日と更新日の設定を忘れずに
noteStore.createNote(authToken,note)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml2.dtd">
<en-note>
<b>ノートの本文</b>
</en-note>
| フォーマット | Web サイトから編集した時 | Windows クライアント 3.0 から編集した時 |
|---|---|---|
| 太字 | <strong> | <b> |
| イタリック | <em> | <i> |
| 下線 | <span style="text-decoration: underline;"> | <u> |
| 取り消し線 | <span style="text-decoration: line-through;"> | <s> |
| 下付き文字 | <sub> | 指定できず |
| 上付き文字 | <sup> | 指定できず |
| 左揃え | <div style="text-align: left;"> | <div style="text-align: left;"> |
| 中央揃え | <div style="text-align: center;"> | <div style="text-align: center;"> |
| 右揃え | <div style="text-align: right;"> | <div style="text-align: right;"> |
| 両端揃え | 指定できず | <div style="text-align: justify;"> |
| 箇条書きリスト | <ul><li> | <ul><li> |
| 番号付きリスト | <ol><li> | <ol><li> |
| インテンド | <div style="padding-left: 30px;"> | <blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"> |
| 水平線 | <hr/> | <hr/> |
戻る