博客园自动上传.md

cnblog

简介

​ 这是一个cnblog的本地博客自动上传工具。使用python编写,相比其他的博客上传,依赖简单。这个工具参考cnblogs_automatic_blog_uploading。程序没有使用参考所用的githook,而是建立本地数据,追踪新博客和已修改的博客。

功能

  • 批量化上传
  • 根据文件路径生成相应的标签
  • 能够追踪到未上传的本地博客,已更新的本地博客

安装

pip3 install --user pypi-xmlrpc datetime json time argparse
wget "https://raw.githubusercontent.com/muwuren/MyTools/main/cnblog_upload/cnblog.py"

使用

$ python cnblog.py -h
usage: cnblogs [-h] [-d DEPTH] location

本地博客同步

positional arguments:
  location

optional arguments:
  -h, --help            show this help message and exit
  -d DEPTH, --depth DEPTH
                        category start serial

程序将扫描指定的路径,指定路径位置深度0,忽略深度不足的文件,选择所有非隐藏文件夹下的md(markdown)文档上传。
程序从足够深度的位置开始,将文件的文件夹路径视为标签上传。具有相同文件名和相同标签的文件被视为同一文件。具体请看README.md。

具体说明

  1. -d:指定从location位置开始,忽略的文件深度。
  2. location: 指定搜索的文件位置
  3. 文件依赖depth和location决定其属性(标签),相同文件名,但不同属性被视为不同文件
  4. 文件属性不依赖路径的具体顺序。

假设有如下的目录:

image-20210130140200215

在当前hello路径下执行python cnblog.py -d 0 ./时,将上传hello路径下,mdmarkdown后缀文件。

  1. hello路径下的[1-2].md文件,属性为空,简称A

    hello/Two/Three路径下[1-2].md文件,属性为TwoThree,简称B;

    hello/Three/Two路径下[1-2].md文件,属性为ThreeTwo,简称C。

    A与B、C属性不同,不冲突,A可以正常上传。

    B、C 被看作相同文件,属性相同,均为TwoThree。具体上传哪个位置的文件,依赖python中os.path.listdir()具体实现。

已知问题

  1. 如果运行时,出现任何错误,请下次运行前需要删除$HOME/.config/cnblog/bloginfo.conf文件。造成此的原因是异常退出,不会保存更新的信息,导致旧信息使用,会造成重复上传。(已更新,目前异常发生时,将会已同步的保存数据)
  2. 每天最多更新(上传)100个博客,程序并未对此进行检测。可能会在未来更新中进行修复。
原文地址:https://www.cnblogs.com/nsfoxer/p/14354200.html