[PYTHON] J'ai essayé de créer un script qui retrace les tweets d'un utilisateur spécifique sur Twitter et enregistre l'image publiée à la fois

introduction

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.

spécification

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.

code

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

Description du code

À propos de twitkey.py

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/

À propos de imgcrawler_twi.py

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 = "" 

À propos de "Get_Count" et "Get_At_Once"

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".

À propos de "User_Id"

Pour "User_Id", spécifiez l'identifiant de l'utilisateur qui souhaite tracer l'image. Par exemple, cela ressemble à "github".

À propos de "Chemin"

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.

À propos du nom de sauvegarde de l'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.

Courir

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é.

スクリーンショット 2017-03-22 20.19.29.png

Autre

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

J'ai essayé de créer un script qui retrace les tweets d'un utilisateur spécifique sur Twitter et enregistre l'image publiée à la fois
J'ai refactoré "J'ai essayé de faire un script qui enregistre les images postées à la fois en retournant sur les tweets d'un utilisateur spécifique sur Twitter".
J'ai créé une application Twitter qui identifie et enregistre l'image d'un personnage spécifique sur la chronologie de Twitter par pytorch transfer learning
Comment faire un Raspberry Pi qui parle les tweets d'un utilisateur spécifié
J'ai essayé de créer un site qui permet de voir facilement les informations mises à jour d'Azure
[Python] J'ai essayé de créer un programme simple qui fonctionne sur la ligne de commande en utilisant argparse
[Twitter] Je veux faire des tweets téléchargés (de mon compte) dans un beau CSV
[Aux messieurs sur Twitter] J'ai écrit un script pour convertir immédiatement .jpg-large en .jpg.
Recevez de nombreux tweets Twitter à la fois
L'histoire de l'adresse IPv6 que je souhaite conserver au minimum
Je veux créer un lecteur de musique et enregistrer de la musique en même temps
J'ai essayé de créer un BOT de traduction qui fonctionne avec Discord en utilisant googletrans
J'ai essayé de créer une API de reconnaissance d'image simple avec Fast API et Tensorflow
[LPIC 101] J'ai essayé de résumer les options de commande qui sont faciles à faire une erreur
J'ai essayé de faire quelque chose comme un chatbot avec le modèle Seq2Seq de TensorFlow
J'ai essayé de notifier la mise à jour de "Devenir romancier" en utilisant "IFTTT" et "Devenir un romancier API"
J'ai essayé de faire sonner le téléphone lorsqu'il a été publié sur le poste IoT
Un script qui transfère les tweets contenant des mots-clés spécifiques sur Twitter vers Slack en temps réel.
J'ai essayé de faciliter la modification du paramètre du proxy authentifié sur Jupyter
Pour extraire des données dans une colonne spécifique dans une feuille spécifique dans plusieurs fichiers Excel à la fois et mettre les données dans chaque colonne sur une ligne
J'ai essayé de publier automatiquement sur ChatWork au moment du déploiement avec Fabric et ChatWork Api
J'ai créé un outil pour obtenir les liens de réponse d'OpenAI Gym en même temps
Script Python qui va de la recherche Google à l'enregistrement de la page de résultats de recherche à la fois
Comment insérer un processus spécifique au début et à la fin de l'araignée avec la tremblante
J'ai essayé de trouver l'entropie de l'image avec python
Un script Python qui enregistre une image de presse-papiers (GTK) dans un fichier.
J'ai essayé de changer le script python de 2.7.11 à 3.6.0 sur Windows10
J'ai écrit un script qui divise l'image en deux
Publiez le script shell créé pour réduire les problèmes de création de LiveUSB sous Linux
J'ai créé un robot Line qui devine le sexe et l'âge d'une personne à partir de l'image
L'histoire de la création d'un outil qui fonctionne sur Mac et Windows sur le site de développement de jeux
J'ai essayé de créer une configuration RAID logicielle SATA qui démarre le système d'exploitation sur Ubuntu Server
J'ai essayé de créer un environnement serveur qui fonctionne sous Windows 10
J'ai essayé de créer une expression régulière de "montant" en utilisant Python
J'ai essayé de créer une expression régulière de "temps" en utilisant Python
J'ai essayé de créer l'image de démarrage SD de LicheePi Nano
J'ai essayé de créer une expression régulière de "date" en utilisant Python
J'ai analysé les tweets sur le nouveau virus corona publiés sur Twitter, partie 2
J'ai essayé d'enregistrer une station sur la plateforme IoT "Rimotte"
J'ai essayé de couper une image fixe de la vidéo
J'ai essayé de créer un mécanisme de contrôle exclusif avec Go
[Python] Créez un script qui utilise FeedParser et LINE Notify pour informer LINE des dernières informations sur le nouveau virus corona du ministère de la Santé, du Travail et des Affaires sociales.
J'ai analysé les tweets sur le nouveau virus corona publiés sur Twitter, partie 2
(Maintenant) j'ai essayé d'analyser le nouveau virus corona (COVID-19)
J'ai essayé de créer un script qui retrace les tweets d'un utilisateur spécifique sur Twitter et enregistre l'image publiée à la fois
J'ai essayé d'utiliser des données PDF de soins médicaux en ligne basés sur la propagation d'une nouvelle infection à coronavirus
J'ai vérifié l'image de l'Université des sciences sur Twitter avec Word2Vec.
Tracez la propagation du nouveau virus corona
Recevez uniquement des tweets d'images sur Twitter
J'ai refactoré "J'ai essayé de faire un script qui enregistre les images postées à la fois en retournant sur les tweets d'un utilisateur spécifique sur Twitter".
J'ai essayé de prédire le comportement du nouveau virus corona avec le modèle SEIR.
Folding @ Home sur Linux Mint pour contribuer à l'analyse du nouveau virus corona
Je suis tombé sur l'API Hatena Keyword
Publier le sujet de Gmail sur Twitter
Estimer le pic d'infectivité du nouveau virus corona
Les prévisions épidémiques du nouveau virus corona ont été publiées sur le Web à une vitesse explosive
J'ai essayé d'afficher le degré d'infection par le virus corona sur la carte thermique Seaborn
J'ai essayé d'envoyer automatiquement la littérature du nouveau virus corona à LINE avec Python
J'ai essayé de faire la différence de Config avant et après le travail avec le script pyATS / Genie self-made
J'ai essayé de transformer l'image du visage en utilisant sparse_image_warp de TensorFlow Addons
J'ai essayé de déplacer l'image vers le dossier spécifié en faisant un clic droit et un clic gauche
J'ai essayé d'obtenir les résultats de Hachinai en utilisant le traitement d'image
J'ai essayé de visualiser la tranche d'âge et la distribution des taux d'Atcoder
zoom J'ai essayé de quantifier le degré d'excitation de l'histoire lors de la conférence
J'ai essayé d'extraire et d'illustrer l'étape de l'histoire à l'aide de COTOHA
J'ai essayé de vérifier et d'analyser l'accélération de Python par Cython
L'histoire de la création de Botonyan qui renvoie le contenu de Google Docs en réponse à un mot-clé spécifique sur Slack