How do you create blogger posts using google blogger api with python?

731 views Asked by At

I have successfully used the google api sandbox and been able to create posts on my blogger website, that was by using it through HTTP post requests.

POST https://blogger.googleapis.com/v3/blogs/206150456/posts?key=[YOUR_API_KEY] HTTP/1.1

Authorization: Bearer [YOUR_ACCESS_TOKEN]
Accept: application/json
Content-Type: application/json

{
  "title": "Test",
  "content": "Hello World Test"
}

Basically I want to convert the above code into Python code.

Attempts : my code so far is

payload = '{"title": "A new post", "content": "With <b>exciting</b> content..."}'
r = requests.post("https://www.googleapis.com/blogger/v3/blogs/" + blogid + "/posts/" + auth + "/application/json/" + payload)

And I get the response

b'<!DOCTYPE html>\n<html lang=en>\n  <meta charset=utf-8>\n  <meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width">\n  **<title>Error 404** (Not Found)!!1</title>\n  <style>\n    *{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) no-repeat;margin-left:-5px}@media only screen and (min-resolution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% 100%;-moz-border-image:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) 0}}@media only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat;-webkit-background-size:100% 100%}}#logo{display:inline-block;height:54px;width:150px}\n  </style>\n  <a href=//www.google.com/><span id=logo aria-label=Google></span></a>\n  <p><b>404.</b> <ins>That\xe2\x80\x99s an error.</ins>\n  <p>The requested URL <code>/blogger/v3/blogs/2061504564313173903/posts/48738461363-jcoqroi84fk9q81nfsdcsvup6ve7hj75.apps.googleusercontent.com/application/json/%7B%22title%22:%20%22A%20new%20post%22,%20%22content%22:%20%22With%20%3Cb%3Eexciting%3C/b%3E%20content...%22%7D</code> was not found on this server.  <ins>That\xe2\x80\x99s all we know.</ins>\n'

Its not a authorisation error but more like a formatting error ? = Error 404

I was expecting to see a new post generated in on my blog

1

There are 1 answers

1
Youcef Amoura On
access_token = "Bearer {ACCESS_TOKEN}"
url = "https://www.googleapis.com/blogger/v3/blogs/{BLOG_ID}/posts/"

headers = {
    "Authorization": access_token,
    "Content-Type": "application/json"
}

data = {
    "kind": "blogger#post",
    "blog": {
        "id": BLOG_ID
    },
    "title": BLOG_TITLE,
    "content": BLOG_CONTENT,
    "labels": LIST_OF_LABELS
    "keyword": BLOG_KEYWORD
}

response = requests.post(url, headers=headers, json=data)