J'ai pensé que ce serait génial s'il y avait un programme qui pourrait retracer les tweets de l'utilisateur sur Twitter et enregistrer les images publiées à la fois. Ce programme utilise Python 2.7, que j'étudie actuellement. Je pense que cela fonctionnera si vous avez un environnement d'exécution Python2.
En gros, la clé API de votre compte Twitter, l'identifiant du compte de l'utilisateur dont vous souhaitez retracer l'image et le nombre de tweets à retracer sont spécifiés dans le programme et exécutés. Il semble que le nombre maximum de tweets pouvant être retracés d'un utilisateur atteigne les 3200 derniers tweets en raison des restrictions de l'API. Il prend également en charge plusieurs tweets de publication d'images, mais les GIF, les vidéos, etc. ne sont pas enregistrés. Si vous ciblez un utilisateur avec un compte à clé, vous avez besoin de l'API du compte qui suit cet utilisateur.
imgcrawler_twi.py
#coding: UTF-8
from requests_oauthlib import OAuth1Session
import json
import twitkey
import requests
import sys, urllib
import os.path
import time
twitter = OAuth1Session(twitkey.twkey["CONSUMER_KEY"],
twitkey.twkey["CONSUMER_SECRET"],
twitkey.twkey["ACCESS_TOKEN"],
twitkey.twkey["ACCESS_TOKEN_SECRET"]
)
#Twitkey fichier séparé.Reportez-vous à chaque valeur de paramètre requise de py.
Get_Count = 17 #Get_Spécifiez le nombre de fois où le tweet est acquis dans Count
Get_At_Once = 200 #Get_At_Spécifiez le nombre de tweets pouvant être retracés une fois en une acquisition
User_Id = "" #User_Spécifiez l'ID de l'utilisateur qui souhaite retracer l'image jusqu'à l'ID Exemple:github
Path = "" #Spécifiez le chemin du fichier du répertoire dans lequel vous souhaitez enregistrer l'image dans l'exemple de chemin:./Images/
for i in range(1,Get_Count):
if(i==1):
params = {"count":Get_At_Once}
else:
params = {"count":Get_At_Once,"max_id":num}
req = twitter.get("https://api.twitter.com/"
"1.1/statuses/user_timeline.json"
"?screen_name=%s&include_rts=false" % User_Id,
params=params)
timeline = json.loads(req.text)
if(req.status_code == 200):
if(i==1):
counter=1
else:
counter=count
for tweet in timeline:
print counter
print tweet["text"]
num = tweet["id"]
counter=counter+1
if("extended_entities" in tweet.keys()):
if("media" in tweet["extended_entities"].keys()):
print len(tweet["extended_entities"]["media"])
for i in range(0,len(tweet["extended_entities"]["media"])):
if("type" in tweet["extended_entities"]["media"][i].keys()):
if(tweet["extended_entities"]["media"][i]["type"]=="photo"):
print tweet["text"]
url = tweet["extended_entities"]["media"][i]["media_url_https"]
img = urllib.urlopen(url)
Name = tweet["user"]["name"]
created_at = tweet["created_at"]
Month = created_at[4:7]
Date = created_at[8:10]
Hour = created_at[11:13]
Minute = created_at[14:16]
Second = created_at[17:19]
Year = created_at[26:]
img_name = Name+"_"+Year+"_"+Month+"_"+Date+"_"+Hour+"_"+Minute+"_"+Second
localfile = open(Path + img_name +"_"+str(i)+".jpg ", 'wb')
localfile.write(img.read())
img.close()
localfile.close()
else:
print "No Image"
count=counter
else:
print (req.status_code)
time.sleep(240)
#La gestion des erreurs
twitkey.py
#coding: UTF-8
twkey = {
"CONSUMER_KEY": "",
"CONSUMER_SECRET": "",
"ACCESS_TOKEN": "",
"ACCESS_TOKEN_SECRET": ""
}
#Veuillez saisir chaque paramètre
Dans twitkey.py, saisissez la clé API de votre compte Twitter. Le compte utilisé ici peut être abandonné ou authentique. Il y a quatre valeurs de paramètres requises, mais vous pouvez facilement les vérifier.
Les quatre valeurs requises cette fois sont CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN et ACCESS_TOKEN_SECRET.
Pour vérifier la clé API, cette page sera utile. http://phiary.me/twitter-api-key-get-how-to/
Il y a quatre valeurs de paramètres dans le programme. Spécifiez les valeurs requises pour chacun.
Get_Count =
Get_At_Once =
User_Id = ""
Path = ""
Utilisez "Get_Count" et "Get_At_Once" pour spécifier le nombre de tweets à revenir. Plus précisément, c'est comme effectuer l'opération de retour au tweet "Get_At_Once" fois "Get_Count-1". La limite du nombre de tweets pouvant être retracés à la fois est de 200. Par conséquent, la valeur maximale de "Get_At_Once" est 200. De plus, conformément aux spécifications, il existe une limite selon laquelle vous ne pouvez revenir qu'aux 3200 derniers tweets par utilisateur, veuillez donc vous assurer que "Get_Count-1" x "Get_At_Once" est égal ou inférieur à 3200. Si vous voulez beaucoup revenir en arrière, nous vous recommandons de spécifier 17 pour "Get_Count" et 200 pour "Get_At_Once".
Pour "User_Id", spécifiez l'identifiant de l'utilisateur qui souhaite tracer l'image. Par exemple, cela ressemble à "github".
Pour "Chemin", spécifiez le chemin du fichier du dossier dans lequel l'image sera enregistrée. Bien sûr, vous pouvez l'enregistrer n'importe où, mais par exemple, créez un dossier appelé "Images" dans le même répertoire que le code, et utilisez "./Images/" comme image.
"Nom du compte de l'utilisateur" _ "Date et heure du Tweet (année, mois, jour, heure, minute, seconde)" _ "0 à 3 (il s'agit de la numérotation lorsqu'il s'agit de tweets avec plusieurs images jointes)".
Étant donné que la date et l'heure du tweet sont obtenues à l'heure de Londres, il y a un décalage horaire de 9 heures.
Enregistrez twitkey .py et imgcrawler_twi.py dans le même répertoire et exécutez imgcrawler_twi.py. Il réussit si les images sont correctement enregistrées dans le dossier que vous avez spécifié.
Mettez ce module en cours d'exécution! Vous pouvez vous mettre en colère. Dans ce cas, essayez d'ajouter des modules tels que "requests" et "requests-oauthlib" avec pip avant de l'exécuter.
J'ai également posté le référentiel de ce robot sur github. S'il vous plaît, jetez un oeil! !! https://github.com/tyokuyoku/Twitter_Images_Crawler
Recommended Posts