[PYTHON] Utilisez l'API Twitter pour réduire le temps nécessaire à Twitter (créer une chronologie de mise en évidence (comme))

Contexte

Qu'est-ce que Twitter: un outil du diable qui enlève un temps précieux à l'humanité

Afin de réduire au maximum le temps que prend Twitter, faisons quelque chose qui n'affiche que les tweets en surbrillance à la fois!

Ce que j'ai fait

・ Extrayez et affichez uniquement ceux qui ont le plus de favoris de la chronologie Twitter ・ Je voulais connaître les tendances de mes amis, pas les actualités, donc seuls les tweets de followers communs sont affichés.

Comment obtenir des données Twitter?

Nous utilisons quelque chose appelé l'API Twitter.

Qu'est-ce que l'API?

API : Application Programming Interface

  • Une spécification de l'interface utilisée par les composants logiciels pour interagir les uns avec les autres. En termes simples, il s'agit d'une interface configurée pour être plus concise lors de la programmation d'une application, pour vous éviter les problèmes de programmation. * Exposant: Wikipedia "Application Programming Interface"

Je vois, si vous utilisez l'API, vous pouvez faire diverses choses sans écrire beaucoup de code. En particulier, l'API des services Web s'appelle Web API, et il semble qu'il sera possible d'acquérir des données de services Web. (C'est aussi l'API Twitter)

Utilisons l'API Twitter!

Pour utiliser l'API Twitter, vous devez enregistrer votre compte sur le site des développeurs. https://dev.twitter.com/

Vous pouvez trouver de nombreuses façons de vous inscrire en effectuant une recherche. http://qiita.com/hazigin/items/d9caf26c23c65bd89976 https://syncer.jp/twitter-api-matome http://webnaut.jp/develop/633.html

Si vous donnez un point ・ Il est nécessaire d'enregistrer un numéro de téléphone dans le compte Twitter ・ Il est nécessaire d'enregistrer l'URL du site Web à créer (local est OK pour le moment) Je me sens comme.

Une fois l'inscription terminée · La clé du consommateur ・ Secret du consommateur ・ Ass et Ken ・ Access Token Secret Vous pouvez obtenir 4 clés. Vous êtes maintenant prêt.

Essayons de le faire!

Le langage est Python. Il semble y avoir plusieurs façons d'accéder à Twitter depuis Python, mais cette fois j'ai fait référence à ce site.

top_fav_timeline.py


# -*- coding:utf-8 -*-
%matplotlib inline
from requests_oauthlib import OAuth1Session
import json
import datetime
import urllib, cStringIO
from PIL import Image
import matplotlib.pyplot as plt

#Obtenir des jetons
CK = '******************'  # Consumer Key
CS = '******************'  # Consumer Secret
AT = '******************'  # Access Token
AS = '******************'  # Accesss Token Secert

#Vous pouvez définir les limites supérieure et inférieure du nombre de tweets lus et du nombre de favos
def top_fav_timeline(count=100, minlim=2, maxlim=30):
    """Affichez ceux avec des abonnés communs et un grand nombre de favos
    
argument
    count:
Nombre d'acquisitions de la chronologie (nombre d'affichages différents)
!! Peut-être à cause de la limite supérieure de l'acquisition des informations de suivi, si vous la rendez trop grande, cela ne fonctionnera pas!
    
    minlim, maxlim:
Limite inférieure du nombre de favos
    
    """

    #Obtenir la clé
    twitter = OAuth1Session(CK,CS,AT,AS)

    #Obtenir la chronologie
    url_timeline = "https://api.twitter.com/1.1/statuses/home_timeline.json"

    #Paramétrage, spécifiez ici le nombre d'acquisitions de la timeline
    params_timeline = {'count':count}

    #OBTENIR la chronologie avec OAuth
    req_timeline = twitter.get(url_timeline, params = params_timeline)

    if req_timeline.status_code == 200:
        #La réponse étant au format JSON, analysez-la
        timeline = json.loads(req_timeline.text)

        #utilisateur de la chronologie_obtenir le nom
        test = []
        for i in range(len(timeline)):
            test.append(timeline[i]["user"]["screen_name"])
        test_s = ','.join(test)
        params_friend = {'screen_name':test_s}

        #Obtenez le statut des utilisateurs et des abonnés sur la chronologie
        url_friend = "https://api.twitter.com/1.1/friendships/lookup.json"
        req_friend = twitter.get(url_friend, params = params_friend)
        friend_test = json.loads(req_friend.text)

        if req_friend.status_code == 200:
            #Accédez à chaque donnée de tweet acquise par chronologie
            for tweet in timeline:
                
                #Obtenez le statut d'abonné des utilisateurs tweetés
                for i in range(len(friend_test)):
                    if friend_test[i]['screen_name'] == tweet["user"]["screen_name"]:
                        test_num = i
                
                #Si l'utilisateur tweetant est un suiveur mutuel, il sera affiché dans la chronologie
                if u'followed_by' in friend_test[test_num]['connections']:
                    # favorite_Afficher le nombre au-dessus du seuil
                    if tweet["favorite_count"] >= minlim and tweet["favorite_count"] <= maxlim:
                        
                        #Affichage de l'image
                        file = cStringIO.StringIO(urllib.urlopen(tweet["user"]["profile_image_url_https"]).read())
                        img = Image.open(file)
                        #plt options divers paramètres
                        plt.figure(figsize=(0.5,0.5)) #Taille
                        plt.axis('off') #Masquer la ligne mémoire
                        plt.imshow(img)
                        plt.show()
                        
                        #Convertir l'heure du tweet en type datetime et la convertir en heure japonaise
                        dst = datetime.datetime.strptime(tweet["created_at"],'%a %b %d %H:%M:%S +0000 %Y') + datetime.timedelta(hours=9)
                        
                        #Afficher sur la chronologie
                        print dst
                        print tweet["user"]["name"] + " / @" + tweet["user"]["screen_name"]
                        print tweet["text"]
                        print '★:' + str(tweet["favorite_count"])
                        print '-------'

    else:
        #Si la chronologie n'a pas pu être obtenue
        print ("Error: %d" % req.status_code)

