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

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线