TMaize Blog

批量下载QQ空间相册

最近需要把 QQ 空间相册里的照片迁移出来结果发现不支持批量下载,网上的一些工具需要登陆自己的自己的 QQ 又感觉不太可靠

通过比较发现缩略图的 url 和原图的 url 之间有关联,所以就自己写了个小工具用于半自动地下载相册。下面是缩略图和原图的转换规则

var src = images[i].src
src = src.replace(/\/\/.*\.photo/, '//r.photo')
src = src.replace(/\/m\//, '/r/')
src = src.replace(/null&.*$/, '')

然后就写了个油猴脚本用来批量获取原始地址,然后再粘贴到迅雷下载就可以了,油猴脚本地址如下

qq 空间相册批量下载

使用方式也很简单,安装完毕后再打开相册就会多一个按钮出来,如下图所示

01

滚动当前页到底部,让异步加载的相册全部加载出来,然后再点击“下载当页”,本页的图片原始 url 就会拷贝到剪切板了,一般一页最大有 98 张,然后打开迅雷粘贴进去就行了。然后再点击下一页执行同样的操作,一定要往下滚动把所异步的内容加载出来再点击“下载当页”

最后为了方便命名,也可以把所有链接放到一个文件里使用代码进行批量下载,下面是我用 Java 写的一个批量下载的小工具

InputStream ins = Download.class.getClassLoader().getResourceAsStream("urls.txt");
Scanner scanner = new Scanner(ins);

Map<String, String> header = new HashMap<String, String>();
header.put("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36");
header.put("Accept", "image/webp,image/apng,image/*,*/*;q=0.8");
header.put("Accept-Encoding", "gzip, deflate");
header.put("Accept-Language", "zh-CN,zh;q=0.9");

int i = 0;
while (scanner.hasNextLine()) {
    i++;
    String url = scanner.nextLine();
    Requests.get(url).headers(header).send().writeToFile("D:/download/" + i + ".jpg");
    System.out.println(i);
}
scanner.close();
ins.close();