python sdk开发_用印象笔记的Python SDK接口开发个自用小工具

其中分享了如何用印象笔记的开发者接口,用php开发一个收集金句的小工具。

今年换了Macbook,之前的环境和工具都没了,于是使用Python3从头写了一个同样的工具。

首先,因为印象笔记官方只提供Python2的SDK,所以去Github下载非官方的Python3 SDK。

点击绿色的Clone or Download按钮,然后选择Download ZIP。

解压后打开sample文件夹,然后再进入client文件夹,其中有个文件名叫EDAMTest.py

复制一份改名为yinxiang.py

在这个文件基础上进行修改,开发属于自己的工具,代码如下。

# coding = utf-8

import hashlib

import binascii

import evernote.edam.userstore.constants as UserStoreConstants

import evernote.edam.type.ttypes as Types

import os

import time

import re

from evernote.api.client import EvernoteClient

from evernote.edam.notestore.ttypes import NoteFilter

from evernote.edam.type.ttypes import NoteSortOrder

# auth_token申请地址:https://dev.yinxiang.com/doc/articles/dev_tokens.php

auth_token = "S=s3:U=1d3c1:E=16081a4df70:C=15929f3b2d0:P=1cd:A=en-devtoken:V=2:H=f540d0359f7e0d5c52235eb1c19c9885"

# 关掉沙盒模式

sandbox = False

# True代表使用的国内的印象笔记,而不是Evernote国际版

china = True

# 创建一个印象笔记client对象

client = EvernoteClient(token = auth_token, sandbox = sandbox, china = china)

# user_store = client.get_user_store()

# 通过client对象获取note_store对象

note_store = client.get_note_store()

# 下面代码为了获取所有的笔记本数量、笔记本名和对应的GUID,目前是注释状态,为了找到对应的笔记本GUID

# notebooks = note_store.listNotebooks()

# print("Found", len(notebooks), " notebooks:")

# for notebook in notebooks:

# print(notebook.name, notebook.guid)

# 生成笔记标题,格式例如:20171113阅读记录

daily_title = time.strftime('%Y%m%d',time.localtime()) + "阅读记录"

# 生成查找笔记的规则,使用笔记创建排序,指定笔记本GUID,使用标题名搜索

updated_filter = NoteFilter(order=NoteSortOrder.CREATED, notebookGuid="9e965c09-5045-4909-ad78-bf95a5bbc09d", words=daily_title)

# 偏移0

offset = 0

# 只取一条笔记

max_notes = 1

# 查找出符合条件的笔记

result_list = note_store.findNotes(updated_filter, offset, max_notes)

# 如何找到对应笔记则,在这个笔记里加一条金句,否则创建一条新笔记把金句加进去

if result_list.totalNotes:

# 获取找到笔记的GUID

note_guid = result_list.notes[0].guid

# 获取到对应笔记

note = note_store.getNote(note_guid,1,1,1,1)

# 使用正则匹配出笔记里的内容文本

match_res = re.search(r'(.*)', note.content, re.M|re.I)

# 如果能匹配到内容,则获取内容设置变量名为old_content,否则old_content为空

if match_res:

old_content = match_res.group(1)

else:

old_content = ""

# 读取Mac系统tmp文件夹下的evernote.txt里的内容,使用utf-8编码

newline = open('/tmp/evernote.txt','r', encoding='utf-8').read()

# 构建待更新的笔记内容

note.content = '<?xml version="1.0" encoding="UTF-8"?>'

note.content += 'http://xml.evernote.com/pub/enml2.dtd">'

note.content += '' + old_content +'
' + newline

note.content += ''

# 更新找到的旧笔记内容,把新的金句加进去。

res = note_store.updateNote(auth_token, note)

# 没有找到旧的笔记,则新建一个使用今天日期+阅读记录为名字的新笔记

else:

# 创建note对象

note = Types.Note()

# 设置笔记名称

note.title = daily_title

# 读取evenote.txt里的内容

words = open('/tmp/evernote.txt','r',encoding='utf-8').read() + '
'

# 构建note的内容,把句子加到标签中

note.content = '<?xml version="1.0" encoding="UTF-8"?>'

note.content += 'http://xml.evernote.com/pub/enml2.dtd">'

note.content += '' + words

note.content += ''

# 指定笔记本GUID

note.notebookGuid = "9e965c09-5045-4909-ad78-bf95a5bbc09d"

# 创建笔记

created_note = note_store.createNote(note)

# 打印创建好的笔记标题和GUID

print(note.title + "创建成功,GUID: ", created_note.guid)

在以上内容完成后,打开Automator工具,新建一个服务,然后点击资源库->实用工具->运行 Shell脚本(双击)

解释下第一行

export PYTHONPATH=/Users/joe/Documents/codelife/python/evernote_py3/lib

这句为了指定python3印象笔记的SDK环境变量,否则命令行可以运行,但在automator里不行,会提示找不到对应的evenote模块。

LANG=en_US.UTF-8 pbpaste -txt > /tmp/evernote.txt

请注意,LANG=en_US.UTF-8 很重要,否则会造成乱码。

pbpaste是Linux类系统自带的命令,可以读取剪贴板里的数据。然后使用 “> /tmp/evernote.txt” 在/tmp目录下输入生成一个叫做evernote.txt的文件。

整个脚本的意思是:

先把剪贴板里的内容存入临时文件夹下的evernote.txt文件中,然后用Python3主文件去执行yinxiang.py 这个文件写入印象笔记中。

对应的Python3主文件地址在命令行下使用 which python3查询。

整体代码如下,请对应修改自己的环境变量地址、python3文件地址和代码地址。

export PYTHONPATH=/Users/joe/Documents/codelife/python/evernote_py3/lib

LANG=en_US.UTF-8 pbpaste -txt > /tmp/evernote.txt & /Library/Frameworks/Python.framework/Versions/3.5/bin/python3 /Users/joe/Documents/codelife/python/evernote_py3/sample/client/yinxiang.py

然后保存文件名为save2evenote

然后打开“系统偏好设置”->“键盘”->“快捷键”->"服务"

这时你会发现有一个你刚才保存的服务会出现在这里,然后给它设置个快捷键,比如Ctrl+ALt+Command+V

至此,终于一切都搞定了,以后遇到好段落和句子,只需要选中按下Command+C,然后再按 Ctrl+ALt+Command+V 就自动贴到印象笔记了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值