Speichern Sie Bilder und Videos, die von der Twitter-Suche aufgerufen wurden, automatisch mit Pythonista3 auf dem iPhone

Hintergrund

Das Motiv ist fast das gleiche wie im vorherigen Artikel (Verwenden Sie Pythonista3, um Twitter TL laut auf dem iPhone vorzulesen). Dieses Mal werden nur Bilder und Videos aus den Twitter-Suchergebnissen extrahiert und automatisch auf dem iPhone gespeichert.

Umgebung

iPhone8 13.2.3 Pythonista3 3.2 Tweepy 3.8.0

Vorbereitung

・ Installation von Pythonista3 ・ Twitter API-Registrierungsanwendung ・ Installation von StaSh ・ Installation von Tweepy, Anfragen, Youtube-DL

Code

sav_photo_video.py


#!Pythonista3
#Ein Programm, das Bilder speichert, die der Suche von Twitter im iPhone-Album entsprechen

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

#Eine Funktion, die eine Liste von Bild- und Video-URLs aus den gesuchten Wörtern zurückgibt
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_Eine Funktion, die Liste als Argument verwendet und jedes Video speichert
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_Eine Funktion, die Liste als Argument verwendet und jedes Bild speichert
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('Das Wort, nach dem Sie suchen möchten\n')
hosiikazu = int(input('Wie viele Bilder möchten Sie?\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) + 'Woche')
    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('Ende des Speicherns(Anzahl der Bilder:' + str(gazou_suu) + ' ,Anzahl der Videos:' + str(douga_suu) + ')')

Ergebnis

Ausgangszustand. Es gibt keine Fotos oder Alben. 写真 2020-02-04 20 06 53.png

Öffnen Sie das Programm und geben Sie das Suchwort und die Mindestanzahl der Blätter an, die Sie speichern möchten 写真 2020-02-04 20 08 57.png

Moment mal··· 写真 2020-02-04 20 09 08.png

Wenn das Speichern abgeschlossen ist, ist es beendet. 写真 2020-02-04 20 09 37.png

Wenn Sie es sich noch einmal ansehen, wird automatisch ein Album erstellt und die diesmal gespeicherten Bilder werden gespeichert. 写真 2020-02-04 20 09 53.png

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

Das Video befindet sich in dem Verzeichnis, das den Code in Pythonista enthält. 写真 2020-02-04 20 10 52.png

Kommentar

Ich wusste nicht, wie ich ein Video wie ein Foto in ein Album einfügen sollte. (Sind die Fotos von Pythonista nicht mit Videos kompatibel?) Bitte lassen Sie mich wissen, wenn jemand es weiß. Bitte ändern Sie die Anzahl der Suchvorgänge und die Suchmethode, damit Sie sie problemlos verwenden können.

Aufgabe

Was mich interessierte, nachdem ich es mehrmals benutzt hatte ○ Besserer Weg zum Speichern von Videos Vorläufig dachte ich, ich sollte in der Lage sein, die Ordner zu teilen, wenn ich Zeit habe.

○ Automatisches Löschen doppelter Bilder Wenn Sie mehrmals mit demselben Schlüsselwort suchen, wird hier und da dasselbe Bild gespeichert. Ich versuche, kein Album mit demselben Namen zu erstellen, aber ich dachte, es wäre schön, wenn es einen Teil gäbe, um die Suchergebnisse mit dem vorhandenen Album zu vergleichen.

Fazit

Was ich tun möchte, hat Gestalt angenommen! Es scheint jedoch mehr Raum für Verbesserungen zu geben, um die Verwendung zu vereinfachen ...

Recommended Posts

Speichern Sie Bilder und Videos, die von der Twitter-Suche aufgerufen wurden, automatisch mit Pythonista3 auf dem iPhone
Suchen und speichern Sie das Bild von Tomono Kafu von Twitter
[Go language] Sammeln und speichern Sie Vtuber-Bilder mithilfe der Twitter-API
Holen Sie sich Bilder per Stichwortsuche von Twitter
Funktion zum Speichern von Bildern nach Datum [python3]
Erhalten Sie Tweets mit der Google Cloud-Funktion und speichern Sie Bilder automatisch in Google Fotos
So suchen Sie mit Pythons Astroquery und erhalten passende Bilder mit Skyview
Suchen und laden Sie YouTube-Videos automatisch mit Python herunter
Speichern Sie Suchergebnisse auf Twitter in CSV.
Lassen Sie das iPhone Twitter TL mit Pythonista3 vorlesen
Ich habe versucht, mit der Cloud Vision API von GCP automatisch erotische Bilder von Twitter zu sammeln
Ich habe versucht, mit VOICEROID2 automatisch zu lesen und zu speichern
Suchen Sie Twitter mit Python
Ich habe versucht, Videos mit der Youtube Data API (Anfänger) zu suchen.