[PYTHON] Holen Sie sich Bilder von bestimmten Benutzern auf Twitter

Einführung

Dies ist ein Artikel des SLP KBIT Adventskalenders 2019. Ich wollte schon immer Bilder auf Twitter sammeln, deshalb habe ich diese Gelegenheit genutzt, um dies zu tun. Dieses Programm ist ein Programm, das Bilder von Tweets eines bestimmten Kontos herunterlädt.

Umgebung

Python3.7.5

Vorbereitung

Da das auf Twitter gepostete Bild diesmal angezeigt wird, benötigen Sie dafür einen Schlüssel. Ich werde die Methode zum Erhalten des Schlüssels weglassen, da er bei Google herauskommt. Da tweepy verwendet wird, installieren Sie es.

pip install tweepy

Erstellen Sie eine Datei, um den erhaltenen Schlüssel abzulegen. Es kann sich am selben Speicherort wie die ausführbare Datei befinden, aber ich persönlich bevorzuge diese ...

config.py


CONFIG1 = {
    "CONSUMER_KEY":"XXXXXXXXXXX",
    "CONSUMER_SECRET":"XXXXXXXXXXXX",
    "ACCESS_TOKEN":"XXXXXXXXXXXXXXXXXXX",
    "ACCESS_SECRET":"XXXXXXXXXXXXXXXXX",
   }

Bildaufnahme

Importieren Sie das, was Sie benötigen, und bringen Sie den Schlüssel aus config.py. Die unteren drei Zeilen sind erforderlich, um die API zu verwenden.

twitter.py


import tweepy
from config import CONFIG
import urllib.request
import re


CONSUMER_KEY = CONFIG["CONSUMER_KEY"]
CONSUMER_SECRET = CONFIG["CONSUMER_SECRET"]
ACCESS_TOKEN = CONFIG["ACCESS_TOKEN"]
ACCESS_SECRET = CONFIG["ACCESS_SECRET"]

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)

api = tweepy.API(auth)

Ganzes Programm

Es ist ein Programm, das auf dem Terminal ausgeführt wird. Wenn eine ID angegeben wird, werden Tweets von dem Konto mit dieser ID erfasst. Wenn ein Bild-Tweet vorhanden ist, wird dieser heruntergeladen.

twitter.py


import tweepy
from config import CONFIG2
import urllib.request
import re


CONSUMER_KEY = CONFIG["CONSUMER_KEY"]
CONSUMER_SECRET = CONFIG["CONSUMER_SECRET"]
ACCESS_TOKEN = CONFIG["ACCESS_TOKEN"]
ACCESS_SECRET = CONFIG["ACCESS_SECRET"]

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)

api = tweepy.API(auth)

#Über Schlüsselwort suchen
def log(user_name, count, id):
    result_url = []
    for i in range(0, 2):
        results = api.user_timeline(screen_name=user_name, count=count, max_id=id)
        id = results[-1].id
        for result in results:
            if 'media' in result.entities:
                judg = 'RT @' in result.text
                if judg == False:
                    for media in result.extended_entities['media']:
                        result_url.append(media['media_url'])
    return result_url

def extract_pic_file(image_url):
    m = re.search(r"(([A-Za-z0-9]|_)+\.(png|jpg))", image_url)
    if m:
        name = 'img_dl/' + m.group(0)
    else:
        name = 'img_dl/None.png'

    return name

def save_image(url, name):
    count = 1
    for image_url in url:
        file_name = extract_pic_file(image_url)
        urllib.request.urlretrieve(image_url, file_name)
        count += 1

def fast(user_name):
    results = api.user_timeline(screen_name=user_name, count="1")
    for result in results:
        id = result.id
    return id

def start():
    count = 100
    user_name = input("ID eingeben>>")
    id = fast(user_name)
    url = log(user_name, count, id - 1)
    save_image(url, user_name)

if __name__ == "__main__":
    start()

fließen

Rufen Sie die URL mit der Protokollfunktion ab und speichern Sie das Bild in dem Ordner, der mit der Funktion save_image angegeben wurde.

Bedienungsanleitung

Protokollfunktion

Sie erhalten die Konto-ID, die Anzahl der erfassten Tweets und die Tweet-ID als Argumente. Wir werden die Ergebnisse in einer for-Anweisung übergeben. Die URL des Bildes wird in einem json-ähnlichen Format gespeichert. Nehmen Sie sie daher heraus und speichern Sie sie in result_url. Machen Sie es zu einem Rückgabewert. Ich möchte das Bild dieses Mal nicht retweeten lassen, daher versuche ich, es mit der if-Anweisung auszuschließen.

sava_image Wie der Name schon sagt, ist es eine Funktion, die ein Bild speichert. Zu diesem Zeitpunkt tritt beim Speichern mit der URL ein Fehler auf. Rufen Sie daher die Funktion extract_pic_file auf, um den Dateinamen zu konvertieren.

Funktion extract_pic_file

Der Dateiname des Bildes wird aus der URL unter Verwendung eines regulären Ausdrucks festgelegt. Dadurch wird verhindert, dass das Bild abgedeckt wird, wenn das Bild von demselben Konto abgerufen wird.

schnelle Funktion

Dies ist ein Prozess für die Ausnahmeverarbeitung. Der Grund dafür ist, dass die Protokollfunktion die ID des Tweets als Argument verwendet und vergangene Tweets von diesem Tweet abruft. Daher ist die erste Ausnahmebehandlung erforderlich.

Am Ende

Ich bin nicht gut darin, leicht verständlich zu schreiben. Ich fand es einfacher zu verstehen, was in der Funktion vor sich ging, und schrieb eine Beschreibung für jede Funktion.

Recommended Posts

Holen Sie sich Bilder von bestimmten Benutzern auf Twitter
Holen Sie sich Bilder per Stichwortsuche von Twitter
Programm, um Lieblingsbilder von Twitter zu erhalten
Holen Sie sich Promi-Tweet-Geschichte von Twitter
Holen Sie sich Daten von Twitter mit Tweepy
Erhalten Sie Verzögerungsinformationen auf Twitter und twittern Sie
Holen Sie sich mit Selenium Twitter-Lesezeichen auf CentOS
[Python] Twitter-Timeline für mehrere Benutzer abrufen
Twitter mit Python3
Erhalten Sie mit Python Informationen zu den 100 einflussreichsten technischen Twitter-Nutzern der Welt.
Bildkratzen ②-Holen Sie sich Bilder von Bing, Yahoo, Flickr
Massen-Download-Bilder von einer bestimmten URL mit Python
Holen Sie sich Twitter userData
Massen-Download-Bilder von einer bestimmten Site-URL mit Python
Speichern Sie Tweets mit bestimmten Schlüsselwörtern auf Twitter als CSV
Suchen und speichern Sie das Bild von Tomono Kafu von Twitter