Ich habe früher "Zugriff auf die Twitter-API mit Python" geschrieben, aber um März 2014 wurde es möglich, mehrere Bilder und damit auch Bild-Tweets zu veröffentlichen Hinzugefügt, da sich die Spezifikationen anscheinend geändert haben.
Bis dahin die API statuses / update für reguläre Tweets und die [statuses / update_with_media](https: // dev) für Tweets mit Bildern .twitter.com / rest / reference / post / statuses / update_with_media), aber es gibt ein neues media / upload Es scheint, dass es hinzugefügt wurde und das vorherige update_with_media veraltet ist.
In der alten API wurden Bilder und Texte gleichzeitig veröffentlicht. In der neuen API wird das Bild anscheinend zuerst hochgeladen, die Medien-ID abgerufen und der Text getwittert.
Der Code sieht so aus. Ersetzen Sie "CK, CS, AT, AS" durch Ihren eigenen Schlüssel. Python2, 3 funktioniert mit beiden.
upload_media.py
#!/usr/bin/env python
# coding: utf-8
import json
from requests_oauthlib import OAuth1Session
CK = 'XXXXXXXXXXXXXXXXXXXXXX' # Consumer Key
CS = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' # Consumer Secret
AT = 'XXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' # Access Token
AS = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' # Accesss Token Secert
url_media = "https://upload.twitter.com/1.1/media/upload.json"
url_text = "https://api.twitter.com/1.1/statuses/update.json"
#Starten Sie die OAuth-Authentifizierungssitzung
twitter = OAuth1Session(CK, CS, AT, AS)
#Bildposting
files = {"media" : open('image.jpg', 'rb')}
req_media = twitter.post(url_media, files = files)
#Überprüfen Sie die Antwort
if req_media.status_code != 200:
print ("Bildaktualisierung fehlgeschlagen: %s", req_media.text)
exit()
#Medien-ID abrufen
media_id = json.loads(req_media.text)['media_id']
print ("Media ID: %d" % media_id)
#Veröffentlichen Sie Text mit Medien-ID
params = {'status': 'Bildposting-Test', "media_ids": [media_id]}
req_media = twitter.post(url_text, params = params)
#Überprüfen Sie die Antwort erneut
if req_media.status_code != 200:
print ("Textaktualisierung fehlgeschlagen: %s", req_text.text)
exit()
print ("OK")
Wenn Sie mit 4 Bildern twittern, sollten Sie 4 Mal Medien / Uploads durchführen und den Text mit allen Medien-IDs in einer Liste veröffentlichen. Ich habe es nicht versucht.
Recommended Posts