[PYTHON] Verwenden Sie die Twitter-API, um die von Twitter benötigte Zeit zu verkürzen (erstellen Sie eine Hervorhebungszeitleiste).

Hintergrund

Was ist Twitter? Ein Werkzeug des Teufels, das der Menschheit wertvolle Zeit nimmt

Um den Zeitaufwand für Twitter so gering wie möglich zu halten, erstellen wir etwas, das nur Tweets auf einmal hervorhebt!

Was ich getan habe

・ Extrahieren und zeigen Sie nur diejenigen mit den meisten Favoriten aus der Twitter-Timeline an ・ Ich wollte die Trends meiner Freunde kennen, nicht die Nachrichten, daher werden nur die Tweets der gemeinsamen Follower angezeigt.

Wie erhalte ich Twitter-Daten?

Wir verwenden die sogenannte Twitter-API.

Was ist API?

API : Application Programming Interface

  • Eine Spezifikation der Schnittstelle, über die Softwarekomponenten miteinander interagieren. Einfach ausgedrückt handelt es sich um eine Schnittstelle, die beim Programmieren einer Anwendung präziser eingerichtet ist, um Ihnen die Programmierprobleme zu ersparen. * * Aussteller: Wikipedia "Application Programming Interface"

Ich sehe, wenn Sie API verwenden, können Sie verschiedene Dinge tun, ohne viel Code zu schreiben. Insbesondere wird die API von Webdiensten als Web-API bezeichnet, und es scheint möglich zu sein, Daten von Webdiensten zu erfassen. (Dies ist auch die Twitter-API)

Verwenden wir die Twitter-API!

Um die Twitter-API verwenden zu können, müssen Sie Ihr Konto auf der Entwicklerseite registrieren. https://dev.twitter.com/

Sie können viele Möglichkeiten finden, sich zu registrieren, indem Sie suchen. http://qiita.com/hazigin/items/d9caf26c23c65bd89976 https://syncer.jp/twitter-api-matome http://webnaut.jp/develop/633.html

Wenn Sie einen Punkt geben ・ Es ist erforderlich, eine Telefonnummer im Twitter-Konto zu registrieren ・ Es ist erforderlich, die URL der zu erstellenden Website zu registrieren (lokal ist vorerst in Ordnung). Ich fühle mich wie.

Sobald die Registrierung abgeschlossen ist ・ Verbraucherschlüssel ・ Verbrauchergeheimnis ・ Arsch und Ken ・ Zugriff auf Token Secret Sie können 4 Schlüssel bekommen. Sie sind jetzt bereit.

Lass es uns machen!

