Spielen Sie das MV von Python Skusta zum ersten Mal ununterbrochen. Scrollen Sie durch die Songliste.

Am Anfang

Ich habe Skustas MV-Funktion für die kontinuierliche Wiedergabe als Thema für das Selbststudium von Python gewählt, aber das abgeschlossene Programm kann MV-Loops abspielen, aber in Wirklichkeit kann nur ein Song abgespielt werden, und es ist zu schlecht, um zu sagen, dass es sich um eine kontinuierliche Wiedergabefunktion handelt. Es war eine Sache.

Dieses Mal werde ich den Vorgang implementieren, um die Songliste nach dem Ende der Wiedergabe nach unten zu senden.

Vorheriger Artikel: Kontinuierliche Wiedergabe des ersten Python Skusta MV

Design

01.jpg

Sie können Songs vorrücken, indem Sie in den roten Rahmen im obigen Bild klicken. Wie Sie jedoch aus der Songliste ersehen können, ist dies einzigartig, da es für jeden Song völlig anders ist und der Bereich, der als gemeinsamer Teil verwendet werden kann, auch von anderen Songs abgedeckt wird. Es scheint schwierig zu sein, das Teil auszuwählen. Hier erhalten Sie zuerst die Koordinaten des Teils, das auf dem Bildschirm sicherlich eindeutig sein wird, und klicken dann auf die Koordinaten, die durch Hinzufügen des Versatzbetrags erhalten wurden.

Der Teil, der im obigen Bild vom blauen Rahmen umgeben ist, wurde als Ziel ausgewählt.

Quellcode

 coding:utf-8
MAIN_PATH:str=".\\MVPlay\\"
FILE_TYPE:str="*.png "

# Argumentkonstante
FILES:int=0
FILEEVENTS:int=1
WAITTIME:int=2

# Konstante zum Erfassen von X- und Y-Koordinaten
X:int=0
Y:int=1

# Ereignisdefinitionskonstante
CLICK:int=0
SWIPE:int=1
RECURE:int=2
EXIT:int=3

# Konstante für Dateiereignis
FILE:int=0
EVENT:int=1
ARG1:int=2
ARG2:int=3
ARG3:int=4

# Dateiereignis definieren
FILEEVENTS_MAIN:list=[
 #Wenn das Bild mit dem Dateinamen übereinstimmt, klicken Sie auf die Position, an der die Koordinaten um den angegebenen Wert versetzt sind
    [".\\MVPlay\\03scroll.png ",CLICK,[220,630],None,None]
]
 coding:utf-8
from pydef import*

# Dateiereignis abrufen
def getFileEvent(fn:str,fev):
    for tmpl in fev:
        if tmpl[FILE]==fn:
            return tmpl
    return None

# Sie nimmt jedes Mal zu, wenn die Bilderkennung erfolgreich ist, und kehrt zum Anfang zurück, wenn alle Dateien fertig sind.
def sequentialCount(i:int,maxcount:int):
    if i>=maxcount:
        return 0
    else:
        return i+1
 coding:utf-8
import pyautogui
import glob
import time
from pydef import*
from pyfunc import*

# Führen Sie die dem Ereignis entsprechende Verarbeitung aus
# Da die Hauptfunktion rekursiv aufgerufen wird, schreiben Sie sie in main anstelle von pyfunc.
def fileEvent(arg:list,loc:list):
 #Klicken Sie, wenn nichts vorhanden ist
    if arg==None:
        pyautogui.click(loc[X],loc[Y])
 #Klickereignis
    elif arg[EVENT]==CLICK:
        loc=[x+y for (x,y) in zip(loc,arg[ARG1])]
        pyautogui.click(loc[X],loc[Y])
 #Swipe-Ereignis
    elif arg[EVENT]==SWIPE:
 _n = Keine # Nicht implementiert
 #Wiederkehrendes Ereignis
    elif arg[EVENT]==RECURE:
        flist=glob.glob(arg[ARG1]+FILE_TYPE)
        main([flist,arg[ARG2],arg[ARG3]])
 #End Ereignis
    elif arg[EVENT]==EXIT:
        exit()

# Basierend auf der Liste der empfangenen Dateien und der Liste der Dateiereignisse
# Führen Sie weiterhin Ereignisse aus
def main(arg:list):
    i:int=0
    while True:
 #Bilderkennungsprüfung
        loc=pyautogui.locateCenterOnScreen(arg[FILES][i])
        if not(loc==None):
            time.sleep(arg[WAITTIME])
 # Dateiereignisausführung
            fileEvent(getFileEvent(arg[FILES][i],arg[FILEEVENTS]),loc)
            i=sequentialCount(i,len(arg[FILES])-1)
        time.sleep(arg[WAITTIME])

