Typora-发布文章到博客园
Typora-发布文章到博客园
发布文件到博客园,需要先对博客园进行设置:
1. 允许MetaWeblog API 客户端访问
进入帐户中心, 点击博客设置
滑动滚动条到最底部,点击其它设置,开启“允许 MetaWeblog 博客客户端访问”:
注意上面的MetaWeblog
访问地址:https://rpc.cnblogs.com/metaweblog/yongdaimi
, 可以先记录下来,这个我们后面会用到。
注意:看清自己的地址,不要把我的地址直接拷过去。
2. 准备上传脚本
cnblogsImage.py
import xmlrpc.client
import ssl
import os
import json
import sys
ssl._create_default_https_context = ssl._create_unverified_context
rootPath = os.path.abspath(os.path.dirname(__file__))
with open(os.path.join(rootPath,"cnblogs.json"),"rb") as f:
config = json.loads(f.read())
def uploadImage(images):
for image in images:
with open(image,"rb") as f:
imageData = f.read()
baseName = os.path.basename(image)
suffix = baseName.split(".")[-1]
file = dict(
bits = imageData,
name = baseName,
type = f"image/{suffix}"
)
proxy = xmlrpc.client.ServerProxy(config["url"])
s = proxy.metaWeblog.newMediaObject('', config['username'], config['password'],file)
print(s["url"])
if __name__ == '__main__':
uploadImage(sys.argv[1:])
拷贝上述代码到一个单独的python文件,将文件重命名为:cnblogsImage.py
cnblogsArticle.py
import xmlrpc.client
import ssl
import os
import json
import sys
ssl._create_default_https_context = ssl._create_unverified_context
rootPath = os.path.abspath(os.path.dirname(__file__))
with open(os.path.join(rootPath,"cnblogs.json"),"rb") as f:
config = json.loads(f.read())
def uploadArticle(articles):
for article in articles:
with open(article,"r",encoding="utf8") as f:
data = f.read()
title = os.path.basename(article)[:-3]
post = dict(
dateCreated = xmlrpc.client.DateTime(),
description = data,
title = title,
categories = ['[Markdown]'],
)
proxy = xmlrpc.client.ServerProxy(config["url"])
s = proxy.metaWeblog.newPost('', config['username'], config['password'],post,True)
# 输出文章连接
userName = config["url"].split("/")[-1]
print(f"https://www.cnblogs.com/{userName}/p/{s}.html")
if __name__ == '__main__':
uploadArticle(sys.argv[1:])
拷贝上述代码到一个单独的python文件,将文件重命名为:cnblogsArticle.py
cnblogs.json
{
"url": "https://rpc.cnblogs.com/metaweblog/yongdaimi",
"username": "zhangsan",
"password": "123456"
}
拷贝上述代码到一个单独的json文件,将文件重命名为:cnblogs.json, 接着:
- 修改url的内容为之前保存的
MetaWeblog
访问地址; - 将username修改为你的博客园的用户名;
- 将password修改为你的博客园的密码;
---------------------------------------------------------------------------------- 2022-06-29 更新 ------------------------------------------------------------------------------------------
博客园已更新访问策略,目前只能使用令牌登录(Token) 登录, 创建访问令牌后填在原来密码的地方,即可正常使用,访问令牌的获取方式在其它设置
项中:
点击上方的复制按钮,用访问令牌来替换cnblogs.json
文件中的password
项的值,上述操作全部做完之后,将以上三个文件放置到一个指定的地方,比如我放置在:E:\opt\Typora\command 目录下:
位置可随便指定。
3. 配置图片上传
打开Typora, 依次点击“文件”-“偏好设置”-“图像”,修改红框所示位置:
在命令处输入上传图片时需要执行的python脚本的位置。比如我的放在:
python E:/opt/Typora/command/cnblogsImage.py
注意:
python E:/opt/Typora/command/cnblogsImage.py
前面的python 最好还是加上,最近发现一个问题,就是如果你的python文件是使用VSCode 关联的,那么在触发上传指令时,会自动拉起VSCode, 加上 python 命令后,就相当于是调用python 解释器来执行后面的脚本(当然前提是你必须在环境变量里已经配置好了python解释器的路径, 我上面的截图没有加...)。
修改完毕后可以点击“验证图片上传选项”按钮,看是否能够成功上传图片:
出现上图提示则代表可以顺利上传图片。
4. 配置文章发布
依次点击“文件”-“偏好设置”-“导出”,先添加一个导出选项:
选择“自定义”:
在弹出的对话框中选择确定,这里可以给新添加的导出项配置一个名称,比如我的已配置成“Cnblogs", 接下来需要设置导出指令:
python E:/opt/Typora/command/cnblogsArticle.py ${currentPath}
注意:
我已经在系统环境变量里配置好的python解释器的路径,所以我可以把命令直接写成"python xxx" 这种形式,没有配置的话必须显式指明python解释器的实际路径,如:E:/sys/Python/python.exe E:/opt/Typora/command/cnblogsArticle.py ${currentPath}
${currentPath}
表示的是当前待发布文章的文件路径。
5. 验证发布
在导出时选择刚才配置的导出项:
出现这个就代表文章发布成功了:
到博客园首页看下:
6. 不足之处
有一个不足的地方就是没有办法设置分类,通过博客园网站发布的文章是可以设置分类的,方便后期查找,这种方式的话目前只能在发布完成之后手动分类了。
参考链接