关于WordPress客户端很多,也有很多markdown编辑器也支持编辑完文章然后本地一键发布到WordPress网站。不过这篇文章要实现的是通过Python脚本来实现本地文章自动发布到WordPress网站上,而我自己怎么要这样折腾呢?

平时大多数写文章都用的本地编辑器,且是markdown格式的,按照常规写好文章以后复制然后粘贴到WordPress后台的编辑器里,然后再调整格式排版。随便很多markdown编辑器可以导出HTML,但是这样有很多我们不需要HTML标签和信息在里面,手动再去整体甚是乏累。

也归功于WordPress这东西对markdown支持不友好,插件实现什么的也不是很满意,索性只好自己动手试试了,整个过程大致是这样的。

  • 编辑markdown文章时候开头留有yaml格式的文章元数据,标题、分类、标签等,这些信息放这里以便后面自动获
  • 通过python-frontmatter库获取文章信息,标题、分类、标签、正文内容等,此时获取到的正文数据还是md格式的
  • 通过markdown2库将正文内容转换成HTML格式(很满意这个转换)
  • 最后将这些信息通过python-wordpress-xmlrpc库发布到网站上。

##编辑带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
brew install python
通过python3 -V来查看Python3当前的版本。正常情况下会自动把pip3也一起安装的,之后我们再用pip3依次来安装我们需要的库。

pip3 install python-frontmatter
pip3 install markdown2
pip3 python-xmlrpc-wordpress

GitHub

  • python-frontmatter
  • markdown2
  • python-xmlrpc-wordpress

##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

我们只需要将正文内容md格式通过markdown2转换一下,然后将正文内容赋值给一个变量,经过实现发现转换过来的内容编码不对,在后面的步骤会报错。然后我们通过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,NewPostwp = 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文章路径/运行

##折腾总结

总算曲折实现了本地编辑md运行py脚本自动发布文章到WordPress网站。这篇文章就是这样上来的。

不过这都是一些基本的操作,特别是Python-wordpress-xmlrpc这个模块可以实现的功能很多,几乎能在网站后台完成的操作,90%都能通过Python-wordpress-xmlrpc实现远程操作,比如上传文件、缩略图、用户权限、编辑已经存在文章、获取用户、文章等各种信息。

如果你遇到一些问题欢迎和我一起讨论Q 957473256

Python自动发布markdown文章到WordPress网站相关推荐

  1. wordpress自动发布_如何在WordPress中跟踪发布想法

    wordpress自动发布 Are you looking for a way to keep track of your post ideas in WordPress? Anyone who ha ...

  2. 免费WordPress自动采集插件工具【Wordpress网站必备】

    WordPress自动采集插件工具可在任意WordPress版本上使用,支持任意WordPress主题.不浪费服务器资源,不拖慢服务器!最近一直有朋友给我抱怨说WordPress采集插件太卡了,导致服 ...

  3. 每日简单小妙招:使用python自动登录CSDN等各大网站

    文章目录 1.代码演示 2.过程详解 2.1.chromedriver.exe驱动下载 2.1.1.chromedriver.exe简介 2.1.2.chromedriver.exe下载地址 2.1. ...

  4. 用python自动推送文章到kindle

    需求说明 公众号文章,还有付费订阅的一些专栏课程只能在手机或者电脑上阅读, 对于一直喜欢用kindle来阅读的我来说有些痛苦,就想着有没有办法每天自动把当天要阅读的新文章自动推送到kindle上,这样 ...

  5. 如何在medium上发布markdown文章

    medium 原生不支持markdown,因此我们只能通过该网站到import功能导入文章. 网上教程是通过github的同步,但是我们没有测试成功. 最后我是通过先在简书发布,然后在同步medium ...

  6. python自动评论_python实现博客网站自动评论器

    基本需求 登录博客园 调用评论接口 返回请求结果 确定流程之后,基本就是找突破口的环节了 实际的去评论一下,然后不管你用什么抓包工具都可以,只要抓取到你想要的数据,即可 评论API如下 Request ...

  7. Python 自动发文章到 wordpress

    如何使用Python将采集来的文章自动发表到wordpress博客呢,下面将具体操作步骤分享如下: 一.使用方法 1.将三个 模块 安装完成: 2.将代码复制成一个文件 wp.py; 3.将 md 格 ...

  8. 免费外贸Wordpress网站内容采集教程

    问:免费Wordpress采集插件好用吗?需要编写规则吗? 答:好用!不需要编写规则只需要导入关键词即可采集. 问:免费WordpressCMS采集插件安装复杂吗? 答:直接下载到本地电脑上,本地电脑 ...

  9. 文章生成器-自动写原创文章的软件免费

    文章生成器,免费自动写原创文章的软件.今天给大家分享一款万能的文章内容软件.支持自动采集,自动发布到网站,自动生成不同方式的原创文章,详细参考图片.同时还支持批量处理文章样式,文章排版. 根本上如今绝 ...

最新文章

  1. 2022-2028年中国丁二烯橡胶行业市场规模研究及前瞻分析报告
  2. 0x66.图论 - Tarjan算法与无向图连通性
  3. 阻塞队列BlockingQueue
  4. 微软KV Store Faster如何巧妙实现1.6亿ops
  5. 正则表达式学习笔记,电话号码、电子邮件、汉字、数字、字母的筛选
  6. python调用arcpy函数_python笔记之ArcPy函数列表
  7. Vmvare三种网络连接方式:桥接模式、NAT模式和HostOnly模式
  8. Xor异或是什么意思? - 已解决 - 搜搜问问
  9. 防火墙添加ip白名单_宝塔防火墙IP白名单添加/导入知道创宇云CDN节点IP段
  10. m126a linux驱动下载,惠普m126a驱动_惠普M126a打印机驱动安装 v15.0.15 稳定版-126g驱动网...
  11. pyserial的踩坑记录
  12. php 微信多客服系统,如何使用微信公众平台开发模式实现多客服
  13. 机器学习--使用朴素贝叶斯进行垃圾邮件分类
  14. jquery+css实现流星雨特效
  15. IDEA插件系列(87):Base64 image encoder插件——以base64编码的形式查看图像
  16. 有一个网页地址, 比如百度主页: https://www.baidu.com/ 如何得到它的内容?
  17. 决策树 建模_主题建模到类别树中
  18. android动态设置textview的id,动态调整TextView的Gravity
  19. 2019年初面试题汇总
  20. 操作系统真象还原第10章:输入输出系统

热门文章

  1. 用 Docker 现代化你的传统企业!|航海日志 Vol.22
  2. 食物卡路里 mysql_减肥十律
  3. 热点数据的发现、处理、更新
  4. Arduino_OLED电子时钟
  5. 使用MyBatis Generator自动生成持久层CRUD代码的两种方法
  6. 《Unity 射线检测》球形方向投射
  7. java jce_了解Java JCE的加密
  8. 四舍五入采用float
  9. 分支定界---branch and bound
  10. 树莓派教程(基于python编程)--初级篇