やったこと
前回の下準備 で最低限の確認環境は出来たので、ノートの中身を取得してみる。
また、ノートの中身はHTMLっぽく記載されているが、中身のテキストだけ欲しいのでElementTreeを使って必要な部分だけ取得する方法を確認してみた。
おまじない部分
動作確認で使ったEDAMTEst.pyから必要な部分をそのまま利用する。
authToken = "your auth token"
evernoteHost = "sandbox.evernote.com"
userStoreUri = "https://" + evernoteHost + "/edam/user"
userStoreHttpClient = THttpClient.THttpClient(userStoreUri)
userStoreProtocol = TBinaryProtocol.TBinaryProtocol(userStoreHttpClient)
userStore = UserStore.Client(userStoreProtocol)
noteStoreUrl = userStore.getNoteStoreUrl(authToken)
noteStoreHttpClient = THttpClient.THttpClient(noteStoreUrl)
noteStoreProtocol = TBinaryProtocol.TBinaryProtocol(noteStoreHttpClient)
noteStore = NoteStore.Client(noteStoreProtocol)
ノート情報の取得
SDKのNoteFilterとNotesMetadataResultSpecを使ってノート名指定で検索してguidを取得する。
filter = NoteStore.NoteFilter()
filter.words = "TestNote01"
resultSpec = NoteStore.NotesMetadataResultSpec()
metaDataList = noteStore.findNotesMetadata(authToken, filter, 0, 100, resultSpec)
必要な部分だけ取得
ElementTreeを使ってノートの内容から文字列を拾って表示する。
for noteGuid in metaDataList.notes:
note = noteStore.getNote(authToken, noteGuid.guid, True, False, False, False)
print(" - ", note.title)
tree = ElementTree.parse(StringIO(note.content))
for div in tree.findall('.//div'):
text = ""
if div.text != None:
text = text + div.text
for child in div.findall('.//*'):
if child.text != None:
text = text + child.text
if child.tail != None:
text = text + child.tail
if div.tail != None:
text = text + div.tail
print(text)
雑記
Sandbox環境に普段使っているノートの内容をコピーして、上記の方法にて欲しい情報が取れそうなことは確認出来た。
あとで本番環境でちゃんと情報が取れるか確認してみよう。