折腾:
【已解决】给Python发布印象笔记帖子内容到WordPress文章时加上分类和标签
期间,去加上categories和tags之前,需要搞清楚,如何放到接口参数中:
postDict = { "title": title, # '【记录】Mac中用pmset设置GPU显卡切换模式' "content": content, # '<html>\n <div>\n 折腾:\n </div>\n <div>\n 【已解决】Mac Pro 2018款发热量大很烫非常烫\n </div>\n <div>\n 期间,...performance graphic cards\n </li>\n </ul>\n </ul>\n </ul>\n <div>\n <br/>\n </div>\n</html>' # "date_gmt": dateStr, "date": dateStr, # '2020-08-17T10:16:34' "slug": slug, # 'on_mac_pmset_is_used_set_gpu_graphics_card_switching_mode' "status": status, # 'draft' "format": postFormat, # 'standard' # TODO: categories, tags, featured_media, excerpt } createPostUrl = self.apiPosts resp = requests.post( createPostUrl, proxies=self.requestsProxies, headers=curHeaders, # data=json.dumps(postDict), json=postDict, # internal auto do json.dumps )
参考
【已解决】用Python发布印象笔记帖子内容到WordPress网站
的:
>>> post = WordPressPost() >>> post.title = 'My new title' >>> post.content = 'This is the body of my new post.' >>> post.terms_names = { >>> 'post_tag': ['test', 'firstpost'], >>> 'category': ['Introductions', 'Tests'] >>> } >>> wp.call(NewPost(post)) 5
好像直接给上category和post_tag都是str(即name)的list,就可以了?
而此处category就用第一个
curCategoryList = [] if curTagList: firstTag = curTagList[0] curCategoryList.append(firstTag)
然后用代码:
isUploadOk, respInfo = self.wordpress.createPost( title=curNote.title, # '【记录】Mac中用pmset设置GPU显卡切换模式' content=curNote.content, # '<!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml2.dtd">\n<en-note>\n <div>\n 折腾:\n </div>\n <div>\n 【已解决】Mac Pro 2018款发热量大很烫非常烫\n </div>。。。。。。high performance graphic cards\n </li>\n </ul>\n </ul>\n </ul>\n <div>\n <br/>\n </div>\n</en-note>' dateStr=dateStr, # '2020-08-17T10:16:34' slug=curNote.attributes.sourceURL, # 'on_mac_pmset_is_used_set_gpu_graphics_card_switching_mode' categories=curCategoryList, # ['Mac'] tags=curTagList, # ['切换', 'GPU', 'pmset', '显卡模式'] )
去尝试发布,看看效果
结果报错了:
20201201 09:53:28 crifanWordpress.py:122 INFO resp=<Response [400]> 20201201 09:53:50 crifanWordpress.py:254 INFO isCreateOk=False, respInfo={'errCode': 400, 'errMsg': '{"code":"rest_invalid_param","message":"\\u65e0\\u6548\\u53c2\\u6570\\uff1acategories, tags","data":{"status":400,"params":{"categories":"categories[0]\\u7684\\u7c7b\\u578b\\u4e0d\\u662finteger\\u3002","tags":"tags[0]\\u7684\\u7c7b\\u578b\\u4e0d\\u662finteger\\u3002"}}}'}
去看看啥原因导致400
去
转码后:
{'errCode': 400, 'errMsg': '{"code":"rest_invalid_param","message":"无效参数:categories, tags","data":{"status":400,"params":{"categories":"categories[0]的类型不是integer。","tags":"tags[0]的类型不是integer。"}}}'}
无效参数:categories, tags
说是让categories和tags都是int值,而不是此处的字符串
-》说明此接口接受的都是WordPress内部的已有tag? 的id编号?
后来继续:
【已解决】给Python发布印象笔记帖子内容到WordPress文章时加上分类和标签
确认就是:
【总结】
在调用:
POST /wp-json/wp/v2/posts
创建WordPress的post帖子时,传入的category和tag
不是(之前参考php版本以为的)name的list
而是id的list,且id是int数值,是对应WordPress中的category或tag的id
举例:
categoryIdList=[1374] tagIdList=[1367, 13224, 13225, 13226]
最后相关代码是:
postDict = { "title": title, # '【记录】Mac中用pmset设置GPU显卡切换模式' "content": content, # '<html>\n <div>\n 折腾:\n </div>\n <div>\n 【已解决】Mac Pro 2018款发热量大很烫非常烫\n </div>\n <div>\n 期间,...performance graphic cards\n </li>\n </ul>\n </ul>\n </ul>\n <div>\n <br/>\n </div>\n</html>' # "date_gmt": dateStr, "date": dateStr, # '2020-08-17T10:16:34' "slug": slug, # 'on_mac_pmset_is_used_set_gpu_graphics_card_switching_mode' "status": status, # 'draft' "format": postFormat, # 'standard' "categories": categoryIdList, # [1374] "tags": tagIdList, # [1367, 13224, 13225, 13226] # TODO: featured_media, excerpt } logging.debug("postDict=%s", postDict) # postDict={'title': '【记录】Mac中用pmset设置GPU显卡切换模式', 'content': '<html>\n <div>\n 折腾:\n </div>\n <div>\。。。。<br/>\n </div>\n</html>', 'date': '2020-08-17T10:16:34', 'slug': 'on_mac_pmset_is_used_set_gpu_graphics_card_switching_mode', 'status': 'draft', 'format': 'standard', 'categories': [1374], 'tags': [1367, 13224, 13225, 13226]} createPostUrl = self.apiPosts resp = requests.post( createPostUrl, proxies=self.requestsProxies, headers=curHeaders, # data=json.dumps(postDict), json=postDict, # internal auto do json.dumps )
最新代码详见:
对应的id,是从name中得到的
从WordPress中已有的tag和category中seach查询
查到了,就用已有的id
没查到,就新建一个category或tag,用新的id
完全的逻辑详见:
【已解决】给Python发布印象笔记帖子内容到WordPress文章时加上分类和标签
转载请注明:在路上 » 【已解决】Python调用WordPress的REST的接口发布帖子时如何加上目录categories和标签tags