2013-04-26 2 views
4

У меня возникли проблемы с загрузкой изображения в Imgur с использованием модуля запросов python и API Imgur.Загрузка файла в imgur через python

Мой код выглядит следующим образом:

import base64 
import json 
import requests 

from base64 import b64encode 

client_id = 'my-client-id' 

headers = {"Authorization": "Client-ID my-client-id"} 

api_key = 'my-api-key' 

url = "http://api.imgur.com/3/upload.json" 

j1 = requests.post(
    url, 
    headers = headers, 
    data = { 
     'key': api_key, 
     'image': b64encode(open('1.jpg', 'rb').read()), 
     'type': 'base64', 
     'name': '1.jpg', 
     'title': 'Picture no. 1' 
    } 
) 

Я обычно получаю ошибку 400 ответа. Я не уверен, что myu client_id ошибочен, или если мой запрос неверен (у меня очень мало опыта по запросу URL), или если я неправильно использую API Imgur.

Я также хотел бы получить URL-адрес изображения после подачи этого. Я не уверен, есть ли у API команда для этого, или если у модуля python.requests есть трюк, который может позволить мне ПОЛУЧИТЬ данные, которые я только что опубликовал (POST).

Очень похожий вопрос был дан здесь, и код на самом деле работал !: Trouble sending a file to Imgur

Однако, когда я использовал мой client_id, InstEd идентификатора приложения, который был использован в коде, он возвращал ошибку 400, а а также, когда я изменил

из: URL = "http://api.imgur.com/2/upload.json" к: URL = "http://api.imgur.com/3/upload.json"

ответ

5

Это запрос v3, но вы не используете SSL, который является обязательным. Попробуйте установить

url = "https://api.imgur.com/3/upload.json" 
#  ^
+0

Спасибо! это сделал трюк! Запрос продолжался, но я не могу получить хеш URL-адреса изображения, которое я только что разместил. Вы знаете, как я должен это делать? – Arturo

+1

@Mecasickle, вы можете получить всю информацию в теле ответа. Просто добавьте к вашему коду то же самое, что: 'data = json.loads (j1.text) ['data']; print data ['link'], data ['id'], data ['deletehash'] ' ' – gaart

+0

Хорошо, это сделано. Теперь я пытаюсь получить его в галерее. Вот ссылка http://api.imgur.com/models/gallery_image – Arturo