Python-frontmatter库的使用我们新建一个脚本比如wp.md
优采云 发布时间: 2021-08-03 04:40Python-frontmatter库的使用我们新建一个脚本比如wp.md
##使用 Python-frontmatter 库
我们创建一个新的脚本,例如 wp.py。考虑到脚本后续使用的方便,通过命令行传递参数的方式将文档路径信息sys.argv[1]传递给命令行脚本。 sys 模块默认 sys.argv[0] 是脚本的名称,sys.argv[1] 是第一个参数信息,sys.argv[2] 是第二个参数信息。
当我们稍后运行 wp.py 脚本时,比如这个
python3 wp.py /Users/northgod/Dropbox/VVPLUS/Python 自动发布WordPress.md
这样sys.argv[1]得到的信息是/Users/northgod/Dropbox/VVPLUS/Python自动发布我们文章的WordPress.md的路径信息。
#!python
# -*- coding:utf-8 -*-
#导入模块
import sys
import markdown2
from markdown2 import Markdown
#获得md文章路径信息
dir = sys.argv[1]
#通过frontmatter.load函数加载读取文档里的信息
#这里关于Python-frontmatter模块的各种函数使用方式GitHub都有说明,下面直接贴可实现的代码
post = frontmatter.load(dir)
#将获取到的信息赋值给变量
post_title = post.metadata['title']
post_tag = post.metadata['tag']
post_category = post.metadata['category']
post_url = post.metadata['url']
#通过print函数来看我们获取到信息状态,确定无误后这个步骤是不需要的
print (post_title)
print (post_tag)
print (post_catagory)
print (post_url)
print (post.content)
##Markdown2 将 md 转换为 HTML
我们只需要通过markdown2将文本内容的md格式转换,然后将文本内容赋值给一个变量即可。执行后发现转换后的内容编码有误,后续步骤会报错。然后我们使用encode("utf-8")转换成utf-8。
#在上面的基础上导入markdown2模块
import markdown2
from markdown2 import Markdown
#post.content里面是我们md格式的正文内容,现在转换成HTML格式
markdowner = Markdown()
post_content_html = markdowner.convert(post.content)
post_content_html = post_content_html.encode("utf-8")
#现在print post_content_html看看,是不是HTML标签了
print (post_content_html)
##Python-wordpress-xmlrpc
我们已经获取并处理了上面我们文章数据的内容。标题、类别、标签、别名和正文内容都已分配给变量。现在我们正在等待使用 python-wordpress-xmlrpc 新的 文章 发布模块。相应的文章数据和内容将在发布后发布。
这里,如果你的 WordPress 关闭了 xmlrpc 接口,它将无法工作。首先确保开启xmlrpc发帖接口。部分优化插件会关闭xmlrpc接口。
#同样导入发布文章需要的模块
from wordpress_xmlrpc import Client, WordPressPost
from wordpress_xmlrpc.methods.posts import GetPosts,NewPost
wp = Client('你网站http地址/xmlrpc.php', '登录名', '密码')
#现在就很简单了,通过下面的函数,将刚才获取到数据赋给对应的位置
post = WordPressPost()
post.title = post_title
#post.slug文章别名
#我网站使用%postname%这种固定链接不想一长串,这里是最初md文章URL的参数,英文连字符格式
post.slug = post_url
post.content = post_content_html
#分类和标签
post.terms_names = {
'post_tag': post_tag,
'category': post_category
}
#post.post_status有publish发布、draft草稿、private隐私状态可选,默认草稿。如果是publish会直接发布
# post.post_status = 'publish'
#推送文章到WordPress网站
wp.call(NewPost(post))
如果没有错误,那么你登录网站background查看,会有一个新的文章草稿形式,并且已经添加了分类、标签和url。注意在写md的时候,如果classification和tag是WordPress的话是没有自动创建的。
为了让py脚本顺利运行,上面的代码应该合理组合在wp.py中,然后按照python3 wp.py /md文章path/run
##Toss 总结
最后发现本地编辑md运行py脚本自动发布文章到WordPress网站。这个文章 是这样出现的。
不过这些都是一些基本的操作,尤其是Python-wordpress-xmlrpc这个模块可以实现很*敏*感*词*,几乎90%可以在网站后台完成的操作都可以通过Python-wordpress-xmlrpc远程实现操作,如上传文件、缩略图、用户权限、编辑现有文章、获取用户、文章等信息。
如果遇到问题,请与我讨论Q 957473256