使用 Blogger API v3 和 Python 插入草稿博客 post
Insert a draft blog post using Blogger API v3 with Python
我正在尝试 post 使用 Blogger Api v3 客户端库的文章。
https://developers.google.com/blogger/docs/3.0/libraries
我能够 运行 这个示例应用程序来获取我的博客名称和 posts。
https://github.com/google/google-api-python-client/tree/master/samples/blogger
我写了这段代码来插入一个 post 作为草稿,我能够创建一个草稿。然而里面并没有body。
from __future__ import print_function
import sys
from oauth2client import client
from googleapiclient import sample_tools
def main(argv):
# Authenticate and construct service.
service, flags = sample_tools.init(
argv, 'blogger', 'v3', __doc__, __file__,
scope='https://www.googleapis.com/auth/blogger')
try:
users = service.users()
# Retrieve this user's profile information
thisuser = users.get(userId='self').execute()
blogs = service.blogs()
# Retrieve the list of Blogs this user has write privileges on
thisusersblogs = blogs.listByUser(userId='self').execute()
posts = service.posts()
blog = thisusersblogs['items'][0]
if blog['id'] == '*** my_blog_id ***':
posts.insert(blogId=blog['id'], body='test post', isDraft=True).execute()
except client.AccessTokenRefreshError:
print ('The credentials have been revoked or expired, please re-run'
'the application to re-authorize')
if __name__ == '__main__':
main(sys.argv)
预期结果: 'test post' 草率 post
实际结果:草案中没有正文post
你需要在 body 中传递对象而不是字符串,只需像这样定义一个对象
body = {
"kind": "blogger#post",
"id": "6814573853229626501",
"title": "posted via python",
"content":"<div>hello world test</div>"
}
posts.insert(blogId=blog['id'], body=body, isDraft=True).execute()
我正在尝试 post 使用 Blogger Api v3 客户端库的文章。
https://developers.google.com/blogger/docs/3.0/libraries
我能够 运行 这个示例应用程序来获取我的博客名称和 posts。
https://github.com/google/google-api-python-client/tree/master/samples/blogger
我写了这段代码来插入一个 post 作为草稿,我能够创建一个草稿。然而里面并没有body。
from __future__ import print_function
import sys
from oauth2client import client
from googleapiclient import sample_tools
def main(argv):
# Authenticate and construct service.
service, flags = sample_tools.init(
argv, 'blogger', 'v3', __doc__, __file__,
scope='https://www.googleapis.com/auth/blogger')
try:
users = service.users()
# Retrieve this user's profile information
thisuser = users.get(userId='self').execute()
blogs = service.blogs()
# Retrieve the list of Blogs this user has write privileges on
thisusersblogs = blogs.listByUser(userId='self').execute()
posts = service.posts()
blog = thisusersblogs['items'][0]
if blog['id'] == '*** my_blog_id ***':
posts.insert(blogId=blog['id'], body='test post', isDraft=True).execute()
except client.AccessTokenRefreshError:
print ('The credentials have been revoked or expired, please re-run'
'the application to re-authorize')
if __name__ == '__main__':
main(sys.argv)
预期结果: 'test post' 草率 post
实际结果:草案中没有正文post
你需要在 body 中传递对象而不是字符串,只需像这样定义一个对象
body = {
"kind": "blogger#post",
"id": "6814573853229626501",
"title": "posted via python",
"content":"<div>hello world test</div>"
}
posts.insert(blogId=blog['id'], body=body, isDraft=True).execute()