安装
pip install python-wordpress-xmlrpc
实例
# Author: 执笔画卿颜丶
# wordpress库
from wordpress_xmlrpc import Client, WordPressPost
from wordpress_xmlrpc.methods.posts import GetPosts, NewPost
from wordpress_xmlrpc.methods.users import GetUserInfo
from wordpress_xmlrpc.methods import posts
from wordpress_xmlrpc.methods import taxonomies
from wordpress_xmlrpc import WordPressTerm
from wordpress_xmlrpc.compat import xmlrpc_client
from wordpress_xmlrpc.methods import media, posts
# 其它库
import configparser, os
class yuChiSendWP():
def __init__(self):
# 初始化configparser
self.configparser = configparser.ConfigParser()
# 读取当前目录下的配置文件
self.configparser.read(os.getcwd() + '/config.ini', encoding='utf-8-sig')
# 初始化wp连接
self.wp = Client(self.configparser.get('配置', '域名') + 'xmlrpc.php', self.configparser.get('配置', '用户名'), self.configparser.get('配置', '密码'))
def send_wp_article(self, data):
# 实例WordPressPost类
post = WordPressPost()
# wp文章标题
post.title = data['title']
# 默认为文章状态为发布 文章状态,不写默认是草稿,private表示私密的,draft表示草稿,publish表示发布
post.post_status = 'publish'
# 文章标签与分类 格式为 data['term_names'] = {'post_tag': ['数组'], 'category': ['数组']} 如果存在不会创建,不存在则会创建
post.terms_names = data['term_names']
# 自定义字段 格式为 data['custom_fields'] = [{'key': '字段名称', 'value': '值'}] 如果存在不会创建,不存在则会创建,多个就在数组里添加多个字典
post.custom_fields = data['custom_fields']
# 是否需要上传图片
is_upload = self.configparser.get('配置', '是否需要上传图片')
# 判断用户是否需要上传图片
if is_upload == '是':
# wp内容拼接图片
data['content'] = data['content'] + self.upload_img_wp()
# 发送内容
post.content = data['content']
else:
# 发送内容
post.content = data['content']
# 发送文章
post.id = self.wp.call(posts.NewPost(post))
# 返回数据d
print('发送的文章名称为:【{}】, 数据id为【{}】'.format(data['title'], post.id))
def upload_img_wp(self):
# 读取配置文件config.ini图片参数
img_path = self.configparser.get('配置', '图片')
# 判断是否有多个图片
if img_path.find('|') != -1:
# 有就分隔|成数组
files = img_path.split('|')
# 图片内容
img_content = ''
# 遍历图片
for f in files:
print(f)
# 配置图片参数
post_data = {
'name': f,
'type': 'image/*', # mimetype
}
# 打开图片上传
with open(f, 'rb') as img:
post_data['bits'] = xmlrpc_client.Binary(img.read())
# 上传返回
result = self.wp.call(media.UploadFile(post_data))
# 拼接图片地址
img_content += ''.format(
result['link'], result['id'])
return img_content
else:
# 配置图片参数
post_data = {
'name': img_path,
'type': 'image/*', # mimetype
}
# 打开图片上传
with open(img_path, 'rb') as img:
post_data['bits'] = xmlrpc_client.Binary(img.read())
# 上传返回
result = self.wp.call(media.UploadFile(post_data))
# 拼接图片地址
return ''.format(
result['link'], result['id'])
wp = yuChiSendWP()
data = {
'title': '测试内容1',
'content': '文章内容1[rihide]很不错的资源11[/rihide]',
'term_names': {
'post_tag': ['测试'],
'category': ['分类'],
},
'custom_fields': [
{'key': 'cao_price', 'value': '10'},
{'key': 'cao_vip_rate', 'value': 0},
{'key': 'post_style', 'value': 'sidebar'},
]
}
if __name__ == '__main__':
wp.send_wp_article(data)
运行实例 »
点击 "运行实例" 按钮查看在线实例