Enregistrez automatiquement les images et les vidéos touchées par la recherche Twitter sur l'iPhone à l'aide de Pythonista3

Contexte

Le motif est presque le même que celui de l'article précédent (Utilisez Pythonista3 pour lire Twitter TL à haute voix sur iphone). Cette fois, seules les images et vidéos sont extraites des résultats de recherche Twitter et automatiquement enregistrées sur l'iPhone.

environnement

iPhone8 13.2.3 Pythonista3 3.2 Tweepy 3.8.0

Préparation

・ Installation de Pythonista3 ・ Application d'inscription à l'API Twitter ・ Installation de StaSh ・ Installation de tweepy, requêtes, youtube-dl

code

sav_photo_video.py


#!Pythonista3
#Un programme qui stocke des images qui correspondent à la recherche de Twitter dans l'album iPhone

import os, requests, photos, youtube_dl
import twitterconfig
from twitterconfig import api

#Une fonction qui renvoie une liste d'urls d'image et de vidéo à partir des mots que vous recherchez
def twitter_to_url_out(q, max_id):
    gazou_suu = 0
    douga_suu = 0
    kensakukekka = api.search(q = q, count = 20, max_id = max_id)
    if max_id != None:
        kensakukekka = kensakukekka[1:]
    gazou_url_list = []
    douga_url_list = []
    max_id_list = []
    for match_tweet in kensakukekka:
        max_id_list.append(match_tweet.id)
        try:
            video_url = match_tweet.extended_entities['media'][0]['video_info']['variants'][1]['url']
            douga_url_list.append(video_url)
        except:
            try:
                for x in match_tweet.extended_entities['media']:
                    gazou_url = x['media_url']
                    gazou_url_list.append(gazou_url)
            except:    
                continue
    max_id = min(max_id_list)
    gazou_url_list = sorted(set(gazou_url_list), key=gazou_url_list.index)
    douga_url_list = sorted(set(douga_url_list), key=douga_url_list.index)
    return max_id, gazou_url_list, douga_url_list

#url_Une fonction qui prend la liste comme argument et enregistre chaque vidéo
def douga_hozon(urllist):
    douga_suu = 0
    for url in urllist:
        try:
            with youtube_dl.YoutubeDL() as ydl:
                ydl.download([url])
            douga_suu += 1
        except:
            continue
    return douga_suu

#url_Une fonction qui prend la liste comme argument et enregistre chaque image
def gazou_hozon(urllist):
    gazou_list = []
    for url in urllist:
        response = requests.get(url)    
        try:
            response.raise_for_status()
        except:
            continue
        filename = str(url.split('/')[-1])
        newfile = open(filename,'wb')
        for chunk in response.iter_content(10000):
            newfile.write(chunk)
        newfile.close()
        gazou_list.append(filename)
    image_asset_list = []
    for gazou in gazou_list:
        image_asset = photos.create_image_asset(gazou)
        image_asset_list.append(image_asset)
        try:
            os.remove(gazou)
        except:
            continue
    album_list = photos.get_albums()
    album_name_dict = {}
    number = 0
    for album in album_list:
        album_name = str(album).split('"')[1]
        album_name_dict[album_name] = number
        number += 1
    if kensakukotoba in album_name_dict.keys():
        new_album = album_list[int(album_name_dict[kensakukotoba])]
    else:
        new_album = photos.create_album(kensakukotoba)
    new_album.add_assets(image_asset_list)
    gazou_suu = len(image_asset_list)
    return gazou_suu


