博主信息
涵宇丶的博客
博文
31
粉丝
1
评论
0
访问量
12086
积分:0
P豆:105

wordpress自动发送文章

2020年01月21日 14:47:57阅读数:766博客 / 涵宇丶的博客 / python

安装

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 += '<img src="{}" class="alignnone size-medium wp-image-{}"/>'.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 '<img src="{}" class="alignnone size-medium wp-image-{}"/>'.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)

运行实例 »

点击 "运行实例" 按钮查看在线实例


全部评论

文明上网理性发言,请遵守新闻评论服务协议

条评论
暂无评论暂无评论!
  • 页面底部区域 foot.htm