Files
Obsidian/博客/halo-upload.py
T
Serendipity 7d332d3b8c feat(halo): 添加图片自动上传功能
- 新增图片处理工具模块 `src/utils/image.ts`,包含图片引用提取、绝对路径解析和路径替换功能
- 新增图片上传服务 `src/service/image-uploader.ts`,支持调用 Halo 媒体 API 上传图片并实现缓存机制
- 在设置界面添加图片上传开关和上传路径配置项
- 更新发布流程,在提交到 Halo 前自动检测并上传本地图片,替换为远程 URL
- 添加英文、简体中文和繁体中文的国际化文案
- 更新插件版本至 1.1.1 并完善相关配置文件
2026-04-26 16:11:11 +08:00

51 lines
1.4 KiB
Python

import requests
import json
import sys
# Halo API 配置
BASE_URL = "http://192.168.5.8:8090"
# 读取Bearer Token(需要用户手动提供或从配置中读取)
token = input("请输入 Halo Bearer Token: ").strip()
# 读取 Markdown 文件
md_file = input("请输入 Markdown 文件路径: ").strip()
# 读取文件内容
try:
with open(md_file, 'r', encoding='utf-8') as f:
content = f.read()
except FileNotFoundError:
print(f"文件不存在: {md_file}")
sys.exit(1)
# 从文件第一行提取标题
lines = content.split('\n')
title = lines[0].lstrip('#').strip()
if not title:
title = input("无法从文件提取标题,请输入文章标题: ").strip()
# 创建文章
headers = {
"Authorization": f"Bearer {token}",
"Content-Type": "application/json"
}
data = {
"title": title,
"content": content,
"rawType": "markdown",
"visible": "PUBLIC",
"publish": True
}
response = requests.post(f"{BASE_URL}/apis/api.console.halo.run/v1alpha1/posts", headers=headers, json=data)
if response.status_code == 200 or response.status_code == 201:
result = response.json()
print(f"文章创建成功!")
print(f"标题: {result.get('spec', {}).get('title', 'N/A')}")
print(f"ID: {result.get('metadata', {}).get('name', 'N/A')}")
else:
print(f"创建失败: {response.status_code}")
print(response.text)