博客图床迁移
图床迁移
-
自从七牛云的测试域名挂了之后,我就把博客的事情抛之脑后,感觉迁图片好麻烦,导致我这个懒癌晚期患者一直无动于衷。直到研究生稀里糊涂地读到了找工作的时候,才猛地想起自己还有个没什么卵用的博客。既然想起来了还是想想办法搞定这个问题。
-
首先是从七牛云上把我的图片下载下来,根据CSDN一些大佬的代码,尝试用七牛云提供的
qrsctl
对存储对象进行下载,不过发现基本9成的数据都下载不了,但是url明明可以访问到,无奈只能用script -f result.txt
把里面的url信息都输入到一个文本文件里,大概长这个样子:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15Download fail: open ./imgs/image/0001.jpg20: no such file or directory
RequestId: 8mEe0v1YfsFmXwEA
image/0002.jpg
INFO: Fetching http://iovip.qbox.me/file/bRxUIFIhkLZ3jkrjALChKKoncigUNACPAwoAACePKOfN2ALizeYo580TSNHb9WA2FnCJsp_mKOfN5ijnzeYo582JGXDwWyuOjwCdMIO9soSa3HC7pIuPj4-xpYqPj4-Pjw9JEA9Pj4-PverxdlH9ugybzFtZBxzhVadkWMrm4u7o6qDl_-robadoQmmnaEJpp2hCaadoQg== ...
Download fail: open ./imgs/image/0002.jpg20: no such file or directory
RequestId: 8mEe0gZZfsFmXwEA
image/0003.jpg
INFO: Fetching http://iovip.qbox.me/file/thG3zNBa-HCKPmbkv0Y6bUEIqiAUNACIAwoAACeIAaT5FQah-eEBpPkUYZLv9WA2Fneg8avhAaT54QGk-eEBpPmOHnf3TfGJiIFrMafavoOdgiZt-YOIiIh8j42IiIiIiEBlwfRIiIiIpicLe09-rdyvDM-unhDePTLLeCzh5env7afi-O3vbYkscWmJLHFpiSxxaYkscQ== ...
Download fail: open ./imgs/image/0003.jpg20: no such file or directory
RequestId: 8mEe0hBZfsFmXwEA
image/0004.jpg
-
可以看到基本上都是下载失败,接下来就是整个正则表达式把里面的url内容爬出来,写的还是挺暴力的,嗨,反正能用就行
1
2
3
4
5
6
7
8
9
10
11
12
13crawl_list = []
with open(result_path, 'r') as f:
s = f.read()
result = re.findall("(.*?\.\w{3}).*?(http.*?\s\.\.\.)", s, re.S)
for r in result:
filename = r[0].strip().split('/')[-1]
tmp = r[0].strip()
if "open" in tmp:
filename = tmp.split("open ")[1]
else:
filename = tmp
url = r[1].strip().split(' ...')[0]
crawl_list.append((filename, url)) -
接下来就是挨个请求下载了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:80.0) Gecko/20100101 Firefox/80.0",
}
def request_download(file_name, file_url):
r = requests.get(file_url, headers=headers, stream=True)
with open(file_name, 'wb') as fp:
# fp.write(r.content)
for chunk in r.iter_content(chunk_size=512):
if chunk:
fp.write(chunk)
for filename, url in tqdm(crawl_list):
dirname = os.path.dirname(filename)
if len(dirname) > 0 and not os.path.exists(dirname):
os.makedirs(dirname)
if len(dirname) == 0:
filename = os.path.join(download_path, filename)
# print(os.path.join(download_path, filename))
request_download(filename, url) -
成功下载之后,我打开了我尘封已久的笔记本,打开了熟悉又陌生的hexo文件夹,惊奇的发现原来我以前会把图片本地存放一份。。。不知道该哭还是该笑,以上一顿操作基本等于打白工。
-
接下来就是注册阿里云,申请对象存储,再把本地的图片上传一份,懒癌患者选择使用阿里云SDK(还是阿里爸爸牛逼)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22import oss2
import os
from tqdm import tqdm
oss_dst_dir = ""
oss_src_dir = ""
# 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
auth = oss2.Auth('你的Key', '你的Password')
# Endpoint以杭州为例,其它Region请按实际情况填写。
bucket = oss2.Bucket(auth, 'http://oss-cn-beijing.aliyuncs.com', '你的名字') #冷笑话
# <yourObjectName>上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。
# <yourLocalFile>由本地文件路径加文件名包括后缀组成,例如/users/local/myfile.txt。
# bucket.put_object_from_file('<yourObjectName>', '<yourLocalFile>')
file_list = []
for f in tqdm(os.listdir(oss_src_dir)):
dir_path = os.path.join(oss_src_dir, f)
if os.path.isdir(dir_path):
for file_path in os.listdir(dir_path):
if "DS_Store" not in file_path:
bucket.put_object_from_file(os.path.join(f, file_path), os.path.join(dir_path, file_path)) -
接下来就是把以前博文的外链进行替换了,以防万一我复制了一份
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19import re
import os
from tqdm import tqdm
copy_dir = ""
md_dir = ""
parent_url = "https://obser.oss-cn-beijing.aliyuncs.com/"
flag = False
for file in tqdm(os.listdir(md_dir)):
if file.endswith(".md"):
flag = True
with open(os.path.join(md_dir, file), "r") as f:
with open(os.path.join(copy_dir, file), "w") as copy_f:
for line in f:
res = re.findall("!\[.*?\]\((.*?)\)", line, re.S)
filename = file.split('.md')[0]
if len(res) > 0:
file_url = os.path.join(parent_url, filename, res[0].split('/')[-1])
line = re.sub("!\[.*?\]\((.*?)\)", "![aliyun-obser](" + file_url + ")", line)
copy_f.write(line) -
最后大功告成!我的没什么卵用的博客又能看到图片了,希望这是最后一次迁图床了
-
最近找工作压力还是蛮大的,研究生这几年的读后感也可以总结总结了,不过就不在这里说了吧,之后把研究生的一些论文阅读笔记和一些学习笔记上传一下吧,虽然不知道会是啥时候了,毕竟懒癌患者。此外再考虑考虑写点游戏的玩后感,我觉得这个对我来说还是蛮有动力的hhhhhhh
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Observer!
评论