文档章节

Evernote(印象笔记)备份本机剪切板数据

ksfzhaohui
 ksfzhaohui
发布于 2017/10/29 21:11
字数 998
阅读 158
收藏 4

前言
最近同学推荐了一款叫Ditto的软件,用来记录用户的剪贴板数据,包括:文字,图片,文件路径;windows系统本身只能保留最近的一次的剪贴板数据,所以有时候这个功能还是挺有用的;唯一不足的就是不能多端同步,因为一直用印象笔记,所以打算用印象笔记来备份本机剪切板数据,而且印象笔记也提供了强大的搜索功能。

准备
1.申请印象笔记 API Key
印象笔记本身提供了对外的api接口,我们可以申请API Key,地址:https://dev.yinxiang.com/doc/,获取API Key即可,如下图:

其中要注意的是应用的权限:基本权限和完全权限;基本权限包括创建笔记,列出笔记等;完全权限包括更新删除等功能。

申请完之后会获取一封邮件,如下图所示:

主要信息是API Key相关信息,以及告诉我们沙箱环境已经激活,生产环境还没有激活,占时可以在沙箱环境进行测试,并且沙箱环境需要重新创建帐号。

2.evernote-sdk下载
evernote提供了主流语言的SDK,java sdk对应的地址:https://github.com/evernote/evernote-sdk-java
src是sdk的源码,sample是相关demo,可以导入sample进行本地测试

3.用OAuth对印象笔记云 API进行认证
基于OAuth的认证流程由四部分组成:

生成一个临时的Token
请求用户认证
取回 Access Token
接下来的步骤,访问API

可以直接将sample中的oauth项目直接导入到Eclipse中,部署到tomcat中,直接访问:http://localhost:8080/EDAMWebTest/
对应的四个组成部分,界面中也有四个Action:

Actions
Get OAuth Request Token from Provider
Send user to get authorization
Get OAuth Access Token from Provider
List notebooks in account

分别点击,最终为了获取Access Token,会在页面显示User access token:xxxx

4.简单测试
有了access token,就可以用sample中的client进行简单的沙箱测试,client提供了EDAMDemo类,需要的AUTH_TOKEN就是刚刚获取的access token,复制进去就可以在沙箱环境(SANDBOX)进行简单的测试了。

收集剪贴板
java提供了类ClipboardOwner用来监听剪贴板数据的变动,剪贴板数据变动,就能直接获取剪贴板的数据,这样就简单了,直接将获取到的剪贴板数据通过Evernote Api将数据同步到印象笔记,部分代码如下:

if (clipboard.isDataFlavorAvailable(DataFlavor.stringFlavor)) {
    String text = (String) clipboard.getData(DataFlavor.stringFlavor);
    evernoteApi.createNoteText(text);
    clipboard.setContents(new StringSelection(text), this);
} else if (clipboard.isDataFlavorAvailable(DataFlavor.imageFlavor)) {
    final BufferedImage image = (BufferedImage) clipboard.getData(DataFlavor.imageFlavor);
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    ImageIO.write(image, "png", out);
    Transferable trans = new Transferable() {
               ......
    };
    evernoteApi.createNoteImage("IMAGE:" + new Date(), out.toByteArray());
    clipboard.setContents(trans, this);
} else if (clipboard.isDataFlavorAvailable(DataFlavor.javaFileListFlavor)) {
    @SuppressWarnings("unchecked")
    List<File> array = (List<File>) clipboard.getData(DataFlavor.javaFileListFlavor);
    for (File file : array) {
        evernoteApi.createNoteText(file.getPath());
    }
    clipboard.setContents(contents, this);
} else {
    logger.info("未知的类型");
}

代码中主要对三种剪贴板数据类型进行了处理,分别是:DataFlavor.stringFlavor,DataFlavor.imageFlavor和DataFlavor.javaFileListFlavor;对应的是文本,图片和文件,文件只同步了文件的具体路径。

请求激活生产环境
访问地址:https://dev.yinxiang.com/support/,点击“激活API Key”;要求填写具体信息,尽量详细点,然后提示你在2-3个工作日给你激活。

