pythongoogle-apigoogle-url-shortener

how to use Google Shortener API with Python


I want to write an app to shorten url. This is my code:

import urllib, urllib2
import json
def goo_shorten_url(url):
    post_url = 'https://www.googleapis.com/urlshortener/v1/url'
    postdata = urllib.urlencode({'longUrl':url})
    headers = {'Content-Type':'application/json'}
    req = urllib2.Request(
        post_url,
        postdata,
        headers
        )
    ret = urllib2.urlopen(req).read()
    return json.loads(ret)['id']

when I run the code to get a tiny url, it throws an exception: urllib2.HTTPError: HTTP Error 400: Bad Requests. What is wrong with this code?


Solution

  • I tried your code and couldn't make it work either, so I wrote it with requests:

    import requests
    import json
    
    def goo_shorten_url(url):
        post_url = 'https://www.googleapis.com/urlshortener/v1/url'
        payload = {'longUrl': url}
        headers = {'content-type': 'application/json'}
        r = requests.post(post_url, data=json.dumps(payload), headers=headers)
        print(r.text)
    

    Edit: code working with urllib:

    def goo_shorten_url(url):
        post_url = 'https://www.googleapis.com/urlshortener/v1/url'
        postdata = {'longUrl':url}
        headers = {'Content-Type':'application/json'}
        req = urllib2.Request(
            post_url,
            json.dumps(postdata),
            headers
        )
        ret = urllib2.urlopen(req).read()
        print(ret)
        return json.loads(ret)['id']