Typora + PicGo-Core + SM.MS图床

2020年3月13日更新:

经评论区作者大佬@Molunerfinn提醒, 得知最新的PicGo-Core已经自带支持smms-v2了, 非Windows用户不用看分隔线下面的内容了.

==========
运行在Windows上存在的问题总结如下

由于原版PicGo-Core没有提供Windows独立运行的可执行文件, 所以Typora官方是重新打包了一个旧的smms-v1版本, 需要安装一个插件才能使用, 但是这个插件有一个坑, 引用@Molunerfinn的评论就是:

"因为你用的是 picgo set plugin 来设置的。标准的uploader配置是通过 picgo set uploader 来配置的... 这个是smms-user的作者没有注意的一个问题,会导致困扰。"

==========

最近突然发现Typora更新了, 新增了原生对 PicGo-Core 的调用, 可以自动上传markdown内的图片, 于是赶紧尝鲜一波. 使用过程中遇到了一点坑, 但还是摸索着解决了.

1. 安装PicGo-Core

因为Typora已经原生支持PicGo-Core, 所以只需要在软件内下载一下就可以了(PS: 下面这张图就是用的自动上传, 很方便)

image-20200226192555818

首先点击上面红色1的位置, 选择PicGo-Core, 再点3(不要问我2去哪儿了....就当他不存在), 并等待下载完成.

2. 安装smms v2 API插件

这里是个大坑.

因为PicGo-Core默认的smms使用的是v1的api, 而目前smms已经停用了该版本API, 所以导致PicGo-Core在默认配置下, smms图床完全不可用

翻了一下PicGo-Core的Github发现作者目前还没有把内置的smms api升级到v2, 但是有其他开发者通过第三方插件的方式解决了这个问题, 所以我们需要安装这个v2版本的smms-user插件.

直接点击红色5的位置, 根据文本内容找到PicGo-Core的程序目录

image-20200226193128224

注意, 因为默认的smms api已经不可用, 这里肯定会上传失败, 不用管

找到目录后我们在picgo的目录下启动命令行, 执行如下命令, 并等待安装成功

.\picgo.exe install smms-user

3. 配置PicGo-Core

安装完成之后点击红色4的位置(红标顺序不代表点击顺序), 打开PicGo-Core的配置文件, 按照下面的格式无脑全选替换就行

{
  "picBed": {
    "current": "smms-user",
    "uploader": "smms-user",
    "smms-user": {
      "Authorization": "这里替换成你自己的"
    },
    "transformer": "path"
  },
  "picgoPlugins": {
    "picgo-plugin-smms-user": true
  }
}

没有Authorization的自己去这里申请一个: https://sm.ms/home/apitoken

申请前需要注册一个账号, 这个没啥难度, 就不细说了.

4. 体验效果

保存配置之后再点红标5的位置应该就可以正常上传图片了, 我们直接在Typora内粘贴一张图片, 就会有相应的提示

image-20200226194604800

或者在已有的本地图片上面按右键, 也可以弹出上传图片的按钮, 整个操作非常便捷, 上传速度也挺快的.

5. 踩坑

总的来说还是遇到了一些坑的, 接下来说一下坑点:

  1. PicGo-Core并没有编译Windows的版本, 所以Typora的作者是fork原版之后重新打包的, 这也导致了版本不能及时的跟主体保持同步更新.

我之前遇到smms v1 api不可用的问题时, 看到PicGo-Core的作者说会在新版本解决这个问题, 目前PicGo-Core的最新版本是1.4.6, 而Typora fork的版本是1.4.4, 我一开始还以为下载一个新版本就能解决, 特意跑去重新编译, 然而弄完发现1.4.6还是存在该问题, 于是遇到了第二个坑.

  1. 既然换版本不能解决, 我决定换一个图床试试, 翻了半天文档发现全是可视化配置, 然而我的PicGo-Core只有json文本文件配置, 最后发现原来picgo(PicGo-Core)和PicGo(PicGo-Electron)是不一样的

image-20200226200109710

  1. 调研了一下各个图床, 发现还是smms免费好用, 所以决定使用作者推荐的那个v2版本smms api插件.

然而安装完之后不知道在哪填Authorization, 去翻文档发现这么一句绕口令:

