title: Typora搭配Picgo&七牛云图床
date: ‘2022-06-07 22:00:54’
tags: [Picgo, 七牛云]
categories:

  • 编程学习
  • 散记

背景

换了新的博客系统架构之后,采取了本地编辑(Typora) + 同步Github/Gitee的方式维护自己的知识仓库。

由于之前在导出语雀文档时发现图片的防盗链机制,折腾一番后使用Picgo和相关插件解决这个问题,并且将自己的图片都上传到七牛云图床

中间遇到了不少问题,写篇文章记录一下吧~

正文

1. 导出语雀原文章

首先是将语雀里的文章导出到本地,使用了yuque-hexo工具。

因为语雀没法批量导出文章,且yuque-hexo能够自动生成 FrontMatter(文章开头的title、date…)

这块内容和标题关系不大,在我之前的文章里写了一点步骤,就挂一个官网吧。

x-cold/yuque-hexo: 同步语雀的文章到你的 Hexo 项目吧! (github.com)

2. 安装Typora

省点钱下了beta版,网盘自取~

链接:https://pan.baidu.com/s/1firzk2jtgKJ6J1mSn69jBQ
提取码:83ng

3. 七牛云图床开通使用

在七牛云中找到对象存储(左上角),新建存储空间

Typora搭配Picgo&七牛云图床 - 图1

空间名随便取一个,区域建议先别选新的华东-浙江2,之前遇到点问题,后面看网上说Picgo好像还没适配这个新的区域,于是又换了…

创建完空间后会让你绑定自定义域名,需要是备案过的域名,可以提供CDN加速。打算先用30天测试域名的话先跳过这步~

Typora搭配Picgo&七牛云图床 - 图2

加速域名这里填cdn.xxx.com ,其他我都是默认的设置,直接创建。

然后需要配置CNAME解析(说明一下,这里的cdn加速就是把自己域名解析到七牛云的图床,所以建议使用cdn前缀)

Typora搭配Picgo&七牛云图床 - 图3

主机记录就是之前加的前缀cdn,记录类型选CNAME,记录值是上一步创建后官方提供过的CNAME。

配置成功后可以在七牛云-对象存储-空间管理中看到如下

Typora搭配Picgo&七牛云图床 - 图4

4. Typora配置Picgo和七牛云图床

七牛云图床可以存放自己的图片并生成外链,但每次使用时都在七牛云的控制台手动上传图片然后复制外链实在太麻烦了,

于是~Picgo隆重登场!在Typora导航栏中找到=> 格式-图像-全局图像设置,如下图

Typora搭配Picgo&七牛云图床 - 图5

点击安装PicGo app!!强烈推荐使用app,之前捣鼓Command-line整半天一堆bug(我菜),换app啥事没有。

安装完后打开PicGo,直接配置七牛图床

Typora搭配Picgo&七牛云图床 - 图6

讲一下各个配置项

  • AccessKey和SecretKey:在七牛云-个人中心-密钥管理中直接获取

  • 存储空间名:七牛云-对象存储(之前创建的不会这么快忘了吧?)

  • 存储区域:之前选的区域,鬼知道这玩意我还上网找了
    华东 z0,华北 z1,华南z2,北美 na0,东南亚 as0

  • 设定网址后缀:不用填

  • 指定存储路径:在对象存储-文件管理里自己创建的目录 Typora搭配Picgo&七牛云图床 - 图7

全部配置完后,可以在Typora刚刚的图像设置里点击 验证图片上传选项 测试一下。

5. 七牛云域名过期替换域名

应该不会只有我试用了30天域名,然后才备案过换成自己的域名吧?

还有看到网上一些30天过了才发现自己图床失效了,在博客里骂娘的…

换了新域名原先的博客里一大堆旧的域名怎么处理,这里提供两个方案~

  1. 将Picgo里的图床设置换成新的,在Picgo中使用pic-migrater插件

Typora搭配Picgo&七牛云图床 - 图8

直接搜索,下载,点击插件名可以在官网找到傻瓜教程。

点击插件右下角的小齿轮,选择文件夹,就可以将文件夹中的所有文章图片自动上传到新的域名了。

(这个方法网上是用于上传其他外链到七牛云图床,我是在七牛云上换了一个域名,不知怎么莫名有些bug,总之上传了一部分,然后就一直宕机…)

  1. 既然是批量替换域名这种事,那肯定少不了Python脚本。
  1. import os
  2. import io
  3. file_dir = 'D:/Code/chuanBlog/source/_posts/
  4. # 测试域名
  5. old_str = 'rcsvx8te8.hn-bkt.clouddn.com'
  6. # 新域名
  7. new_str = 'cdn.chuanxz.com'
  8. def batch_replace(file):
  9. print('filename:%s' % file)
  10. content = ""
  11. with io.open(os.path.join(file_dir, file), "r", encoding="utf-8", errors='ignore') as f:
  12. for line in f:
  13. if old_str in line:
  14. line = line.replace(old_str, new_str)
  15. content += line
  16. with io.open(os.path.join(file_dir, file), "w", encoding="utf-8", errors='ignore') as f:
  17. f.write(content)
  18. # 遍历目录下文件
  19. for folder, subFolder, filenames in os.walk(file_dir):
  20. for filename in filenames:
  21. # 以 .md 结尾的文件
  22. if os.path.splitext(filename)[1] == '.md':
  23. # 执行域名替换
  24. batch_replace(filename)

设置三个参数,就可以使用,亲测有效!

  • file_dir:文章路径(不要含多级目录会bug)

  • old_str:旧的30天域名

  • new_str:新域名

ps:两个方法都挺好用的,也都适用于批量替换其他网站中导出的防盗链图片地址。

整个Typora搭配Picgo和七牛云自动上传图片的过程就到这了,End。

参考&推荐

七牛云搭建图床注意事项 | cwenan’Blog (wenancoding.com)