LoginSignup
2
3

More than 5 years have passed since last update.

PythonからEvernoteにアクセスする下準備(その2)

Posted at

やったこと

前回の下準備 で最低限の確認環境は出来たので、ノートの中身を取得してみる。

また、ノートの中身は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環境に普段使っているノートの内容をコピーして、上記の方法にて欲しい情報が取れそうなことは確認出来た。
あとで本番環境でちゃんと情報が取れるか確認してみよう。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3