2013-02-17 18 views
5

Używam poleceń w Pythonie 2.7, aby spróbować zmienić opis wcześniej przesłanego obrazu za pomocą interfejsu API. Zgodnie z Imgur's API manual użyłem to:Imgur API nie zmienia opisu istniejącego obrazu

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

Co dostanę w zamian to:

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

Tak, o ile widzę OAuth działa dobrze, ale sama API wracając "Fałsz" i opis się nie zmienia. Nie znajduję żadnych dalszych wskazówek w odniesieniu do tego konkretnego punktu końcowego. Jakieś pomysły?

+3

Masz 'status' kod 200, a' 'success' jest TRUE, tak daleko jak Imgur, twoje połączenie API zakończyło się powodzeniem. Bez względu na to, jakie mogą być problemy, skorzystaj z interfejsu Imgur API, * nie * 'requests' lub Python, jeśli o to chodzi. –

+1

Jedyne, co mogłem zobaczyć, mogłem zrobić inaczej, to być może użyć rozszerzenia '.json', więc użyj' 'https://api.imgur.com/3/image/{}.json'.format(submission ['id'])) jako adres URL. –

+0

W przeciwnym razie należy wziąć pod uwagę, że odpowiedzi Imgur GET są znacznie zbuforowane, wynik ustawienia może być ukryty przez pewien czas, jeśli wyniki pamięci podręcznej są nadal wyświetlane przez pewien czas. Wyczyść pamięć podręczną przeglądarki, jeśli musisz. –

Odpowiedz

0

Może spróbuj requests.put zamiast requests.post (chcesz zmodyfikować istniejący zasób, nie tworząc jedną)

0

miałem ten sam problem (przy użyciu Perl), dostaję komunikat „sukcesu” podczas próby aby zmienić tytuł/opis za pomocą interfejsu imgur API v3, mimo że w rzeczywistości nie nastąpiła żadna zmiana, iw końcu odkrył problem: musiałem ręcznie ustawić nagłówek "Content-Type: application/json" dla żądania, które ma zostać przetworzone. W przeciwnym razie zwrócono komunikat 200/powodzenie, ale nie wprowadzono rzeczywistej zmiany. Ten sam problem uniemożliwił mi przesyłanie zdjęć z nowym interfejsem API do czasu ich poprawienia.

0

Wiem, że to stare pytanie, ale może to pomoże komuś. Dla mnie to działa.

dodawać nagłówek:

'Content-Type': 'application/json' 

I requests.post użycie json zamiast data

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