有朋友问我每天哪里找时间写这么多文章。

作为一个程序员,当然要善于利用各种工具提高自己做事情的效率了。如果没有现成的工具,就得自己造。

我写文章一般是在云笔记里编辑,完成之后直接复制粘贴到自媒体平台。我有一个需求,能够把云笔记里包含的所有图片批量下载到本地某个文件夹里,这样我就可以批量上传文件到自媒体平台,省去了手工一张张上传的麻烦。

我曾经写过一篇文章:使用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

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

Java实现的有道云笔记图片批量下载工具的更多相关文章

  1. 分享一款非常好用的Fatkun图片批量下载工具

    Fatkun图片批量下载 相信大家一定遇到过有着大量精美图片的网页,譬如美女照片.各种壁纸.设计素材.甚至是1024套图等等,但常常几十上百张的图要一张张手工去点击下载实在能让人抓狂!小编的工作中也常 ...

  2. python爬虫-图片批量下载

    # 爬起摄图网的图片批量下载# coding:utf-8 import requests from bs4 import BeautifulSoup from scipy.misc import im ...

  3. 【pyhon】nvshens按目录图片批量下载爬虫1.00(多线程版)

    # nvshens按目录图片批量下载爬虫1.00(多线程版) from bs4 import BeautifulSoup import requests import datetime import ...

  4. 【pyhon】nvshens图片批量下载爬虫1.01

    # nvshens图片批量下载爬虫1.01 # 原先版本在遇到网络故障时回下载不全,这回更改了模式使得下载不成就重新下载,直到全部下载完毕 from bs4 import BeautifulSoup ...

  5. 【pyhon】nvshens图片批量下载爬虫

    代码: # nvshens图片批量下载爬虫 from bs4 import BeautifulSoup import requests import time import urllib.reques ...

  6. Node.js abaike图片批量下载爬虫1.02

    //====================================================== // abaike图片批量下载爬虫1.02 // 用最近的断点续传框架改写原有1.01 ...

  7. Node.js nvshens图片批量下载爬虫1.01

    //====================================================== // nvshens图片批量下载爬虫1.01 // 用最近的断点续传框架改写原有1.0 ...

  8. Node.js meitulu图片批量下载爬虫1.051

    原有1.05版程序没有断点续传模式,现在在最近程序基础上改写一版1.051. //====================================================== // m ...

  9. Node.js mzitu图片批量下载爬虫1.00

    又攻下一座山头. //====================================================== // mzitu图片批量下载爬虫1.00 // 2017年11月19 ...

随机推荐

  1. Java中break、continue及标签等跳转语句的使用[下]

    作为上一篇使用for循环演示的跳转,这一篇将使用while.相比较来说,while比for循环更简单.代码如下: public class LabeledWhile { public static v ...

  2. Firebird 用查询结果集更新数据,merge

    Merge语法: MERGE INTO target [[AS] target-alias ] USING source [[AS] source-alias ] ON join-condition ...

  3. 如何学习OpenStack

    转自:http://www.chenshake.com/learn-how-openstack/ 如何学习OpenStack 由于工作的关系,也招收实习生,希望可以通过实习生的培养,让他们对Opens ...

  4. Telerik 控件本地化

    一共四种方式: Localization using built-in resources Resource keys Localization using ResourceManager Local ...

  5. Java - 关于扩展线程安全类的一些思考

    重用可以节省我们进行开发和测试(测试比我们自己测严谨地多)的时间和其他各种成本. 但是,对一个线程安全类进行扩展的时候就需要思考一些问题. 比如我们熟知的线程安全类Vector,该类中对所有的公有方法 ...

  6. C#在不同平台下DLL的引用问题

    缘起 很多时候,我们需要引用在不同平台下的DLL,32位(X86)和64位(X64).如果平台错误,在C#中会引发BadImageFormatException异常. 解决思路 我们同时不能添加不同平 ...

  7. Java基础(十)数据结构

    一.数据结构 1.数据结构的定义 数据结构是计算机存储,组织数据的方式.数据结构是指相互之间存在一种或多种特定关系的数据元素的集合.通常情况下,精心选择的数据结构可以带来更高的运行或存储效率.数据结构 ...

  8. ORA-12541:TNS-12560:ORA-12518:ORA-28040:ORA-01017

    说明 环境(参考): Oracle 12c SQL Developer/Navicat Premium(64位)连接数据库 后续出现的错误代码: ORA-12541: no listener TNS- ...

  9. CSS 盒子模型及 float 和 position

    ## CSS和模型 ##CSS盒模型本质上是一个盒子,封装周围的 HTML 元素,包括 外边距(marign),边框(border),填充(padding),内容物(content) 盒子模型的类型: ...

  10. iview中render函数监听事件

    iview的table中添加datepicker在组件中嵌套组件,如果需要监听子组件的自定义事件,应该使用render中的on:{ 'on-change' () => { console.log ...