[PYTHON] Holen Sie sich nur Bild-Tweets auf Twitter

Einführung

Ich lese oft Kinderbetreuungs-Comics auf Twitter. Es ist ärgerlich, andere Tweets als Cartoons auf der Timeline zu sehen Über die Twitter-API werden nur Manga-Tweets (= Bild-Tweets) erfasst.

Verarbeitungsablauf

  1. Holen Sie sich die Benutzer, denen Sie folgen (Twitter API)
  2. Holen Sie sich die Zeitleiste jedes Benutzers (Twitter API)
  3. Beurteilen Sie das Vorhandensein oder Fehlen eines Bildes anhand des Tweet-Inhalts
  4. Like & retweet mit Bildern (Twitter API)

Auf diese Weise können Sie, wenn Sie Ihre Zeitleiste anzeigen, nur die Tweets des Bildes gleichzeitig anzeigen.

Implementierung

Twitter API-Authentifizierung

API_KEY, API_SECRET_KEY, ACCESS_TOKEN, ACCESS_TOKEN_SECRET wurden unter Bezugnahme auf die folgende Site erhalten. Detaillierte Erklärung vom Beispielsatz der Twitter-API-Verwendungsanwendung der Version 2020 bis zum Erwerb des API-Schlüssels

python


twitter = OAuth1Session(API_KEY, API_SECRET_KEY, ACCESS_TOKEN, ACCESS_TOKEN_SECRET)

1. Holen Sie sich die Benutzer, denen Sie folgen

Ermitteln Sie zunächst den Benutzernamen (um genau zu sein den Bildschirmnamen) des Benutzers, dem Sie folgen. Der Endpunkt verwendet https://api.twitter.com/1.1/friends/list.json. Bis zu 200 Personen scheinen API-Grenzwerte zu sein. Geben Sie Ihren eigenen Bildschirmnamen für das Argument Bildschirmname an. (Sie können es auch mit dem Bildschirmnamen einer anderen Person erhalten)

get_follow_screen_name


