使用ABAP和 Java 两种编程语言批量下载有道云笔记中的图片
Jerry喜欢用有道云笔记这款软件做自己的知识管理和知识体系的构建。
当您看到一篇好的有道云笔记分享时,可能会想将其精美的图片下载到本地。作为程序猿,我们不会去手动一张张下载。写个程序帮我们自动下载吧。
比如这个笔记:http://note.youdao.com/noteshare?id=62840e43da1f6b71cdbedb3b7723f7fa
打开之后是这样的:
我们需要研究如何知道一个有道云分享笔记里究竟包含了哪些图片。
我们可以使用有道云笔记提供的这个Restful API:http://note.youdao.com/yws/public/note/<note_guid>?keyfrom=public
我们把一个分享笔记的guid传入上述的url,执行一个http调用看看结果。例如我文章开头的例子,那个分享笔记的guid是62840e43da1f6b71cdbedb3b7723f7fa,那么完整的Restful API链接为:http://note.youdao.com/yws/public/note/62840e43da1f6b71cdbedb3b7723f7fa?keyfrom=public
输入Chrome浏览器敲回车,看看这个Restful API返回的内容:
从上图不难发现整个笔记包含的图片文件,其地址包含在HTML源代码的src开头的img标签页的src属性里。所以只需要用一个循环,遍历这些img标签,下载src里指向的图片即可。
最后就是写代码实现上述功能了。写好的ABAP程序如下。
输入有道云分享笔记的GUID和本地存储文件夹名称,执行。
稍等片刻,所有的图片就被ABAP程序自动下载到本地指定文件夹了。节省了程序猿大量宝贵的时间。
这个SAP ABAP程序的完整代码在我的github里:
https://github.com/i042416/KnowlegeRepository/tree/master/ABAP/youdao_note_download
下面是 Java 版本的实现
有朋友问我每天哪里找时间写这么多文章。
作为一个程序员,当然要善于利用各种工具提高自己做事情的效率了。如果没有现成的工具,就得自己造。
我写文章一般是在云笔记里编辑,完成之后直接复制粘贴到自媒体平台。我有一个需求,能够把云笔记里包含的所有图片批量下载到本地某个文件夹里,这样我就可以批量上传文件到自媒体平台,省去了手工一张张上传的麻烦。
我曾经写过一篇文章:使用ABAP批量下载有道云笔记中的图片,然而ABAP在程序员中间不是很普及,于是我又写了一个Java版本的。
使用方式很简单。
我们知道每篇有道云笔记都有一个独一无二的uuid作为标识。把这个uuid复制粘贴,
把拷贝的值放到第82行main行数的guid变量里,直接执行,可以看到输出,首先我的代码会判断这个笔记包含了多少张图片,然后会以多线程的方式去并行下载图片。
最后所有下载好的图片都存储在一个和笔记同名的文件夹下面:
多线程下载的核心代码如下,我使用了JDK里提供的ExecutorService:
private static void start(List<DownloadTask> task){
if( task.isEmpty()){
System.out.println("No picture to download!");
return;
}
System.out.println("Total pic to be downloaded: " + task.size());
ExecutorService executor = Executors.newFixedThreadPool(10);
for( int i = 0; i < task.size(); i++){
PictureDownloader cc = new PictureDownloader(task.get(i));
executor.execute(cc);
}
executor.shutdown();
while (!executor.isTerminated()) {
}
System.out.println("download finished");
}
完整代码在我的github上,请随意下载使用:
https://github.com/i042416/JavaTwoPlusTwoEquals5/tree/master/src/youdao
- 点赞
- 收藏
- 关注作者
评论(0)