Как использовать API Google Shortener с Python
Я хочу написать приложение, чтобы сократить URL-адрес. Это мой код:
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']
когда я запускаю код, чтобы получить крошечный URL-адрес, он выдает исключение: urllib2.HTTPError: HTTP Error 400: Bad Requests
.
Что не так с этим кодом?
Ответы
Ответ 1
Я пробовал ваш код и не мог заставить его работать, поэтому я написал его с помощью 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
Изменить: код работает с 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']
Ответ 2
Я знаю, что этот вопрос старый, но он высокий на Google.
Еще одна вещь, которую нужно попробовать - это библиотеку pyshorteners, которую очень просто реализовать.
Вот ссылка:
https://pypi.python.org/pypi/pyshorteners
Ответ 3
С помощью ключа api:
import requests
import json
def shorten_url(url):
post_url = 'https://www.googleapis.com/urlshortener/v1/url?key={}'.format(API_KEY)
payload = {'longUrl': url}
headers = {'content-type': 'application/json'}
r = requests.post(post_url, data=json.dumps(payload), headers=headers)
return r.json()