博客上传脚本——博客园

致谢

本项目基于pycnblog,由dongfanger等贡献者完成开发。在此特别感谢原作者的杰出工作。同时,感谢所有为开源社区做出贡献的开发者们!

功能

目前,仅支持上传至博客园的随笔。

  • 默认“未发布”,可选择直接发布
  • 重复上传,则更新博客
  • 提供类别提示
  • 选择上传的类别。若选择的类别不存在,则会创建新类别

环境配置

  1. 克隆仓库

git clone git@github.com:Shane-shy/pycnblog.git

  1. 环境配置:需要pythonpip以及库函数pyyaml,库函数可以自动安装。三种情况命令行都会进行相应提示。

  2. 修改配置文件config.yaml

    • blog_url:在博客后台>设置,页面最下方的MetaWeblog访问地址
    • blog_id:blog_url的结尾部分
    • username:登录用户名,跟blog_id不一定是同一个,最好去用户设置内查看
    • password:在博客后台>设置,页面最下方的MetaWeblog访问令牌
  3. 相关补充文件

    • config.yaml
    # 注意引号
    blog_url: xxx
    blog_id: 'xxx'
    username: 'xxx'
    # MetaWeblog访问令牌
    password: 'xxx'
    
    # 是否生成图片替换后本地文件,默认False关闭
    gen_network_file: False
    
    # 上传后是否发布,默认未发布,设置True为发布
    publish: False
    
    # 图片自定义显示格式,默认不设置
    
    # 设置居中和宽度
    # img_format: "<center><img src="" style="width:100%;" /></center>"
    
    # 还原typora图片样式,居中,设置zoom,上传后无需再手动调整图片大小
    img_format: typora
    
    # 不设置
    #img_format: ""
    
    • linux_upload_markdown.sh
    #!/bin/bash
    
    # 设置getCategories.py的绝对路径
    PYTHON_CATEGORIES_PATH=""
    # 设置upload_markdown.py的绝对路径
    PYTHON_UPLOAD_PATH=""
    
    # &> /dev/null:重定向并丢弃,避免将检测结果输出在终端,
    # 检查是否安装了 Python
    if  ! command -v python3 &> /dev/null;then
        echo "Python3 未安装,请安装 Python3。"
        exit 1
    fi
    
    # 检查是否安装了 pip
    if  ! command -v pip3 &> /dev/null;then
        echo "pip3 未安装,请安装 pip3。"
        exit 1
    fi
    
    # 检查是否安装了所需的 Python 包
    REQUIRED_PKG="pyyaml"
    for PKG in $REQUIRED_PKG; do
        if ! pip3 show $PKG &> /dev/null; then
            echo "$PKG 未安装,正在安装..."
            pip3 install $PKG
        fi
    done
    
    # 检测是否配置了Python脚本路径
    if [ -z $PYTHON_UPLOAD_PATH ];then
      echo "未配置upload_markdown.py脚本路径"
      exit 0
    fi
    
    if [ -z $PYTHON_CATEGORIES_PATH ];then
      echo "未配置getCategories.py脚本路径"
      exit 0
    fi
    
    
    
    while true; do
      # read:按行读取,可以一次性读取多个值;参数p:读入字符串之前,打印的提示字符串;
        read -p  "Please input file path: " filePath
        python "$PYTHON_CATEGORIES_PATH"
        read -p  "Please input categories (separated by space): " category
        python "$PYTHON_UPLOAD_PATH" "$filePath" "$category"
        status=$?
        if [ $status -eq 0 ];then
          echo "Uploading success"
          break
        else
          echo "Uploading fail"
        fi
    done
    
    • mac_upload_markdown:应该与linux_upload_markdown.sh相同

使用方法

  • Linux:bash linux_upload_markdown.sh,根据提示执行之后操作。Please input file path:时,可以直接将文件拖入命令行,就能生成绝对路径。通过测试。
  • Macos:与Linux相同,通过测试。
  • Windows:本项目实际运行是python脚本,因此不存在操作系统限制。笔者能力有限,若希望实现Windows终端执行本脚本,请自行编写终端脚本文件。

常见问题

  1. 上传失败,留意终端报错信息。
  2. 图片无法上传、图片文件路径正确但程序无法找到。
    • 检查是否存在“空图像”,如![]()\<img src = "" />。若存在,请删除。
    • 检查图片路径是否存在括号嵌套问题,如![](())。使用正则表达式筛选括号嵌套问题难度大,笔者能力有限,没能实现,所以请修改图片名称或图片路径为非括号嵌套形式。
posted @ 2024-05-24 13:05  顾子郤  阅读(17)  评论(1编辑  收藏  举报