2019/6/6--更换图床日志

2019/6/6--更换图床日志

自从微博图床挂了后,就迁移到了Github上,但是Github的速度实在太慢,今天尝试了下腾讯OSS,免费送了6个月的存储,之后的收费也还是可接受范围内。所以就迁移到腾讯咯。

2019/6/8 Update

没想到时隔两天,我又更换了图床,在评论区的“游客”建议下,我更换到了聚合图床(毕竟免费,虽然腾讯COS已经很便宜了),目前效果一样不错。

但是,我已经经历过两次图床迁移的痛苦了。picgo-migrate图床迁移插件还不够完善,有时候还不如我自己手动迁移。所以我觉得,自己动手撸一个迁移脚本。但是因为是赶制版本,所以肯定很简陋了。
同时只适合迁移到聚合图床上。

下面就来说一下怎么用脚本迁移吧。

1. 从typecho中导出你的Markdown文章

参考:http://ju.outofmemory.cn/entry/304277,说得很详细了,这里就不重复说明。

2. 获取聚合图床的API

注册聚合图床:https://www.superbed.cn,然后申请一天的免费会员,就可以获取api的token了。

如图:

3. 编写迁移脚本

先给出脚本

import os
import glob
import re
import requests
import json

def migrate_single_file(file_path):
    # step 1 读入content
    with open(file_path,'r',encoding='UTF-8') as f:
        file_content = f.read()

    # 下行根据自己需要删除,我在使用typecho2md时,多了<!--markdown-->的字符串
    file_content = file_content.replace(r'<!--markdown-->','')

    # step2 通过捕获组获取所有图片链接
    pattern = r'!\[.*\]\((https://typecho-blog.*?)\)'
    img_urls = re.findall(pattern,file_content)

    # 定义一个列表用来装新的url,即新上传到的图床的url
    new_img_ulrs = []

    # 配置上传json
    url = 'https://www.superbed.cn/upload'
    data = {'token':'xxxx',        # 写你的token
            'sync':'1',
            'src': '',
            'v':'2'
            }

    # step3 循环上传
    try:
        for img_url in img_urls:
            data['src'] = img_url
            r = requests.post(url, data)
            result = json.loads(r.text)
            print(result)
            if result['err'] == 0:
                new_img_ulrs.append(result['url'])
    except:
        pass

    # step4 替换url
    for idx,url in enumerate(img_urls):
        file_content = file_content.replace(url,new_img_ulrs[idx])

    # print 替换后的结果
    print(file_content)

    # 重新写入
    dir = os.path.dirname(file_path)
    base_name = os.path.basename(file_path).replace(r".md",'')
    new_file_name = os.path.join(dir,base_name+'_new.md')

    with open(new_file_name,'w',encoding='UTF-8') as f:
        f.write(file_content)
        
 # 需要迁移的目录
DIR = r'C:\Users\Raven\Desktop\blog\blog'
# 找到所有md文件
pattern = '*.md'
files = glob.glob(os.path.join(DIR,pattern))
print(files)

# 循环转
for file in files:
    migrate_single_file(file)

需要注意的有几点:

  • file_content = file_content.replace(r'<!--markdown-->','') 这行代码是因为我在导出markdown文件时,额外增添了<!--markdown-->字符串,所以我把它删除了,自行决定需不需要删除
  • 配置json:

    data = {'token':'xxxx',        # 写你的token
             'sync':'1',
             'src': '',
             'v':'2'
             }

修改token为你的token。

  • 配置迁移目录:DIR = r'C:\Users\Raven\Desktop\blog\blog' 也就是你现在放置Markdown文件的目录。

迁移后的文档默认为源文档名后加后缀_new,如源文档test_md.md迁移后的文档名为test_new.md

ok,就酱了。两天迁移了两次图床,心塞。

Last modification:July 11th, 2019 at 09:11 pm
如果觉得我的文章对你有用,请随意赞赏

Leave a Comment

7 comments

  1. 游客

    免费图床可以试试这个,https://www.superbed.cn/。有阿里和腾讯的公共图床。

    1. Raven
      @游客

      你有好用的音乐插件吗?我前阵子用的好像不支持https,现在改用的需要刷新两次页面才能有音乐

    2. Raven
      @游客

      速度怎么样呢?我就是看github太慢才换了。改用腾讯COS速度还是很不错的。

      1. 游客
        @Raven

        音乐插件不知道没用过。
        速度很快啊,和之前的新浪做图床的效果一样。
        https://ae01.alicdn.com/kf/HTB1pBMTbBCw3KVjSZR0q6zcUpXaN.jpg
        https://puui.qpic.cn/fans_admin/0/3_1655376438_1559708127840/0
        这个是3M的图片,你可以测试下打开速度。

        1. Raven
          @游客

          不错,有空迁移过去试试。
          先把小姐姐收了

          1. 游客
            @Raven

            b站咬人猫

            1. Raven
              @游客

              嗯,知道的( ̄▽ ̄)/