2011-07-31 21 views
3

私は現在、スクリーンショットを取得してPythonを使用してimgurにアップロードするための小さなスクリプトを開発しています。imgurのAPIを使用して空のイメージを取得する

コードは次のようになります。

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エンコーディングメソッドがオフになるかもしれないと思うが、私は迷っている。

+0

読んだファイルにはscreengrabが保存されていますか?ハードコーディングされた名前の別のイメージで試してみてください。 – agf

+0

@agfはい、ファイル*はそこにあり、空きがない別のイメージへのハードコードされたパスを試しました。しかし、ありがとう。 –

答えて

1

base64モジュールのb64encodeを使用してください。理由はわかりませんが、結果は異なります:

from base64 import b64encode 

(...) 

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

同じ結果が得られます。 –

+0

私は何が間違っているのか分からない...私はpythonとimgurのJSON APIのいくつかの例を検索し、あなたのコードは正しいようだ:http://garciat.info/easy-python-imgur-uploader http:// pastebin .com/NiaJbhhP – nmat

+0

@eryksun:そうだった。どうもありがとう! –

関連する問題