flist=glob.glob(MAIN_PATH+FILE_TYPE)
main([flist,FILEEVENTS_MAIN,0.5])

Es ist viel länger her als beim letzten Mal, aber die meisten von ihnen sind ständige Erklärungen.

einfache Erklärung

    [".\\MVPlay\\03scroll.png ",CLICK,[220,630],None,None]

Diese Definition bedeutet, dass beim Laden einer Datei mit demselben Namen wie ". \ MVPlay \ 03scroll.png " einschließlich des Pfads 220 und 620 zu den durch Bilderkennung übereinstimmenden X- und Y-Koordinaten hinzugefügt und darauf geklickt werden. ..

# Führen Sie die dem Ereignis entsprechende Verarbeitung aus
# Da die Hauptfunktion rekursiv aufgerufen wird, schreiben Sie sie in main anstelle von pyfunc.
def fileEvent(arg:list,loc:list):
 #Klicken Sie, wenn nichts vorhanden ist
    if arg==None:
        pyautogui.click(loc[X],loc[Y])
 #Klickereignis
    elif arg[EVENT]==CLICK:
        loc=[x+y for (x,y) in zip(loc,arg[ARG1])]
        pyautogui.click(loc[X],loc[Y])
 #Swipe-Ereignis
    elif arg[EVENT]==SWIPE:
 _n = Keine # Nicht implementiert
 #Wiederkehrendes Ereignis
    elif arg[EVENT]==RECURE:
        flist=glob.glob(arg[ARG1]+FILE_TYPE)
        main([flist,arg[ARG2],arg[ARG3]])
 #End Ereignis
    elif arg[EVENT]==EXIT:
        exit()

In der Datei definierte Ereignisse werden von der neu hinzugefügten Funktion fileEvent verarbeitet. Andere Ereignisse als CLICK sind vorerst nicht besonders aussagekräftig, da sie möglicherweise benötigt werden.

Allgemeiner Kommentar

Jetzt wurde die Reihe der Arbeiten zum Drücken der MV-Taste → Drücken der Wiedergabetaste → Bewegen zum nächsten Titel nach Abschluss der MV-Wiedergabe und Zurückkehren des Songlistenbildschirms automatisiert. Das einzige, woran ich diesmal dachte, war, dass die Liste zu praktisch war. Ich war mir nicht ganz sicher, wann ich die Geschichte hörte, aber ich kann sie fühlen, indem ich sie berühre. Aufruf der Rückruffunktion, in der das Dateiereignis definiert ist. Es kann Spaß machen, es zu entwerfen.

Schließlich

Da es auch eine Funktion zum Verschieben von Songlisten hat, habe ich das Gefühl, dass ich meiner idealen kontinuierlichen Wiedergabe näher komme, aber das Problem, dass ungeklärte Songs und MVs bei nicht implementierten Songs aufhören, bleibt bestehen. Als nächstes möchte ich dieses Problem lösen.

Recommended Posts

Spielen Sie das MV von Python Skusta zum ersten Mal ununterbrochen. Scrollen Sie durch die Songliste.
Spielen Sie kontinuierlich die MV der ersten Python Skusta
Python-Handspiel (zweidimensionale Liste)
Erster Python 3 ~ Der Beginn der Wiederholung ~
Siehe Python zum ersten Mal
Der erste Schritt von Python Matplotlib
Informationen zur Grundlagenliste der Python-Grundlagen
Spielen Sie, indem Sie die Riot Games-API in Python First Half drücken
Nehmen Sie die logische Summe von List in Python (Zip-Funktion)
MongoDB mit Python zum ersten Mal
Python Amateur versucht die Liste zusammenzufassen ①
Ruft die EDINET-Codeliste in Python ab
[Python] -Liste
[Python] Checklistenelemente alle, alle
[Python] Sortieren Sie die Liste von pathlib.Path in natürlicher Reihenfolge
Die erste Web-App, die von Python-Anfängern erstellt wurde
Der erste Schritt im Problem der Erfüllung von Einschränkungen in Python
Kopieren Sie die Liste in Python
Ich habe zum ersten Mal versucht, Python zu programmieren.
[Algorithmus x Python] Verwendung der Liste
Python Amateur versucht die Liste zusammenzufassen ②
So finden Sie das erste Element, das den Kriterien in der Python-Liste entspricht