Получение пустого изображения при использовании API imgur - PullRequest
3 голосов
/ 31 июля 2011

В настоящее время я разрабатываю небольшой скрипт, чтобы делать скриншоты и загружать их в imgur с помощью Python.

Код выглядит так:

import time
import os
import ImageGrab
import urllib
import urllib2

time.sleep(1)
shot = ImageGrab.grab()
dir = os.path.join(r'C:\SAMPLE\PATH', 'Screen ' + time.strftime(r'%Y-%m-%d %H-%M-%S') + '.png')
shot.save(dir)

data = urllib.urlencode({"key":'MY_API_KEY', "image":urllib.quote(open(dir,'rb').read().encode("base64"))})

site = urllib2.Request("http://imgur.com/api/upload.json", data)
s = urllib2.urlopen(site)

print s.read()

Я получаю ответ от imgur, но когда я открываю ссылку, я получаю пустое изображение (хотя его разрешение правильное). Я думаю, что метод кодирования base64 может быть отключен, но я в растерянности.

1 Ответ

0 голосов
/ 31 июля 2011

Вы должны использовать b64encode из модуля base64. Я не знаю почему, но это дает разные результаты:

from base64 import b64encode

(...)

data = urllib.urlencode({"key":'MY_API_KEY', "image":urllib.quote(b64encode(open(dir,'rb').read()))})
...