如果你为picgo开发了一个插件,如果这个插件本身需要一些配置项,那么这个插件对应的配置应该直接放置在配置文件下的同名配置里

image-20200226200502981

​ 思考了一下, 我以为是这样

{
  "picBed": {
    "current": "smms",
    "uploader": "smms",
    "transformer": "path"
  },
  "picgoPlugins": {
    "picgo-plugin-smms-user": true
  },
  "picgo-plugin-smms-user": {
      "Authorization": "xxxx"
  }
}

​ 然而测试上传的时候发现安装插件之后跟安装之前没有一点变化.

​ 思考&测试一番之后, 我发现插件并不会自动注入到smms图床配置中.

​ 大概要手动修改图床为插件名才能使用, 于是:

{
  "picBed": {
    "current": "smms-user",
    "uploader": "smms-user",
    "transformer": "path"
  },
    ....

​ 再进行测试又失败了, 但是这次不是说v1接口过时, 而是说找不到Authorization的配置项

  1. 开始以为是我手动写的格式不对, 所以又去翻了文档, 发现了PicGo-Core提供了命令行参数设置

    .\picgo.exe set plugin smms-user

​ 根据提示填写了Authorization, 结果自动生成的配置文件和我刚才手动写的一模一样, 但就是不行.

​ 最后又思考了一下, 看了看其他图床的配置方法, 决定仿照微博的配置, 试一下picBed.smms-user这种写法, 最后终于成功了= =

image-20200226200911579

6. 总结

虽然整个过程坑挺多的, 但毕竟这个功能也是新出的, 相信之后会越来越完善的

配置完之后用起来真的爽, 以后从Typora粘文章到博客上再也不用手动上传替换图片了~

本文链接:

https://www.lzskyline.com/archives/87/
1 + 2 =
9 评论
    aaaChrome 80Windows 10
    2月27日 回复

    666 刚好用到

    小新Firefox Browser 73Windows 10
    3月10日 回复

    太好了, 正在纠结怎么使用呢

    MolunerfinnChrome 80OSX
    3月13日 回复

    默默提示一下,最新的PicGo-Core已经自带支持smms-v2了。
    另外配置的时候可以使用 picgo set uploader 和 picgo use uploader,不用去翻配置文件...

      lzskylineChrome 80Windows 10
      3月13日 回复

      @Molunerfinn 原版PicGo-Core没有编译Windows端, 所以Typora作者是fork之后自己打包的, 如果Typora作者也同步更新到了最新版就太好了~
      我没有用过PicGo, 不太清楚这些命令, Typora的界面上只能打开PicGo-Core的配置页..不过有这些命令确实方便很多哈
      我用picgo自带的命令配置smms2的token的时候出bug了, 这个好像只能手动改配置

        CharonChrome 80Windows 10
        3月13日 回复

        @lzskyline 配置的时候先用图形化的安装好插件,配好之后,图形化的配置页是存储在JSON里,直接复制需要用的就好了

          lzskylineChrome 80Windows 10
          3月13日 回复

          @Charon 对的 我那会疯狂踩坑的时候有想过下载一个可视化版本的直接复制文件, 但是装完就卸载有点虐死强迫症...所以我踩完坑之后把JSON复制出来了 有需要的可以直接粘贴

    YDTrinldyChrome 73Windows 10
    3月31日 回复

    您好,想请教下,我用上面的方法,也下载了nodejs,也安装好了,也设置了环境变量nodejs,API V2也安装成功……
    但是,在typora里“验证图片上传选项”的时候,一直出错“'C:Users用户名' is not recognized as an internal or external command,
    operable program or batch file.”
    折腾了好久都没找到为什么……您有好的建议吗?

      YDTrinldyChrome 73Windows 10
      5天前 回复

      @YDTrinldy 虽然还没收到回复~但是谢谢您的文章~
      今天抱着最后再试一次不行就删掉的心态试了测试,居然就成功上传了……我还是保留着之前的设置啥都没动,同样的测试莫名奇妙今天就成功了……诶……

        lzskylineChrome 80Windows 10
        4天前 回复

        @YDTrinldy 哈哈抱歉, 这两天没看博客, 我没遇到过这个问题, 解决了就好