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
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.
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.
[".\\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.
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.
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