代码做简单修改就可以直接在生产环境运行了,主要修改部分代码:

EvernoteApi.Sandbox.class改成EvernoteApi.Yinxiang.class
EvernoteService.Sandbox改成EvernoteService.YINXIANG

改完之后接下来和在沙箱环境是类似的,也需要先进行授权,然后获取access token,为了方便,分别提供了在代码中提供了两个bat文件,用来处理这两步,针对每个用户只需要获取一次就可以了。

具体代码地址:
gitee:https://gitee.com/OutOfMemory/Clipboard
github:https://github.com/ksfzhaohui/Clipboard

运行效果
最后的运行效果,每次执行复制操作,在印象笔记里面就会出现复制的内容:

© 著作权归作者所有

共有 人打赏支持
ksfzhaohui

ksfzhaohui

粉丝 330
博文 134
码字总数 174699
作品 3
南京
高级程序员
私信 提问
Evernote 正式进入中文市场,新名字:印象笔记

跨平台的云笔记应用 Evernote 正式进军中文市场,并入乡随俗起了一个非常诗意的名字:印象笔记。 Evernote 此举进入中文市场可谓准备充分。这家来自美国加州的公司还为中文版印象笔记注册了一...

景德真人
2012/05/11
3.5K
40
7 款 Mac 工具,提高你的效率!

从 2014 到现在,为了提升自己的效率,尝试过上百款工具,最终留下了这 7 款,如果文章中提到的工具大家感兴趣的话,后续会介绍具体使用技巧。 Evernote 印象笔记(Evernote)用 2 年了,几乎每...

陈宇明
01/28
0
0
IFTTT Evernote 自动生成笔记

当我们看到某个博客博文不错,想自动更新到笔记下,以便方便离线随时查看,也不至于等要看的时候却忘记了网址。这个可以通过IFTTT+Evernote来实现。下面来说说如何实现: 1. 应用说明: IFTT...

小运
2013/12/20
0
1
印象笔记承认 Bug 导致 Mac 用户数据丢失

今天,印象笔记向用户发出邮件,确认 Mac 版印象笔记中存在严重的 Bug,导致小部分人的数据丢失。当用户使用 Mac 版印象笔记时,图像和其他附件可能会被删除,文本没有出现问题。 我们在一些...

凝小紫
2016/10/14
3.6K
15
值得珍藏:印象笔记Evernote中进行高级搜索的语法分享

印象笔记/Evernote中的搜索我觉得有三大特色: 使用专用语法进行高级搜索 高级版用户支持在pdf、图片中搜索文字 把搜索保存起来,加入快捷方式 今天我想把我搜集的关于在印象笔记Evernote里进...

yaotingxi
2015/10/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

jena RDF学习笔记

一、首先要了解RDF和Jena RDF的介绍: An Introduction to RDF and the Jena RDF API RDF及Jena RDF API介绍(中翻) 在Jena中,用于表示单个三元组的Java类是Statement。根据RDF规范,只有资...

孙幼凌
25分钟前
1
0
HTML5 240行代码实现粒子漩涡特效

效果 源码如下 <!doctype html><html><head><meta charset="utf-8"><title>H5,200行代码实现粒子漩涡特效</title><style>html,body{margin:0px;width:100%;height:100%......

lanyu96
32分钟前
1
0
fine report

FineReport xx no: 0941626c-5e513d196-f528-74a7c52d8e61

youngjdong
33分钟前
2
0
get right firefox version for your selenium

find the selenium location path find / -name selenium output: /usr/local/lib/python2.7/dist-packages/selenium get the "webdriver.xpi" file, the file is under "/usr/local/lib/pyt......

关上越
41分钟前
1
0
为小程序端添加一个session机制

我们做后台用户认证的时候一般会借助于session机制,非常方便,今天我们使用小程序的Storage机制自己实现一个session。 本文思路来自于前几日对微信wafer的源码阅读,感谢wafer所有代码编写者...

阿北2017
43分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部