写了个工具帮助我自动更新公众号
我最近开始更新微信公众号,但是公众号的发布流程很复杂,即使我已经有现成的博客,但是发布到公众号上也要花很长时间,于是就开发了一个工具来帮助我自动更新公众号。
我从2020年开始写博客,到现在已经有大约五六十篇了,一篇篇手动在公众号发布一次要做很久,而且都是重复劳动,就不是很愿意做。
而且我一直都是用markdown来写博客的,即使现在手动把库存的博客发布到公众号,以后还是要一直手动更新,因为公众号是一个封闭的系统,编辑和管理文章都有自己的一套方案,长期来说,这也是一个麻烦。
基于上面两个原因,我就想自己开发一个工具来帮助我更新公众号,于是就有了这篇博客。
代码地址: markdown-to-wechat
以下内容是对使用这个工具的必要解释:
功能
主要作用就是把markdown文件同步到微信公众号中,不用手动一篇一篇重新编辑。
安装依赖
1 | pip3 install -r requirements.txt |
配置白名单和 token
微信公众号只允许来自于白名单的IP请求相关API,所以需要在微信公众号后台配置白名单。
后台路径:设置和开发 -> 基本配置 :填入服务器 IP,生成 token。
配置自定义变量
- var.py
我创建了一个var.py,内容如下:需要根据自己的实际情况进行修改1
2
3
4
5
6
7
8
9
10
11
12
13
14CONTENT_SOURCE_URL = "https://panzhixiang.cn" # 文章原地址,比如自己的博客网站
AUTHOR = "潘智祥" # 希望显示在公众号文章中的作者名字
IMAGE_PATH = "./myNotes/images" # markdown中引用的图片的路径
MARKDOWN_PATH = ["./myNotes/"] # markdown文件的路径,可以传入多个路径
FOOTER = '''
<div>
<br />
<br />
同步发布在我的个人博客上:<a href="https://panzhixiang.cn">https://panzhixiang.cn</a>
</div>
''' # 添加在每篇文章的底部的内容,如果没有,保留空字符串即可
# 以下是微信公众号的配置, 可以通过环境变量设置或者直接写在第二个引号中
WECHAT_APP_SECRET = os.environ.get('WECHAT_APP_SECRET', '')
WECHAT_APP_ID = os.environ.get('WECHAT_APP_ID', '') - 设置同步时间范围
这个工具是同步一定时间范围内的博客到公众号,代码如下:以上代码会同步从当前时间往前7天,往后2天的博客到公众号,可以根据自己的需求进行修改。1
2
3
4# 在sync.py中
for x in date_range(
datetime.now() - timedelta(days=7), datetime.now() + timedelta(days=2)
):
需要解释的是,这里用来对比的时间,是markdown文件中的属性date的值,而不是文件创建或者修改的时间,所以需要在markdown文件中添加date属性,比如:1
2
3
4
5
6
7---
title: markdown to wechat
date: 2020-12-12
tags:
- python
---
以下是正文
运行
1 | python3 sync.py |
注意事项
防止重复上传博客到公众号
1) 代码是通过计算markdown文件的md5值来判断是否已经被处理过,所以任何对文件的修改都会导致md5值的变化,从而导致重复上传。
2) 代码运行过一次之后产生一个名为“cache.bin”的文件,这里面存储了已经处理过的文件的md5值等信息,这是代码能“记住”处理过哪些博客的关键,如果要移动代码位置,一定要把这个文件一同移动,否则就会导致重复上传。封面图片
建议在每一篇博客的markdown文件中都要有至少一个图片,这样可以用你自己的图片作为封面图片,否则会随机冲https://picsum.photos中获取一张图片作为封面图片。
最后要说明的是,这个工具不是从零开发的,而是基于喵叔的markdown-to-wechat二次开发的,在此感谢喵叔开源代码。