将自己md文件发布到自己的博客园实现文件的持久化存储
目录
- 【0】需求原因
- 【1】功能
- 【2】环境
- 【最佳实践测试】
- (1)查看 Typora 设置
- (2)配置 pycnblog 配置文件 config.yaml
- (3)运行 pycnblog 中的文件 cnblog_markdown.cmd
- (4)上传新生成的 _network 文档到博客园
- (5)总结:可复制替换后的 markdown 代码发布,但无法直接发布
- 【附录】
- 【故障处理】
- (1)Typroa =》markdown图片存储设置
- (2)为什么只会图片上传,文档不会自动发布到博客园?
- (3)相同名次的markdown多次发布会怎么样?
- (4)文件未找到,找不到路径 等错误
- 【工具原理】
【0】需求原因
个人习惯用markdown写博客,然后同步到博客园,每次同步都比较麻烦。
于是通过Metaweblog实现了,一步上传markdown文件的小工具。
工具地址:GitHub - dongfanger/pycnblog: 博客园上传markdown文件
作者博客:https://www.cnblogs.com/df888/p/11826480.html
回到顶部
【1】功能
-
一键拖拽上传
-
默认“未发布”,可选择直接发布
-
重复上传,提示是否更新博客
回到顶部
【2】环境
python3
安装参考:
windows:python安装教程(Windows系统,python3.7为例)_如何从官网下载python3.7-CSDN博客
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/xiaodaidaiPro blog_id: "xiaodaidaiPro" username: "小呆呆不爱睡觉" password: "61DC36DBFC3F4901BC12246D74AF50E30CE6CE19B06AA634BB7539A8BF61DDBE" #是否生成图片替换后本地文件,默认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包,实现了异步上传。
回到顶部
相关文章:
将自己md文件发布到自己的博客园实现文件的持久化存储
上传markdown文件到博客园 目录 【0】需求原因【1】功能【2】环境【最佳实践测试】 (1)查看 Typora 设置(2)配置 pycnblog 配置文件 config.yaml(3)运行 pycnblog 中的文件 cnblog_markdown.cmd࿰…...
uni-app的生命周期(应用,页面生命周期)
1. uni-app的生命周期(应用,页面生命周期) 1.1. 应用生命周期 1.1.1. 定义在app.vue中 生命周期函数名说明onLaunch当uni-app 初始化完成时触发(全局只触发一次)onShow当 uni-app 启动,或从后台进入前台…...
响应式企业网站建站系统源码 模版丰富+一站式建站 全开源可二次开发 带源码包+搭建部署教程
系统概述 在数字化转型的浪潮中,企业官网作为品牌展示、产品推广及客户服务的重要窗口,其建设质量直接影响着企业的线上形象与市场竞争力。响应式企业网站建站系统源码的出现,为企业提供了一种高效、灵活且成本可控的建站解决方案。 代码示…...
如何解除内存卡的写保护并格式化为exFAT文件系统
最近有客户提问内存卡提示写保护,且无法格式化为exFAT格式的问题,可能是由于多种原因引起的。以下是一些可能的解决方法: 1. 检查物理写保护开关 一些SD卡和MicroSD卡适配器上有一个小的物理开关,可以启用或禁用写保护。确保这个…...
【 EI会议 | 西南大学主办 | 往届均已实现检索】第三届神经形态计算国际会议(ICNC 2024)
第三届神经形态计算国际会议(ICNC 2024) 2024 3rd International Conference on Neuromorphic Computing (ICNC 2024) 一、重要信息 大会官网:www.ic-nc.org(点击投稿/参会/了解会议详情) 会议时间:2024年12月13-15…...
利用python爬虫采集苹果公司各产品销售收入统计报告
数据为2013年到2022年苹果公司各产品(iPhone、iPad、Mac等)及服务的销售收入。iPhone是苹果公司销售收入最高的产品。 数据统计单位为:亿美元 。 数据说明: 数据整理自苹果公司历年10-K文件,每年10-K文件可能对之前年…...
ethercat igh可能出现的两个bug
1. 插入网线直接就进入op状态,这可能是因为 从站支持eoe协议 igh对eoe协议支持的从站默认使其直接进入op状态,可以修改igh源码编译选项,不启动eoe协议 可以参考: igh编译选项 igh一些EoE协议说明 Automatic Configuration&#…...
计算机网络知识点(三)
目录 一、简述TCP连接和关闭的状态转移 二、简述TCP慢启动 三、简述TCP如何保证有序 四、简述TCP常见的拥塞控制算法 五、简述TCP超时重传 一、简述TCP连接和关闭的状态转移 状态转移图 图中上半部分是TCP的三次握手过程的状态变迁,下半部分是TCP四次挥手过程的…...
关于认证协议
本地用户认证 本地认证的意思就是,我们的电脑上存储着自己的账号密码,无论电脑是否联网,只要能开机,就可以输入账号密码登录到电脑中,工作组就是采用本地认证 本地认证流程 winlogon.exe -> 接收用户输入 -> …...
C#操作MySQL从入门到精通(20)——更新数据
前言: 谈到数据库,大家最容易脱口而出的就是增删改查,本文所说的更新数据就是增删改查的改,改变数据的意思。 本文测试使用的数据库如下: 1、更新一列 所谓更新一列的意思就是只更改一列数据,并且通常要使用where条件,因为不加这个条件的话会导致将所有行的数据进行…...
NVMe全闪存储系统性能测试及产品功能与应用场景
今天我们继续对全闪存储系统GS 5024UE的评测,重点关注GS 5024UE的性能测试数据,以及产品所具备的功能、应用场景。通过Windows IOmeter测试软件,来测试GS 5024UE设备的性能,在机器上配上24颗 NVMe 3.84TB硬盘, 16条32Gb FC数据&am…...
C#面:C#面向对象的思想主要包括什么?
C#面向对象的思想主要包括以下几个方面: 封装(Encapsulation):封装是将数据和操作数据的方法封装在一起,形成一个类。通过封装,可以隐藏类的内部实现细节,只暴露必要的接口给外部使用。这样可以…...
海南云亿商务咨询有限公司正规吗?怎么样?
在当下数字化浪潮汹涌的时代,抖音电商作为新兴的营销渠道,正以其独特的魅力和巨大的市场潜力,吸引着越来越多的企业和品牌投身其中。作为专注抖音电商服务的佼佼者,海南云亿商务咨询有限公司凭借专业的团队、丰富的经验和前瞻的战…...
【数据结构】排序(上)
个人主页~ 堆排序看这篇~ 还有这篇~ 排序 一、排序的概念及应用1、概念2、常见的排序算法 二、常见排序的实现1、直接插入排序(1)基本思想(2)代码实现(3)时间复杂度(4)空间复杂度 2…...
vue3+el-plus对eleplus对el-table表格进行拖拽(使用sortablejs进行列拖拽和行拖拽):
如有对表格拖拽进行限制某列或某行不进行拖拽的需求,请点击: vue3ele-plussortableJs对el-table使用sortableJs插件对表格拖拽时限定某列或某行不允许拖拽-CSDN博客 如果你已实现拖拽需求,但拖拽后发现表头并未改变的话,请点击&…...
Nginx如何隐藏版本号
1 找到nginx.conf配置文件进行修改 http{...server{listen 80 default_server;listen [::]:80 default_server;server_name _;root /usr/share/nginx/html;server_tokens off; #添加这一项就可以了location / {}error_page 404 /404.html;location /40…...
用C#(WinForm)开发触摸屏,体验感满满
用C#(WinForm)开发触摸屏,体验感满满...
LaneKeepingEnv(自动驾驶仿真)
LaneKeepingEnv环境的工作原理可以归纳如下: 初始化阶段: 环境在创建时,会调用__init__方法进行初始化。初始化过程中,会设置一些关键的属性,如lane(当前车道)、lanes(所有车道的列…...
C++类与对象(拷贝与类的内存管理)
感谢大佬的光临各位,希望和大家一起进步,望得到你的三连,互三支持,一起进步 个人主页:LaNzikinh-CSDN博客 文章目录 前言一.对象的动态建立和释放二.多个对象的构造和析构三.深拷贝与浅拷贝四.C类的内存管理总结 前言 …...
C语言----字符函数和字符串函数
在编程的过程中,我们要经常处理字符和字符串,为了方便操作字符和字符串,c语言标准库中提供的一系列库函数,接下来我们就开始学习与认识他们 1.字符分类函数 c语言中有一系列的函数是专门做字符分类的,也就是一个字符…...
未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...
AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...
技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...
