安装
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)
运行实例 »
点击 "运行实例" 按钮查看在线实例