上传markdown文件到博客园

【0】需求原因

个人习惯用markdown写博客,然后同步到博客园,每次同步都比较麻烦。

于是通过Metaweblog实现了,一步上传markdown文件的小工具。

工具地址:https://github.com/dongfanger/pycnblog

作者博客:https://www.cnblogs.com/df888/p/11826480.html

【1】功能

  • 一键拖拽上传
  • 默认“未发布”,可选择直接发布
  • 重复上传,提示是否更新博客

【2】环境

python3

安装参考:

  windows:https://blog.csdn.net/weixin_40844416/article/details/80889165

  linux:https://www.cnblogs.com/gered/p/13246889.html

【最佳实践测试】

(1)查看 Typora 设置

这个文件存储位置设置无所谓的;

  

(2)配置 pycnblog 配置文件 config.yaml

解压出来后文件夹:

  

 打开配置文件修改 config.yaml

  

1、blog_url

管理进入博客园后台 =》 设置 =》拉到页面最底端

  

2、blog_id

  就是网址上的这个东西

   

3、username

  这没什么好说的,就是你登录博客园的账户

4、passowrd

  这没什么好说的,就是你登录博客园的密码

(3)运行 pycnblog 中的文件 cnblog_markdown.cmd

1、打开这个文件

    

现在大多是win10,权限管理很重要,这一步应该改成下面这样很重要(写自2022-03-07)

  

 

 否则很容已出现评论区的,找不到文件;

 

 出现如下窗口

  

 

2、把我们要上传的markdown文件拖过去

  

   

 

操作完成后就会生成,对应的 _network.md 文件,如下图;

你然后你可以把该文件发给别人,也可以直接复制markdown代码到博客园

  

 

3、对比操作前后文档的区别

我们可以发现,图片的URL已经被替换成了网络RUL,存储在博客园的网络URL;

你现在可以把该文件发给别人,也可以直接复制markdown代码到博客园

  

(4)上传新生成的 _network 文档到博客园

  

然后内容直接复制过来就好了

  

张贴过来之后,发布,然后查看,结果如下图:

  

 成功

(5)总结:可复制替换后的 markdown 代码发布,但无法直接发布

【附录】

【故障处理】

(1)Typroa =》markdown图片存储设置

如果(2)中报错,发布到博客园报错,那么则必定是因为这个

写markdown有一利器Typora,一般图片存储设置我会修改成这样。

打开文件>偏好设置,找到'图片插入'

  

修改为'复制到指定路径',规则设置为./${filename}.assets

下面的3个选项全部勾选。

这样当复制粘贴图片到markdown时,就会在目录中新建一个同名文件夹,存储图片。

  

(2)为什么只会图片上传,文档不会自动发布到博客园?

故障信息:

  

我的配置文件如下:
blog_url: https://rpc.cnblogs.com/metaweblog/gered
blog_id: "gered"
username: "xxx"
password: "xxxx"

#是否生成图片替换后本地文件,默认False关闭
gen_network_file: True

#上传后是否发布,默认未发布,设置True为发布
publish: True

#图片自定义显示格式,默认不设置
#img_format: "<center><img src="" style="width:100%;" /></center>" 设置居中和宽度
#img_format: typora 还原typora图片样式,居中,设置zoom,上传后无需再手动调整图片大小
img_format: ""

作者提供的解决方案:

  修改upload.py 60行代码中的99999为99,因为:博客园的博文最大可获取数量为100。修改后测试成功!

   

  

 

 实际上,默认为已发布了!

(3)相同名次的markdown多次发布会怎么样?

会提示该博客已存在,是否更新替换,对应输入你想要的操作即可

  

(4)文件未找到,找不到路径 等错误

现在大多是win10,权限管理很重要,这一步应该改成下面这样很重要(写自2022-03-07)

  

 否则很容已出现评论区的,找不到文件;

如果这样还不行,请尝试给文件以权限

右击文件=》属性,然后如下图,添加everyone 用户,给它完全控制权限

  

 改完后,再次拖动上传 试试

 

【工具原理】

本工具的基本原理是,调用Metaweblog的相关api,把图片上传到服务器后,获取url替换本地图片地址,再上传文件到博客园,在博客园后台能看到新博客。

Metaweblog是一个开放api,用于和远程blog交互,可以通过xmlrpc建立连接

server = xmlrpc.client.ServerProxy(blog_url)

这里用到了2个api:图片上传.MetaWeblog.newMediaObject和博客上传.MetaWeblog.newPost。

上传图片部分,通过asyncio包,实现了异步上传。

 

posted @ 2021-05-06 17:33  郭大侠1  阅读(2875)  评论(47编辑  收藏  举报