J'ai écrit plus tôt "Accéder à l'API Twitter avec Python", mais vers mars 2014, il est devenu possible de publier plusieurs images, et avec cela, autour de tweets d'images Ajouté car il semble que les spécifications ont changé.
D'ici là, l'API statuses / update pour les tweets réguliers et [statuses / update_with_media](https: // dev) pour les tweets avec images .twitter.com / rest / reference / post / statuses / update_with_media), mais il y a un nouveau media / upload Il semble qu'il ait été ajouté et que la précédente update_with_media soit obsolète.
Dans l'ancienne API, les images et les textes étaient publiés en même temps, mais dans la nouvelle API, il semble que l'image soit d'abord téléchargée, que l'ID média soit obtenu et que le texte soit tweeté.
Le code ressemble à ceci. Remplacez «CK, CS, AT, AS» par votre propre clé, le cas échéant. Python2, 3 fonctionne avec l'un ou l'autre.
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"
#Démarrer la session d'authentification OAuth
twitter = OAuth1Session(CK, CS, AT, AS)
#Publication d'images
files = {"media" : open('image.jpg', 'rb')}
req_media = twitter.post(url_media, files = files)
#Vérifiez la réponse
if req_media.status_code != 200:
print ("La mise à jour de l'image a échoué: %s", req_media.text)
exit()
#Obtenir l'ID média
media_id = json.loads(req_media.text)['media_id']
print ("Media ID: %d" % media_id)
#Message texte avec ID média
params = {'status': 'Test de publication d'image', "media_ids": [media_id]}
req_media = twitter.post(url_text, params = params)
#Vérifiez à nouveau la réponse
if req_media.status_code != 200:
print ("La mise à jour du texte a échoué: %s", req_text.text)
exit()
print ("OK")
Lorsque vous tweetez avec 4 images, je pense que vous devriez faire des médias / télécharger 4 fois et publier le texte avec tous les identifiants de médias dans une liste. Je n'ai pas essayé.
Recommended Posts