Die Sprache ist Python. Es scheint verschiedene Möglichkeiten zu geben, über Python auf Twitter zuzugreifen, aber diesmal habe ich auf [diese Site] verwiesen (http://qiita.com/yubais/items/dd143fe608ccad8e9f85).

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

#Holen Sie sich Token
CK = '******************'  # Consumer Key
CS = '******************'  # Consumer Secret
AT = '******************'  # Access Token
AS = '******************'  # Accesss Token Secert

#Sie können die Ober- und Untergrenze für die Anzahl der gelesenen Tweets und die Anzahl der Favoriten festlegen
def top_fav_timeline(count=100, minlim=2, maxlim=30):
    """Zeigen Sie diejenigen mit gemeinsamen Anhängern und einer großen Anzahl von Favoriten an
    
Streit
    count:
Anzahl der Timeline-Erfassungen (Anzahl der ungleichen Anzeigen)
!! Möglicherweise funktioniert es aufgrund der Obergrenze für die Erfassung von Follow-Informationen nicht, wenn Sie es zu groß machen!
    
    minlim, maxlim:
Untergrenze der Anzahl der Favoriten
    
    """

    #Schlüssel holen
    twitter = OAuth1Session(CK,CS,AT,AS)

    #Holen Sie sich die Zeitleiste
    url_timeline = "https://api.twitter.com/1.1/statuses/home_timeline.json"

    #Parametereinstellung, hier geben Sie die Anzahl der Timeline-Erfassungen an
    params_timeline = {'count':count}

    #Holen Sie sich die Zeitleiste mit OAuth
    req_timeline = twitter.get(url_timeline, params = params_timeline)

    if req_timeline.status_code == 200:
        #Da die Antwort im JSON-Format vorliegt, analysieren Sie sie
        timeline = json.loads(req_timeline.text)

        #Timeline-Benutzer_Name bekommen
        test = []
        for i in range(len(timeline)):
            test.append(timeline[i]["user"]["screen_name"])
        test_s = ','.join(test)
        params_friend = {'screen_name':test_s}

        #
        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:
            #Greifen Sie auf alle von der Timeline erfassten Tweet-Daten zu
            for tweet in timeline:
                
                #Erhalten Sie den Follower-Status von getwitterten Benutzern
                for i in range(len(friend_test)):
                    if friend_test[i]['screen_name'] == tweet["user"]["screen_name"]:
                        test_num = i
                
                #Wenn der Tweeting-Benutzer ein gegenseitiger Follower ist, wird dies in der Timeline angezeigt
                if u'followed_by' in friend_test[test_num]['connections']:
                    # favorite_Anzahl über dem Schwellenwert anzeigen
                    if tweet["favorite_count"] >= minlim and tweet["favorite_count"] <= maxlim:
                        
                        #Bildschirm
                        file = cStringIO.StringIO(urllib.urlopen(tweet["user"]["profile_image_url_https"]).read())
                        img = Image.open(file)
                        #plt Optionen verschiedene Einstellungen
                        plt.figure(figsize=(0.5,0.5)) #Größe
                        plt.axis('off') #Speicherzeile ausblenden
                        plt.imshow(img)
                        plt.show()
                        
                        #Konvertieren Sie die Tweet-Zeit in den Datetime-Typ und konvertieren Sie sie in die japanische Zeit
                        dst = datetime.datetime.strptime(tweet["created_at"],'%a %b %d %H:%M:%S +0000 %Y') + datetime.timedelta(hours=9)
                        
                        #Anzeige auf der Timeline
                        print dst
                        print tweet["user"]["name"] + " / @" + tweet["user"]["screen_name"]
                        print tweet["text"]
                        print '★:' + str(tweet["favorite_count"])
                        print '-------'

    else:
        #Wenn die Zeitleiste nicht abgerufen werden konnte
        print ("Error: %d" % req.status_code)

Es ist fertig. Es ist voll für und wenn und es fühlt sich schlecht an. Da ich es in einem Notizbuch geschrieben habe, steht% matplotlib inline am Anfang.

Wenn du rennst ·Profilbild ・ Tweet Zeit ・ ID und Anzeigename ・ Tweet-Text ・ Anzahl der Favoriten Wird gedruckt. Es war mühsam, den Bildschirmnamen im Voraus von der Timeline abzurufen, um nicht mehrere Anforderungen zu stellen, und auf die Bild-URL zuzugreifen, um das Profilbild anzuzeigen und das Bild direkt aus dem Internet abzurufen und auf dem Jupiter anzuzeigen. ..

Am Ende

Dieses Mal haben wir Tweets mit gegenseitiger Verfolgung ausgewählt und angezeigt. Wenn Sie jedoch die Bedingungen ein wenig ändern, sollten Sie nur Tweets mit gegenseitiger Verfolgung "nicht" anzeigen können. Dies kann nützlich sein, um nach Nachrichten zu suchen, die häufig bevorzugt werden.

Sie können die Informationen von Tweets auf der Timeline mit GET statuses / home_timeline abrufen, aber ich denke, dass Sie verschiedene Dinge tun können, da Sie verschiedene Informationen wie den Tweet-Text, das Profilbild, die Tweet-Zeit und den Benutzer, der getwittert hat, abrufen können. ..

Lass uns Twitter genießen!

Referenzierte Site

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

Greifen Sie mit Python auf die Twitter-API zu http://qiita.com/yubais/items/dd143fe608ccad8e9f85

Es werden viele OAuth-Schlüssel angezeigt, aber ich habe versucht, jede Rolle zusammenzufassen http://d.hatena.ne.jp/mabots/20100615/1276583402

So konvertieren Sie ein Zeichenfolgendatum in Python in datetime. http://loumo.jp/wp/archive/20110408215311/

Recommended Posts

Verwenden Sie die Twitter-API, um die von Twitter benötigte Zeit zu verkürzen (erstellen Sie eine Hervorhebungszeitleiste).
Ermitteln Sie mithilfe der Twitter-API die Anzahl der Tweets, die sich auf ein bestimmtes Keyword beziehen
Ich möchte vorerst eine Docker-Datei erstellen.
Ich habe versucht, eine RESTful-API zu erstellen, indem ich die explosive Fast-API des Python-Frameworks mit MySQL verbunden habe.
Erstellen Sie eine REST-API, um dynamodb mit dem Django REST Framework zu betreiben
Wenn Sie von Mia Nanasawas Bild geheilt werden möchten, klicken Sie auf die Twitter-API ♪
Zur Zeit möchte ich mit FastAPI zeigen, wie man eine solche API in swagger verwendet
Erstellen wir es, indem wir den Protokollpuffer mit Serverless Framework auf die API anwenden.
Das Format der von der Slack-API erhaltenen Nachricht ist auf subtile Weise schwierig zu verwenden
Erstellen Sie einen Filter, um ein Zugriffstoken mit der Graph-API (Flask) zu erhalten.
So verwenden Sie MkDocs zum ersten Mal
Möchten Sie einen Twitter-Lebenslauf erstellen?
Verwendung der Google Cloud Translation API
Verwendung der NHK-Programmführer-API
Verwenden Sie die Kaggle-API in einem Docker-Container
Erstellen Sie einen Sub-Sub-Befehl mit dem Klick --netsted-Sub-Sub-Befehl -
Schritte zum Erstellen eines Twitter-Bots mit Python
So erstellen Sie eine Rest-API in Django
Erstellen Sie einen Befehl, um das Arbeitsprotokoll abzurufen
Ich möchte zum ersten Mal eine Django-Studie zur Mittagsdatenbank [EP1] erstellen
Ich möchte zum ersten Mal eine Django-Studie zum Mittagessen [EP1-4] erstellen
Verwenden Sie AWS Lambda, um einen Mechanismus zu erstellen, der Slack benachrichtigt, wenn der von CloudWatch überwachte Wert in Python überschritten wird
Lesen Sie die Python-Markdown-Quelle: So erstellen Sie einen Parser
Erstellen Sie einen Datensatz mit Bildern, die für das Training verwendet werden sollen
Erstellen Sie eine Funktion zur Visualisierung / Auswertung des Clustering-Ergebnisses
So erstellen Sie ein Untermenü mit dem Plug-In [Blender]
Posten Sie mit der API auf Twitter in Ihrem Konto
Durchsuchen Sie die Tabelle mit sqlalchemy und erstellen Sie ein Wörterbuch
Ein Skript, mit dem Sie mit der LINE Messaging-API auf einfache Weise umfangreiche Menüs erstellen können
So erstellen Sie einen Datensatz, indem Sie eine Beziehung zum geerbten Modell in das von Django geerbte Modell einfügen
Eine einfache Möglichkeit, die in Python benötigte Zeit anzuzeigen und sie intelligenter zu verbessern
Eine Geschichte, bei der es mir schwer gefallen ist, mit der ersten Webanwendung eine "App zu erstellen, die Bilder wie Gemälde konvertiert"