kensakukotoba = input('Le mot que vous souhaitez rechercher\n')
hosiikazu = int(input('Combien d'images voulez-vous\n'))
max_id = None
s_gazou_url_list = []
s_douga_url_list = []
syu_kai = 1
while len(s_gazou_url_list) < hosiikazu:
    print(str(syu_kai) + 'La semaine')
    max_id, gazou_url_list, douga_url_list = twitter_to_url_out(q = kensakukotoba, max_id = max_id)
    syu_kai += 1
    for gazou_url in gazou_url_list:
        s_gazou_url_list.append(gazou_url)
    for douga_url in douga_url_list:
        s_douga_url_list.append(douga_url)
    s_gazou_url_list = sorted(set(s_gazou_url_list), key=s_gazou_url_list.index)
    s_douga_url_list = sorted(set(s_douga_url_list), key=s_douga_url_list.index)
    if syu_kai == 30:
        break
douga_suu = douga_hozon(s_douga_url_list)
gazou_suu = gazou_hozon(s_gazou_url_list)
print('Fin de la sauvegarde(Nombre d'images:' + str(gazou_suu) + ' ,Nombre de vidéos:' + str(douga_suu) + ')')

résultat

Etat initial. Il n'y a pas de photos ou d'albums. 写真 2020-02-04 20 06 53.png

Ouvrez le programme et spécifiez le mot-clé de recherche et le nombre minimum de feuilles que vous souhaitez enregistrer 写真 2020-02-04 20 08 57.png

Attendez un moment··· 写真 2020-02-04 20 09 08.png

Lorsque la sauvegarde est terminée, elle est terminée. 写真 2020-02-04 20 09 37.png

Si vous le regardez à nouveau, un album sera créé automatiquement et les images enregistrées cette fois seront stockées. 写真 2020-02-04 20 09 53.png

写真 2020-02-04 20 10 33.png

La vidéo se trouve dans le répertoire contenant le code dans pythonista. 写真 2020-02-04 20 10 52.png

Commentaire

Je ne savais pas comment mettre une vidéo dans un album comme une photo. (Les photos de pythonista ne sont-elles pas compatibles avec les vidéos?) S'il vous plaît laissez-moi savoir si quelqu'un sait. Veuillez modifier la limite du nombre de recherches et la méthode de recherche afin de pouvoir l'utiliser facilement.

Tâche

Ce qui m'intéressait après l'avoir utilisé plusieurs fois ○ Meilleur moyen d'enregistrer des vidéos Pour le moment, j'ai pensé que je devrais pouvoir diviser les dossiers quand j'en aurais le temps.

○ Suppression automatique des images en double Si vous recherchez plusieurs fois avec le même mot-clé, la même image sera enregistrée ici et là. J'essaie de ne pas faire un album avec le même nom, mais j'ai pensé que ce serait bien s'il y avait une partie pour comparer les résultats de la recherche avec l'album existant.

Conclusion

Ce que je veux faire a pris forme! Cependant, il semble y avoir plus de place à l'amélioration pour le rendre plus facile à utiliser ...

Recommended Posts

Enregistrez automatiquement les images et les vidéos touchées par la recherche Twitter sur l'iPhone à l'aide de Pythonista3
Recherchez et enregistrez l'image de Tomono Kafu depuis Twitter
[Go language] Collectez et enregistrez des images Vtuber à l'aide de l'API Twitter
Obtenez des images par recherche par mot-clé sur Twitter
Fonction pour enregistrer les images par date [python3]
Recevez des tweets avec la fonction Google Cloud et enregistrez automatiquement les images dans Google Photos
Comment rechercher à l'aide de l'Astroquery de Python et obtenir des images ajustées avec Skyview
Rechercher et télécharger automatiquement des vidéos YouTube avec Python
Enregistrez les résultats de la recherche sur Twitter au format CSV.
Demandez à l'iPhone de lire Twitter TL à haute voix en utilisant Pythonista3
J'ai essayé de collecter automatiquement des images érotiques de Twitter à l'aide de l'API Cloud Vision de GCP
J'ai essayé de lire et d'enregistrer automatiquement avec VOICEROID2
Rechercher sur Twitter avec Python
J'ai essayé de rechercher des vidéos à l'aide de l'API de données Youtube (débutant)