Python自动将降价文章发布到WordPress网站
优采云 发布时间: 2020-08-06 05:05有许多WordPress客户端,并且有许多markdown编辑器也支持编辑文章,然后单击一下即可将其本地发布到WordPress网站. 但是本文想要实现的是使用Python脚本自动将本地文章发布到WordPress网站. 为什么我必须这样做?
大多数用于撰写文章的本地编辑器通常采用降价格式. 按照通常的规则写完文章后,将其复制并粘贴到WordPress后端编辑器中,然后调整格式. 许多markdown编辑器都可以导出HTML,但是我们不需要很多HTML标签和信息,因此手动进行非常麻烦.
这也是由于WordPress对降价支持不友好,并且插件也不是很令人满意,所以我不得不自己尝试一下. 整个过程大致是这样.
##编辑Yaml格式的md文件
使用任何markdown编辑器编辑md文本时,请在文章开头添加以下文章元数据. 如本文
---
title: Python自动发布markdown文章到WordPress网站
date: 2018-09-27 16:57
url: Python-auto-publish-markdown-post-to-WordPress
tag:
- "wordpress"
- "python"
category: 系统&运维
---
当然,在开始之前,我们需要使用一些Python库Python-frontmatter,markdown2,python-wordpress-xmlrpc,我们需要确保将这些库安装在本地计算机上. 建议使用Python3,以便以后处理某些中文路径信息时不会有太多麻烦.
##标题Python3,库安装
因为我使用的是MacOS,所以如果您使用的是Linux或Windows,则没有什么区别,但是安装方法不同. MacOS默认情况下带有Python2.7,我自己的实验中存在一些问题,我不想搜索并处理它. 毕竟,我们要拥抱新的Python3. 首先安装Python3
简单安装python
通过python3 -V检查Python3的当前版本. 通常情况下,pip3将自动安装在一起,然后我们将使用pip3依次安装所需的库.
pip3 install python-frontmatter
pip3 install markdown2
pip3 python-xmlrpc-wordpress
GitHub
##使用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))
如果没有错误,然后您登录到网站后端以进行查看,那么将以草稿的形式出现新的文章,并添加了类别,标签和url. 请注意,在编写md时,如果类别和标签最初在自动创建的WordPress中不可用.
为使py脚本顺利运行,应将上述代码合理地组合到wp.py中,然后按照python3 wp.py / md article path / run
##折腾摘要
最后,本地编辑器md运行py脚本以自动将文章发布到WordPress网站. 这篇文章就是这样写的.
但是这些是一些基本操作,尤其是Python-wordpress-xmlrpc模块可以实现许*敏*感*词*,在网站后台可以完成的操作中,几乎有90%可以通过Python-wordpress-xmlrpc进行远程操作. 例如上传文件,缩略图,用户权限,编辑现有文章,获取用户,文章和其他信息.
如果遇到问题,请与我讨论Q 957473256