[Go language] Sammeln und speichern Sie Vtuber-Bilder mithilfe der Twitter-API

Einführung

Ich möchte ein Bild meiner Lieblingsperson speichern ...

Derzeit veröffentlichen Maler verschiedene Bilder auf Twitter.

Ich schaue oft auf das Bild von Vtuber, aber ich fand es gut, ich wollte es irgendwo speichern ...

Ich bemerkte, dass Vtuber-Bilder, die ich oft sehe, oft von Hash-Tags auf Twitter gepostet werden, und ich fragte mich, ob ich etwas dagegen tun könnte, also machte ich während der Untersuchung ein "Sammlungswerkzeug".

Holen Sie sich Bilder in großen Mengen mit der Twitter-API

Übrigens möchte ich hier meine Lieblings "Pekora Usada" aufnehmen.

Erforderlicher Prozess

・ Erfassung und Authentifizierung der Twitter-API ・ Legen Sie die zu sammelnden Informationen fest (Tweets mit der Zeichenfolge "#pekoratto", 100 Erfassungen usw.) ・ Erstellen einer Datei zum Speichern des gespeicherten Bildes usw. ・ Erfassung der Bild-URL ・ Als JPG-Datei speichern

Schauen wir uns jeden an.

Erfassung und Authentifizierung der Twitter-API

Bitte springen Sie zur folgenden Seite und holen Sie sich die Twitter-API.

>>> Twitter API abrufen

Ich werde die detaillierte Methode weglassen.

Ich denke, es wäre gut, es am Anfang der Quelle zu definieren.


const (
	consumerKey       = ""
	consumerSecret    = ""
	accessToken       = ""
	accessTokenSecret = ""
)

Stellen Sie die zu sammelnden Informationen ein

Hier,

Wie viele Tweets soll ich bekommen? Enthält es Retweets? Fügen Sie keine Tweets ohne Bilder hinzu

Stellen Sie eine Abfrage wie z.


    v := url.Values{}
    v.Set("count", "100")
	query := "Pekora und OR#Pekora und ausschließen:retweets filter:images"
	searchResult, _ := api.GetSearch(query, v)

Hier wird "count", dh die Anzahl der Tweets, verwendet, um 100 Tweets zu erhalten. Nehmen Sie als nächstes an, dass die gesuchte Zeichenfolge "Pekorato" oder "#Pekorato" ist. Nur Tweets mit angehängten Bildern, ohne Retweets.

Fehlerstelle

Ich wusste nicht, dass es in diesem Teil eingestellt werden kann, also habe ich den Tweet-Inhalt erhalten und beurteilt, ob der Bildinhalt daraus existiert.

Erstellen einer Datei zum Speichern des gespeicherten Bildes

Wenn Sie es normal speichern, wird es durcheinander gebracht. Erstellen Sie daher einen Ordner, um das Bild zu speichern. Beim Erstellen einer JSON-Datei ist es besser, einen anderen Ordner zu erstellen.

Wenn Mkdir im folgenden Quellcode ausgeführt wird, wird die Nummer 0777 verwendet, die die Dateiberechtigungen beschreibt. 0: Kann nicht lesen / schreiben / ausführen 1: Nur ausführbar 2: Nur schreiben 3: Kann geschrieben und ausgeführt werden 4: Nur Lesen 5: Lesbar und ausführbar 6: Kann gelesen und geschrieben werden 7: Lesen, ausführen, schreiben Warum gibt es drei Ziffern? Hast du nicht gedacht? Dies ist von oben nach unten

//Stellen Sie das aktuelle Verzeichnis mit einem absoluten Pfad ein
currentDir, err := filepath.Abs(".")
//Chdir ist ein Befehl als Bild$Gefühl CD
    err = os.Chdir(currentDir)
	if err != nil {
		panic(err)
	}
//Überprüfen Sie die Datei
	_, err = os.Stat("pekorato")
	if err != nil {
//Erstellen Sie nun einen Ordner mit Mkdir
		err = os.Mkdir("pekorato", 0777)//0777 wird oben ausführlich erklärt
		if err != nil {
			panic(err)
		}
	}
//Verschieben Sie das Verzeichnis und speichern Sie die Bilder hier zusammen
	err = os.Chdir(currentDir + "/pekorato")
	if err != nil {
		panic(err)
	}

Bild-URL abrufen

Das Abrufen der URL eines Bildes ist ebenfalls einfach. Wenn Sie die Details weglassen, können Sie sie mit einer Codezeile unten sammeln.

Umgekehrt können Sie unterschiedliche Informationen erhalten, indem Sie nach dem Tweet neu schreiben. Beispielsweise können Sie tweet.User.ProfileImageURL verwenden, um die URL des Bildes für das Profil dieses Benutzers abzurufen.