C'est fait. C'est plein de pour et si et ça fait mal. Depuis que je l'ai écrit dans Juyter Notebook,% matplotlib inline est au début.

Quand tu cours · Image de profil ・ Heure du Tweet ・ Id et nom d'affichage ・ Texte du Tweet ・ Nombre de favos Est imprimé. Il était difficile de récupérer le nom de l'écran de la chronologie à l'avance afin de ne pas faire plusieurs demandes, et d'accéder à l'URL de l'image pour afficher l'image de profil et extraire l'image directement de la ligne et l'afficher sur le jupyter. ..

À la fin

Cette fois, nous avons sélectionné et affiché des tweets de suivi mutuel, mais si vous modifiez un peu les conditions, vous devriez pouvoir afficher uniquement les tweets de suivi mutuel "pas". Cela peut être utile pour rechercher des actualités souvent favorisées.

Vous pouvez obtenir les informations des tweets sur la chronologie avec GET statuses / home_timeline, mais je pense que vous pouvez faire différentes choses car vous pouvez obtenir diverses informations telles que le corps du tweet, l'image du profil, l'heure du tweet et l'utilisateur qui a tweeté. ..

Profitons de Twitter!

Site référencé

Twitter API TIPS https://dev.twitter.com/rest/public

Accéder à l'API Twitter avec Python http://qiita.com/yubais/items/dd143fe608ccad8e9f85

De nombreuses clés OAuth apparaîtront, mais j'ai essayé de résumer chaque rôle http://d.hatena.ne.jp/mabots/20100615/1276583402

Pour convertir une date de chaîne en date / heure en Python. http://loumo.jp/wp/archive/20110408215311/

Recommended Posts

Utilisez l'API Twitter pour réduire le temps nécessaire à Twitter (créer une chronologie de mise en évidence (comme))
Obtenez le nombre de tweets liés à un certain mot-clé à l'aide de l'API Twitter
Je veux créer un Dockerfile pour le moment.
J'ai essayé de créer une API RESTful en connectant l'API rapide du framework Python explosif à MySQL.
Créer une API REST pour faire fonctionner dynamodb avec le Framework Django REST
Si vous voulez être guéri par l'image de Mia Nanasawa, appuyez sur l'API Twitter ♪
Pour le moment en utilisant FastAPI, je veux montrer comment utiliser l'API comme ça dans swagger
Créons-le en appliquant Protocol Buffer à l'API avec Serverless Framework.
Le format du message obtenu par Slack API est subtilement difficile à utiliser
Créez un filtre pour obtenir un jeton d'accès avec l'API Graph (Flask)
Comment utiliser MkDocs pour la première fois
Souhaitez-vous créer un CV Twitter?
Comment utiliser l'API Google Cloud Translation
Comment utiliser l'API du guide des programmes NHK
Utilisez l'API Kaggle dans un conteneur Docker
Créez une sous-sous-commande à l'aide de la commande click --netsted sub-sub -
Étapes pour créer un bot Twitter avec Python
Comment créer une API Rest dans Django
Créez une commande pour obtenir le journal de travail
Je souhaite créer une base de données de déjeuners [EP1] Django pour la première fois
Je souhaite créer une base de données de déjeuner [EP1-4] Django pour la première fois
Utilisons AWS Lambda pour créer un mécanisme pour notifier Slack lorsque la valeur surveillée par CloudWatch est dépassée sur Python
Lire la source Python-Markdown: Comment créer un analyseur
Créer un ensemble de données d'images à utiliser pour la formation
Créer une fonction pour visualiser / évaluer le résultat du clustering
Comment créer un sous-menu avec le plug-in [Blender]
Publiez sur votre compte en utilisant l'API sur Twitter
Rechercher la table à l'aide de sqlalchemy et créer un dictionnaire
Un script qui facilite la création de menus riches avec l'API de messagerie LINE
Comment créer un enregistrement en collant une relation au modèle source d'héritage dans le modèle hérité par Django
Un moyen simple de visualiser le temps pris en Python et un moyen plus intelligent de l'améliorer
Une histoire que j'ai eu du mal en essayant de créer une "application qui convertit des images comme des peintures" avec la première application Web