图床迁移

  • 自从七牛云的测试域名挂了之后,我就把博客的事情抛之脑后,感觉迁图片好麻烦,导致我这个懒癌晚期患者一直无动于衷。直到研究生稀里糊涂地读到了找工作的时候,才猛地想起自己还有个没什么卵用的博客。既然想起来了还是想想办法搞定这个问题。

  • 首先是从七牛云上把我的图片下载下来,根据CSDN一些大佬的代码,尝试用七牛云提供的qrsctl对存储对象进行下载,不过发现基本9成的数据都下载不了,但是url明明可以访问到,无奈只能用script -f result.txt把里面的url信息都输入到一个文本文件里,大概长这个样子:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Download 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
    13
    crawl_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
    20
    headers = {
    "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
    22
    import 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
    19
    import 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