Je souhaite enregistrer une photo de ma personne préférée ...
Actuellement, les peintres publient diverses images sur Twitter.
Je regarde souvent la photo de Vtuber, mais je pensais que c'était bien, je voulais la sauvegarder quelque part ...
J'ai remarqué que les images de Vtuber que je vois souvent sont souvent postées par des balises de hachage sur Twitter, et je me suis demandé si je pouvais faire quelque chose à ce sujet, alors j'ai créé un "outil de collecte" tout en enquêtant.
Au fait, j'aimerais reprendre ici mon "Pekora Usada" préféré.
・ Acquisition et authentification de l'API Twitter ・ Définissez les informations à collecter (tweets contenant la chaîne de caractères "#pekoratto", 100 acquisitions, etc.) ・ Création d'un fichier pour stocker les images enregistrées, etc. ・ Acquisition de l'URL de l'image ・ Enregistrer en tant que fichier jpg
Regardons chacun d'eux.
Veuillez accéder au site suivant et obtenir l'API Twitter.
Je vais omettre la méthode détaillée.
Je pense qu'il serait bon de le définir au début de la source.
const (
consumerKey = ""
consumerSecret = ""
accessToken = ""
accessTokenSecret = ""
)
ici,
Combien de tweets obtenir Comprend-il les retweets? N'incluez pas les tweets sans images
Définissez une requête telle que.
v := url.Values{}
v.Set("count", "100")
query := "Pekora et OR#Pekora et exclure:retweets filter:images"
searchResult, _ := api.GetSearch(query, v)
Ici, "count", qui signifie le nombre de tweets, est utilisé pour obtenir 100 tweets. Ensuite, supposons que la chaîne de caractères recherchée est "Pekorato" ou "#Pekorato". Seuls les tweets avec des images jointes, sans compter les retweets.
Je ne savais pas que je pouvais le placer dans cette partie, alors j'ai récupéré le contenu du tweet et j'ai jugé si le contenu de l'image en existait.
Si vous l'enregistrez normalement, il sera foiré, alors créez un dossier pour enregistrer l'image. Lors de la création d'un fichier json, il est préférable de créer un autre dossier.
Lorsque Mkdir est fait dans le code source suivant, le numéro 0777 est utilisé, qui décrit les permissions du fichier. 0: impossible de lire / écrire / exécuter 1: uniquement exécutable 2: écriture uniquement 3: Peut être écrit et exécuté 4: lecture seule 5: lisible et exécutable 6: Peut être lu et écrit 7: Lire, exécuter, écrire Alors pourquoi y a-t-il trois chiffres? Tu n'as pas pensé? C'est de haut en bas -Permissions du propriétaire (créateur) du fichier ou du répertoire -Permissions d'autres utilisateurs dans le même groupe que l'utilisateur créé ・ Privilèges des autres utilisateurs Cliquez ici pour les articles de référence
//Définir le répertoire actuel avec un chemin absolu
currentDir, err := filepath.Abs(".")
//Chdir est une commande en tant qu'image$Sentiment cd
err = os.Chdir(currentDir)
if err != nil {
panic(err)
}
//Vérifiez le dossier
_, err = os.Stat("pekorato")
if err != nil {
//Créez maintenant un dossier avec Mkdir
err = os.Mkdir("pekorato", 0777)//0777 est expliqué en détail ci-dessus
if err != nil {
panic(err)
}
}
//Déplacez le répertoire et enregistrez les images ensemble ici
err = os.Chdir(currentDir + "/pekorato")
if err != nil {
panic(err)
}
Obtenir l'URL d'une image est également facile. Si vous omettez les détails, vous pouvez les collecter avec une ligne de code ci-dessous.
Inversement, vous pouvez obtenir des informations différentes en réécrivant après tweet. Par exemple, vous pouvez utiliser tweet.User.ProfileImageURL pour obtenir l'URL de l'image du profil de cet utilisateur.
mediaRawURL := tweet.ExtendedEntities.Media[0].Media_url_https
Je pense que c'est plus une copie qu'une sauvegarde. Je fais http.Obtenez au début, mais cela nécessite un peu de connaissance de http. Qu'est-ce qui est renvoyé lorsque j'envoie la méthode get? Si vous ne le savez pas, vous devriez le vérifier.
response, err := http.Get(mediaRawURL)
if err != nil {
panic(err)
}
defer response.Body.Close()
//Générer un fichier jpg
pekoPic, err := os.Create(fmt.Sprintf("pekora%d.jpg ", i))
if err != nil {
panic(err)
}
defer pekoPic.Close()
//Copier dans pekoPic téléchargé
io.Copy(pekoPic, response.Body)
package main
import (
"fmt"
"io"
"net/http"
"net/url"
"os"
"path/filepath"
"github.com/ChimeraCoder/anaconda"
)
//Veuillez entrer ici par vous-même.
const (
consumerKey = ""
consumerSecret = ""
accessToken = ""
accessTokenSecret = ""
)
func main() {
//Authentification Twitter
anaconda.SetConsumerKey(consumerKey)
anaconda.SetConsumerSecret(consumerSecret)
//Authentification personnelle
api := anaconda.NewTwitterApi(accessToken, accessTokenSecret)
/*************
Paramètres de requête de recherche
**************/
v := url.Values{}
v.Set("count", "100")
query := "Pekora et OR#Pekora et exclure:retweets filter:images"
searchResult, _ := api.GetSearch(query, v)
/**********************************************
Créer un dossier pour enregistrer des images et déplacer des répertoires
**********************************************/
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)
}
/********************************
Analysez les tweets et générez des images
********************************/
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)
}
}
Cette fois, j'ai utilisé l'API Twitter pour obtenir l'image. Ensuite, j'ai pensé essayer de créer quelque chose comme obtenir l'image tweetée d'une personne spécifique. Ceux qui l'ont vu allaient bien.
Recommended Posts