V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tyrantlucifer
V2EX  ›  程序员

自荐一个我开发的小工具 typora-upload,专为 markdown 图片上传而生,提升生产力

  •  
  •   tyrantlucifer ·
    tyrantlucifer · 2022-06-12 01:25:51 +08:00 · 2063 次点击
    这是一个创建于 688 天前的主题,其中的信息可能已经有所发展或是发生改变。

    typora-upload

    项目地址: https://github.com/TyrantLucifer/typora-upload

    欢迎大家的⭐⭐⭐

    基于 typora 图片上传协议开发的笔记图片上传插件

    痛点

    相信很多程序员都有着使用 markdown 语法记录自己笔记的习惯,对于在笔记中插入图片有利于我们后期维护笔记和回复笔记,图文并茂可以更快的让我们 get 到自己的点。可问题随之而来:

    • 图片保存在本地容易丢失,在更换电脑之后,资料全部清零的感觉很不好受

    • 图片保存在云端会产生费用成本,目前各家图床供应商价格不一,且各家平台对接 api 不一致

    • 市面上的笔记保存服务商有很多,将图片保存到他们服务器下也可以,但百分之 90 服务商会设置防盗链,你的图片只能在笔记服务商的软件环境下才有效,依然有跑路的风险

    基于以上几点的需求,我们可以得到这么几个关键词:云端 速度快 图片可复用 无跑路风险

    笔记工具的选择

    大家或多或少都在使用各家笔记的服务商来作为自己的平台保存经验,比如知名的有:为知笔记 印象笔记 notion等,无一例外,这些笔记提供商都有一个通病,那就是本身笔记自带的编辑器并不好用(个人看法,不代表全部)。

    大多数人更喜欢市面上免费许久(严谨一点说现在正式版已经收费,过去的测试 beta 版本不收费)的Typora情有独钟,包括我在内,几乎无人能超越,结合这几点,我总结出了笔记记录的最佳实践:笔记服务商提供数据保存 + Typora 编辑笔记 + 图片保存在云端(oss, github etc...)

    萝卜青菜各有所爱,这只是我个人看法,不代表全部,求别杠

    使用

    目前Typora已经支持自定义脚本上传图片,所以我们需要开发一个小小的上传工具即可,在这里我选择了使用 Python 进行开发,对接不同的云存储平台去上传图片,目前小插件仅支持 github 、oss ,后续如果有新的需求会持续开发。

        usage: typora-upload [-h] [-u file_path] [-s storage] [-i storage] [-v]
    
        The typora image upload plugin based Python.
    
    optional arguments:
      -h, --help            show this help message and exit
      -u file_path, --upload file_path
                            upload image file
      -s storage, --storage storage
                            storage type
      -i storage, --init storage
                            init storage config
      -v, --version         display version
    

    安装

    • 源码安装
    git clone https://github.com/TyrantLucifer/typora-upload.git
    cd typora-upload
    python(python3) setup.py install
    
    • pip 安装
    pip(pip3) install typora-upload
    

    配置云存储参数

    注!!!:第一次安装之后此步骤必须进行,默认存储云盘会设置为 oss

    typora-upload --init 云存储类型
    

    oss

    参数 备注
    access_key_id oss access_key_id ,oss 密钥 id
    access_key_secret oss access_key_secret ,oss 密钥
    bucket_name oss bucket_name ,oss 存储桶名称
    endpoint oss endpoint ,oss 存储地区
    path_prefix image upload path prefix, do not end with /, for example, if you want to upload image to/image, this parameter should be set to image,上传到的 oss 路径
    domain_name oss public domain address ,do not start with http:// or https://,oss 公网访问域名,不带 http://或 https://协议头

    github

    参数 备注
    user github username ,github 用户名
    repo github repository name ,github 仓库名称
    path_prefix image upload path prefix, do not end with /, for example, if you want to upload image to/image, this parameter should be set to image,上传到 github 仓库的路径
    token github api token

    配置 typora

    打开 typora 的文件 -> 偏好设置 -> 图像,在上传服务设定里选择Custom Command,命令中填入typora-upload -u

    image-20220611204431495

    效果展示

    image-20200811002037476

    10 条回复    2022-06-12 21:58:09 +08:00
    jingfelix
        1
    jingfelix  
       2022-06-12 01:31:32 +08:00 via Android
    赞!不过 Typora 并不是开源的…
    tyrantlucifer
        2
    tyrantlucifer  
    OP
       2022-06-12 01:34:18 +08:00
    @jingfelix #1 已经改正,谢谢指出错误!
    renmu123
        3
    renmu123  
       2022-06-12 02:44:25 +08:00 via Android
    那为什么不用 picgo 呢?你的插件有什么优点
    Envov
        4
    Envov  
       2022-06-12 10:30:46 +08:00   ❤️ 1
    之前也写了一个,不过没什么人用 https://github.com/Envov/sm-upload
    tyrantlucifer
        5
    tyrantlucifer  
    OP
       2022-06-12 11:24:18 +08:00
    @renmu123 #3 曾经我也是 picgo 的用户,但实际上使用体验不是很好,1 是启动速度很慢有时候会卡顿,2 是莫名其妙有时候会上传失败,功能很多对于我来说很冗余,我只需要 typora 管理图片上传,所以我自己手撸了一个,当然这只是我的个人看法,觉得哪个好用就用哪个咯😄
    renmu123
        6
    renmu123  
       2022-06-12 12:42:53 +08:00
    @tyrantlucifer 有命令行版
    tyrantlucifer
        7
    tyrantlucifer  
    OP
       2022-06-12 15:21:24 +08:00
    @renmu123 #6 命令行版我也用过
    victorc
        8
    victorc  
       2022-06-12 20:33:35 +08:00
    搞复杂了,直接 scp 传到博客本机就行,只需要 nginx 上配置一个路由
    而且从使用便利方便角度,还需要处理粘贴板上图片,这是高频操作
    https://victorc.top/post/b1/
    blankmiss
        9
    blankmiss  
       2022-06-12 21:19:19 +08:00
    为什么不支持 cheverto 呢
    tyrantlucifer
        10
    tyrantlucifer  
    OP
       2022-06-12 21:58:09 +08:00
    @blankmiss #9 可以开发,有需求可以提 pr 或者 issue
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1148 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 18:15 · PVG 02:15 · LAX 11:15 · JFK 14:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.