2017-12-19 4 views
0

Ich verwende Twitter von python in einer Umgebung, in der ich keine Dateien speichern kann.Python API: Tweet mit Medien ohne Datei

Ich bekomme einen HTTP-POST mit einem Text und einem Bild und möchte einen Tweet aus diesen Daten erstellen, ohne eine lokale Datei zu schreiben (es ist zappa auf AWS-Api-Umgebung).

Tweepy erlaubt nur Dateinamen, die für mich nicht funktioniert.

python-twitter scheint so etwas zu haben, aber ich kann kein Dokument dafür finden.

Soll ich nur POST-Anfragen an Twitter senden, um die Bilder hochzuladen? Gibt es einen einfacheren Weg?

+0

Wie erhalten Sie die Bilder? Und wenn Sie nicht permanent schreiben können, finden Sie einen Weg, um es online zu schieben, indem Sie es serialisieren, das heißt, wenn Sie das Dokument nicht finden können. –

+0

Ich bekomme es als HTTP-Post in base64, also sehr perfekt zum Versenden nach Twitter, aber Tweepy will es einfach machen und erlaubt nur einen Dateinamen. – flaschenpost

Antwort

1

Versuchen Sie, eine io.BytesIO an als file zu übergeben.

Dateiname - Der Dateiname des hochzuladenden Bildes. Dies wird automatisch geöffnet werden, wenn Datei

... angegeben

Datei - Eine Objektdatei, die anstelle Öffnungsdateinamen verwendet wird. Dateiname ist weiterhin erforderlich, für MIME-Typ-Erkennung und als Formularfeld zu verwenden, in den POST-Daten

Edit: Es sieht aus wie Sie die Bilddaten Base64 codiert haben. Sie können base64.b64decode verwenden, sie zu entschlüsseln, bevor Sie die io.BytesIO erstellen:

file = io.BytesIO(base64.b64decode(base64_data)) 
+0

Ah, bei der dritten Überprüfung habe ich herausgefunden, dass ich 'multipart-formdata' bekomme, nur das Beispiel sah aus wie einige codierte Daten. So bekomme ich schon Dateigriffe. – flaschenpost