mediaRawURL := tweet.ExtendedEntities.Media[0].Media_url_https

Als JPG-Datei speichern

Ich denke, es ist eher eine Kopie als eine Sicherung. Ich mache am Anfang http.Get, aber dies erfordert ein wenig Wissen über http. Was wird zurückgegeben, wenn ich die get-Methode sende? Wenn Sie es nicht wissen, sollten Sie es überprüfen.


        response, err := http.Get(mediaRawURL)
			if err != nil {
			panic(err)
		}
		defer response.Body.Close()

		//JPG-Datei generieren
		pekoPic, err := os.Create(fmt.Sprintf("pekora%d.jpg ", i))
		if err != nil {
			panic(err)
		}
		defer pekoPic.Close()

		//Auf heruntergeladenes pekoPic kopieren
		io.Copy(pekoPic, response.Body)

Ganzer Quellcode


package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
	"os"
	"path/filepath"

	"github.com/ChimeraCoder/anaconda"
)

//Bitte geben Sie hier selbst ein.
const (
	consumerKey       = ""
	consumerSecret    = ""
	accessToken       = ""
	accessTokenSecret = ""
)

func main() {
	//Twitter-Authentifizierung
	anaconda.SetConsumerKey(consumerKey)
	anaconda.SetConsumerSecret(consumerSecret)

	//Persönliche Authentifizierung
	api := anaconda.NewTwitterApi(accessToken, accessTokenSecret)

	/*************
Suchabfrageeinstellungen
	**************/
	v := url.Values{}
	v.Set("count", "100")
	query := "Pekora und OR#Pekora und ausschließen:retweets filter:images"
	searchResult, _ := api.GetSearch(query, v)

	/**********************************************
Erstellen eines Ordners zum Speichern von Bildern und Verschieben von Verzeichnissen
	**********************************************/

	currentDir, err := filepath.Abs(".")
	if err != nil {
		panic(err)
	}

	_, err = os.Stat("pekorato")
	if err != nil {
		err = os.Mkdir("pekorato", 0777)
		if err != nil {
			panic(err)
		}
	}

	err = os.Chdir(currentDir + "/pekorato")
	if err != nil {
		panic(err)
	}

	/********************************
Analysieren Sie Tweets und generieren Sie Bilder
	********************************/

	for i, tweet := range searchResult.Statuses {
		mediaRawURL := tweet.ExtendedEntities.Media[0].Media_url_https

		response, err := http.Get(mediaRawURL)
		if err != nil {
			panic(err)
		}
		defer response.Body.Close()

		pekoPic, err := os.Create(fmt.Sprintf("pekora%d.jpg ", i))
		if err != nil {
			panic(err)
		}
		defer pekoPic.Close()

		io.Copy(pekoPic, response.Body)
	}
}

Zusammenfassung

Dieses Mal habe ich die Twitter-API verwendet, um das Bild zu erhalten. Als nächstes dachte ich, ich würde versuchen, so etwas wie das getwitterte Bild einer bestimmten Person zu bekommen. Diejenigen, die es sahen, waren in Ordnung.

Recommended Posts

[Go language] Sammeln und speichern Sie Vtuber-Bilder mithilfe der Twitter-API
Twittern Sie regelmäßig mit der Twitter-API in Go-Sprache
Speichern Sie Bilder und Videos, die von der Twitter-Suche aufgerufen wurden, automatisch mit Pythonista3 auf dem iPhone
Sammeln Sie Bilder mit icrawler
Suchen und speichern Sie das Bild von Tomono Kafu von Twitter
Ich habe versucht, mit der Cloud Vision API von GCP automatisch erotische Bilder von Twitter zu sammeln
Sammeln Sie eine große Anzahl von Bildern mit der Bildsuch-API von Bing
Versuchen Sie es mit der Twitter-API
Versuchen Sie es mit der Twitter-API
Sammeln Sie Tweets mit tweepy in Python und speichern Sie sie in MongoDB
Sammeln Sie Produktinformationen und Prozessdaten mit der Rakuten-Produktsuch-API [Python].
Senden Sie Nachrichten und Bilder mit LineNotify
Ich habe go Sprache für API und die minimale Konfiguration der Reaktion für die Front gemacht
Kaufen und verkaufen Sie virtuelle Währungen mit der Zaif-API
Tweet mit der Twitter-API in Python
Generieren Sie API-Spezifikationen mit GO / Gin Gin-Swagger
Sammeln Sie Daten mit Scrapy und füllen Sie mongoDB
[Golang] Über Go-Sprache Produzent und Konsument