avatar

麦兜的小站

MDO.INK

  • 首页
  • 随笔
  • 知识库
  • 归档
  • 动态
  • 标签
  • 关于
Home 使用 Halo 作为 Typora 图床
文章

使用 Halo 作为 Typora 图床

Posted 2025-01-14 Updated 2025-01- 14
By power 已删除用户
11~14 min read

Halo 官方有个命令行工具(Halo Attachment Upload CLI)可以直接配合 Typora 使用,甚至都不需要安装 PicGo 了。

GitHub 上是以 MacOS 举例的,这里记录下 Windows 下的安装配置。

安装 Node.js

安装 Halo Attachment Upload CLI 需要 Node.js 环境,直接官网下载 LTS 版本,安装过程全程下一步就行。

安装 Halo Attachment Upload CLI

完成 Node.js 的安装后,打开 Windows 终端,全局安装 Halo Attachment Upload CLI 工具。

$ npm install @halo-dev/attachment-upload-cli -g

等待安装完成之后,运行 hau --help 可以查看帮助信息。

配置 Halo Attachment Upload CLI

$ hau setup

按照提示输入 Halo 实例的地址、用户名、密码、存储策略、分组等信息,配置信息保存在 C:\Users\%USERNAME%\.config\@halo-dev\attachment-upload-cli\config.json 文件中,是明文存储的,注意保管。

配置完成后可以找个图片上传试一下。

$ hau upload -f /path/to/file

配置 Typora

打开 Typora,进入文件 -> 偏好设置 -> 图像,将上传服务改为自定义命令,输入 hau upload -f 即可。

保存配置后,点击验证图片上传选项,竟然验证失败,看返回信息,第一个参数位置的图片显示是上传成功的,应该是该命令不支持批量上传多个文件。

查看 Halo 后台的附件库,也确实如此,只成功上传了第一个参数位置的图片。

查看 Upload Images - Typora Support 说明,用 Python 写个脚本分别上传每一张图片后再格式化输出,顺便重命名图片。

import datetime
import os
import requests
import shutil
import sys
import urllib.parse

TEMP_PATH = "C:\\Users\\t1m2h0u\\AppData\\Local\\Temp\\Typora\\"

print("Upload Success:")

for old_image_url in sys.argv[1:]:
    old_image_urlparse = urllib.parse.urlparse(old_image_url)
    new_image_name = f"image-{datetime.datetime.now().strftime("%Y%m%d%H%M%S%f")}"
    new_image_suffix = os.path.splitext(old_image_urlparse.path)[-1]
    new_image_url = f"{TEMP_PATH}{new_image_name}{new_image_suffix}"
    if old_image_urlparse.scheme in ["http", "https"]:
        with open(new_image_url, "wb") as image:
            image.write(requests.get(old_image_url).content)
    else:
        shutil.copy(old_image_url, new_image_url)
    print(os.popen(f"hau upload -f {new_image_url}").readlines()[1].strip("\n"))

将自定义命令修改为调用 Python 脚本。

再次点击验证图片上传选项,验证成功。

将插入图片时的默认操作修改为复制到指定路径,如果该文章需要发布到博客,手动点击格式 -> 图像 -> 上传所有本地图片,可以同时兼顾本地笔记图片的隐私性以及快速上传图片,可以说是非常方便了。

知识库
License:  CC BY 4.0
Share

Further Reading

Jul 31, 2025

如何实现接口幂等性

通俗的说,用户在系统中有操作,不管重复多少次,都应该产生一样的效果或返回一样的结果的。 幂等性的概念 幂等(Idempotent)是一个数学与计算机学的概念,常见于抽象代数中。 f(n)=1^n//无...

Jul 19, 2025

10个npm工具包

有了npm之后,前端人员真的是过上好日子了。我们可以直接把别人写好的工具包拿来用,非常的方便。 1.day.js-轻量日期处理 npminstalldayjs importdayjsfrom'd...

Jul 17, 2025

How to set up PHP7.4 on MacOS.

Thisisallverywellandgood.Apartfromonesmallinsignificantthing… TheversionofPHPinuseiscurrently7.4. Th...

OLDER

php实现远程图片本地化的方法

NEWER

Gitkraken 最新版 v10.x 破解/中文汉化教程

Recently Updated

  • 如何实现接口幂等性
  • 10个npm工具包
  • How to set up PHP7.4 on MacOS.
  • Automa:一键自动化,网页数据采集与工作流程优化专家Automa:解锁自动化
  • Mac 下用 brew 搭建 LNMP

Trending Tags

thinkphp clippings

Contents

©2025 麦兜的小站. Some rights reserved.

Using the Halo theme Chirpy