2013-02-17 2 views
5

Sto usando le richieste in Python 2.7 per provare a cambiare la descrizione di un'immagine precedentemente caricata usando l'API. In conformità con Imgur's API manual ho usato questo:API Imgur che non modifica la descrizione dell'immagine esistente

r = requests.post('https://api.imgur.com/3/image/'+submission['id'], \ 
       headers={'Authorization':'Bearer '+access_token}, \ 
       data={'description':'blahblahblah'}, verify=False) 

Quello che ricevo in cambio è questo:

{u'status': 200, u'data': False, u'success': True} 

Quindi, per quanto posso vedere l'OAuth sta lavorando bene, ma l'API è di per sé tornare indietro "False" e la descrizione non viene modificata. Non sto trovando ulteriori indicazioni da nessuna parte riguardo questo particolare endpoint. Qualche idea?

+3

Hai un codice di 'status' di 200, e' Success' è 'true', in modo per quanto per quanto riguarda Imgur, la tua chiamata API ha avuto successo. Qualunque problema ci possa essere da qui in avanti, sono con l'API Imgur, * not * 'requests' o Python, a tale proposito. –

+1

L'unica cosa che potrei vedere che potresti fare diversamente è forse usare l'estensione '.json', quindi usa' 'https://api.imgur.com/3/image/{}.json'.format(submission ['id']) 'come invece l'URL. –

+0

Altrimenti, prendere in considerazione che le risposte Imgur GET sono altrimenti pesantemente memorizzate nella cache, il risultato dell'impostazione di una descrizione potrebbe essere nascosto per un po 'se i risultati della cache vengono ancora serviti per un po'. Cancella la cache del browser, se necessario. –

risposta

0

Forse tenta requests.put invece di requests.post (che si desidera modificare una risorsa esistente, senza la creazione di uno)

0

ho avuto questo stesso problema (utilizzando Perl), ottenendo un messaggio di "successo" quando si cerca per cambiare il titolo/descrizione tramite l'API v3 di imgur, nonostante non si siano verificate effettivamente modifiche, e alla fine ho scoperto il problema: ho dovuto impostare manualmente l'intestazione "Content-Type: application/json" per la richiesta da elaborare. In caso contrario, è stato restituito un messaggio di 200/successo ma non sono stati apportati cambiamenti effettivi. Lo stesso problema mi ha impedito di caricare immagini con la nuova API fino alla correzione.

0

So che è una vecchia domanda, ma forse aiuterà qualcuno. Per me funziona.

Aggiungi intestazione:

'Content-Type': 'application/json' 

E in requests.post uso json invece di data

r = requests.post(url, 
    headers={'Authorization':'Bearer '+access_token, 'Content-Type': 'application/json'}, 
    json={'description':'blahblahblah'}, verify=False)