解决问题的过程,本身也是个学习的过程。
昨天突然发现七牛OSS临时域名失效,然后导致我为知笔记里头前些年写的文章中的图片全部都变成了叉叉,郁闷得不行。
今天中午吃饭的时候突然想,应该想办法把七牛空间中的所有图片下载下来,再找个新的靠谱的存储空间上传上去,然后写个小程序将所有文章中的链接替换成新的图床地址。
搜索了一遍终于有了发现,经过半个小时的摸索,事情基本上解决了一半,5000多张图片基本上应该可以搞到手。东西到手了,基本上事情就好办了,最不济就用人工一张张的替换嘛。
经过在七牛官网搜索发现一个小工具qrsctl
,利用这玩意儿的几条命令再配合python实现图片下载。
登陆七牛
进入cmd,利用cd
命令进入到qrsctl的当前路径,输入命令:
./qrsctl login 七牛用户名 密码
列出当前所有的空间
利用命令:
./qrsctl buckets
输出结果:
跟我的七牛空间一致,正好有三个空间faee0、blog、image。
我的失效文件都在faee0空间里头。
将所有的图片文件名列表导出来
利用命令:
./qrsctl listprefix faee0 "">1.txt
文件被保存到当前文件路径下的文本文件1.txt中。如下图所示,去掉文件中的第一行数据。
下载文件
利用命令:
./qrsctl get faee0 “空间中的文件名” “保存到本地的文件路径“
准备代码批量下载
代码在linux下写的,逻辑很简单,读取文本文件中的文件名,然后执行外部命令将图片下载下来。
# -*- coding: UTF-8 -*-
import os
def loadData(filepath):
f = open(filepath, 'r')
sourceInLine = f.readlines()
dataset = []
for line in sourceInLine:
temp1 = line.strip('\n')
dataset.append(temp1)
return dataset
# 登录七牛,注意替换用户名和密码
os.system('/home/hk/Downloads/pic/qrsctl login username userpassword')
# 将空间faee0中的文件路径写入到文本文件faee0.txt中
os.system('/home/hk/Downloads/pic/qrsctl listprefix faee0 "" > faee0.txt')
infile = '/home/hk/Downloads/pic/faee0.txt'
# 创建文件夹faee0,将下载的图片放到文件夹faee0中
os.system('mkdir faee0')
filelist = loadData(infile)
for file in filelist:
#防止文件路径中有斜杠,有的话就换成下划线
if(file.find('/') > 0)
file = file.replace('/','_')
os.system('/home/hk/Downloads/pic/qrsctl get faee0 "' + file + '" ./faee0/' + file)
然后就等着收图片吧。看网速好坏,如果图片很大而网速很慢的话,图片可能会下载失败。
在大企鹅买了个cos存储,感觉大企鹅应该不会像七牛那么小家子气吧。
最近有点儿忙,迷上了深度神经网络,准备拿这玩意儿搞CFD优化。
联系客服