def get_follow_screen_name(screen_name):
    #Bereiten Sie eine leere Liste vor
    follow_list = []

    #Authentifizierung
    twitter = OAuth1Session(API_KEY, API_SECRET_KEY, ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
    #Erfassungsendpunkt
    url = "https://api.twitter.com/1.1/friends/list.json"
    #Parameter
    params = {"screen_name": screen_name, "count": 200}

    #Anfrage
    res = twitter.get(url, params=params)

    if res.status_code == 200:
        result_json = json.loads(res.text)
        #Follower zur Liste hinzufügen
        for i in range(0, len(result_json["users"]), 1):
            follow_list.append(result_json["users"][i]["screen_name"])
        #Gibt eine Liste zurück
        return follow_list
    else:
        return None

2. Holen Sie sich die Zeitleiste für jeden Benutzer

Verwenden Sie den Bildschirmnamen jedes in 1 erhaltenen Benutzers, um die Zeitleiste abzurufen und im JSON-Format zurückzugeben. Ich möchte diesmal die neuesten Tweets, also setze ich count = 1.

get_user_timeline


def get_user_timeline(screen_name):
    #Authentifizierungsprozess
    twitter = OAuth1Session(API_KEY, API_SECRET_KEY, ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
    #Endpunkt der Zeitleistenerfassung
    url = "https://api.twitter.com/1.1/statuses/user_timeline.json"
    #Parameter
    params = {
        "count": 1,
        "screen_name": screen_name,
        "include_entities": True,
        "exclude_replies": False,
        "include_rts": False,
    }

    #Abrufen der Zeitleistenliste aus der Antwort
    res = twitter.get(url, params=params)

    if res.status_code == 200:
        return json.loads(res.text)
    else:
        return None

3. Beurteilen Sie das Vorhandensein oder Fehlen eines Bildes anhand des Tweet-Inhalts

Erstellen Sie zunächst die in 2 gespeicherte JSON-Datei in der folgenden Klasse.

python


class Tweet:
    def __init__(self, json_file):
        self.created_at = json_file[0]["created_at"]
        self.tweet_id = json_file[0]["id"]
        self.text = json_file[0]["text"]
        self.user_name = json_file[0]["user"]["name"]
        self.user_screen_name = json_file[0]["user"]["screen_name"]
        self.user_mention = json_file[0]["entities"]["user_mentions"]
        self.image_urls_list = []

        #Wenn eine angehängte Datei vorhanden ist
        if "extended_entities" in json_file[0]:
            self.media_number = len(json_file[0]["extended_entities"]["media"])
            self.content_type = json_file[0]["extended_entities"]["media"][0]["type"]

            for i in range(0, self.media_number, 1):
                self.image_urls_list.append(
                    json_file[0]["extended_entities"]["media"][i]["media_url"]
                )

        else:
            self.media_number = 0
            self.content_type = ""

Schauen Sie sich self.media_number = len an (json_file [0] ["extended_entities"] ["media"]) Unterscheiden Sie, ob ein Bild gepostet wurde.

is_content_type


def is_content_type(obj_tweet, expect_type):
    if obj_tweet.content_type == expect_type:
        return True
    else:
        return False

4. Like und retweete diejenigen mit Bildern

Wenn das Bild gepostet wurde, klicken Sie wie unten gezeigt auf die API, um sie zu mögen und zu retweeten. Sie müssen lediglich die Tweet-ID angeben.

push_favorite


def push_favorite(tweet_id):
    #Authentifizierung
    twitter = OAuth1Session(API_KEY, API_SECRET_KEY, ACCESS_TOKEN, ACCESS_TOKEN_SECRET)

    #Anfrage
    url = "https://api.twitter.com/1.1/favorites/create.json"
    params = {"id": tweet_id}
    req = twitter.post(url, params=params)
    req_json = json.loads(req.text)

    if req.status_code == 200:
        return True
    #Wenn es dir schon gefallen hat
    elif req.status_code == 403 and req_json["errors"][0]["code"] == 139:
        return True
    else:
        return False

retweet


def retweet(tweetId):
    twitter = OAuth1Session(API_KEY, API_SECRET_KEY, ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
    url = "https://api.twitter.com/1.1/statuses/retweet/%d.json" % tweetId
    res = twitter.post(url)
    res_json = json.loads(res.text)

    if res.status_code == 200:
        return True
    #Bereits retweetet
    elif res.status_code == 403 and res_json["errors"][0]["code"] == 327:
        return True
    else:
        return False

Recommended Posts

Holen Sie sich nur Bild-Tweets auf Twitter
Erhalten Sie Verzögerungsinformationen auf Twitter und twittern Sie
Holen Sie sich mit Selenium Twitter-Lesezeichen auf CentOS
Programm, um Lieblingsbilder von Twitter zu erhalten
Holen Sie sich Bilder von bestimmten Benutzern auf Twitter
Twitter mit Python3
Holen Sie sich Twitter userData
Holen Sie sich viele Twitter-Tweets auf einmal
Speichern Sie Tweets mit bestimmten Schlüsselwörtern auf Twitter als CSV
Holen Sie sich Tweets mit Tweepy
Holen Sie sich Twitter-Tweets, Follower, Follower, Likes, mit urllib und beautifulSoup
Ich bekomme "zu früh, um ein Bild zu erstellen" auf tkinter
Ich habe die Tweets über den neuen Corona-Virus analysiert, die auf Twitter veröffentlicht wurden
Ein unfruchtbarer Twitter-Posting-Client, der nur Ihre Tweets speichert
Holen Sie sich Twitter-Timeline mit Python
Twitter-Beiträge in Python 3 usw.
Holen Sie sich Bildfunktionen mit OpenCV
Suche nach Twitter-Tweets mit Python
Erstellen Sie eine Wortwolke mit nur positiven / negativen Wörtern auf Twitter
Ich habe die Tweets über den neuen Corona-Virus analysiert, die auf Twitter Teil 2 veröffentlicht wurden
Ich habe das Bild der Science University auf Twitter mit Word2Vec überprüft.