Что нового

[Автоматизация] Проверка воспроизведения и конвертирования(код рабочий)

Rinfes

Новичок
Сообщения
25
Репутация
0
Здравствуйте. Есть написанный мною рабочий скрипт.
Суть: идет проверка воспроизведения файла. Если файл воспроизводиться, то он конвертируется в 3 других файла. Далее эти 3 файла тестируются на воспроизведение и идет сравнение веса изначального файла с уже сконвертируемым.

Так как я только начал этим заниматься, хотелось бы услышать какие - нибудь советы по улучшению автоматизации или сокращению кода.

Например, у меня в начале идет объявление массива из 5 элементов. Каждому элементу присвоено значение в виде названия трека. Так вот, как сделать, если количество элементов не было бы известно, а массив заполнялся автоматический, заходя в папку Music и поочередно записывая все файлы в массив.


Код:
#include <Array.au3>

run("D:\Program Files (x86)\AIMP3\AIMP3.exe")
WinWaitActive("AIMP3")
WinMove("AIMP3", "", 116, 458, 369, 512)
Dim $songs[5]
$songs[0] = "Max Payne 2 - Main Theme.wav"
$songs[1] = "Scorpions - Wind of change.mid"
$songs[2] = "Nirvana - The Man Who Sold The World.flac"
$songs[3] = "doc.docx"
$songs[4] = "The Doors - Riders on the storm.ogg"

$file = FileOpen("Otchet.txt", 1)


;**********проверка воспроизведения треков с различными форматами*******************
$cvet = 0x5B5B5B ;серый цвет на эквалайзере
$cvet2 = 0x939393 ; серый цвет на значке плей

For $element In $songs
Send("^{DEL}") ; очистка плейлиста
Send("{INS}") ; добавление файла
WinWaitActive("Открыть")
Send($element&"{ENTER}")
WinWaitClose("Открыть")
Send("{SPACE}") ; начать воспроизведение
Send("^{j}")
sleep(1000)
Send("01:00{ENTER}")
sleep(3000)
$var = PixelGetColor(388, 575) ; цвет на эквалайзере
$var2 = PixelGetColor(462, 510) ; цвет на значке плей
If $cvet = $var or $cvet2 = $var2 Then

   
   FileWriteLine($file, "Трек " & $element& " не воспроизводиться" & @CRLF)
   
   sleep(500)
   Send("^{DEL}")
   sleep(500)
   Send("{NUMPAD5}"); кнопка "стоп"
   sleep(500)
Else

   
   FileWriteLine($file, "Трек " & $element&" воспроизводиться")
   sleep(500)
   Send("^{DEL}")
   sleep(500)
   Send("{NUMPAD5}")
   sleep(500)

   ;*****КОНВЕРТИРОВАНИЕ*****

		 $size0 = FileGetSize($element)
		 $a = StringLeft($element, StringInStr($element, "."))
		 Dim $novNazv[3]
		 $novNazv[0] = StringReplace($a, ".", ".ape")
		 $novNazv[1] = StringReplace($a, ".", ".mpc")
		 $novNazv[2] = StringReplace($a, ".", ".opus")
		 Send("^{k}")
		 sleep(1000)
		 Send("{INS}")
		 sleep(1000)
		 Send($element&"{ENTER}")
		 sleep(1000)
		 Send("{TAB 2}{UP 7}") ; выбор формата
		 Sleep(300)
		 Send("{F9}") ; старт
		 Sleep(10000)
		 Send("{INS}")
		 sleep(1000)
		 Send("{ENTER}")
		 sleep(1000)
		 Send("{TAB 2}{DOWN 2}")
		 Send("{F9}")
		 Sleep(10000)
		 Send("{INS}")
		 sleep(1000)
		 Send("{ENTER}")
		 sleep(1000)
		 Send("{TAB 2}{DOWN 2}")
		 Send("{F9}")
		 sleep(10000)
		 Send("!{F4}")

			; проверка воспроизведения полученных файлов и сравнение веса
			For $element2 In $novNazv
			   Send("{NUMPAD5}")
			   sleep(500)
			   Send("^{DEL}")
			   sleep(500)
			   Send("{INS}")
			   sleep(500)
			   Send($element2&"{ENTER}")
			   sleep(500)
			   Send("{SPACE}")
				  sleep(500)

				  Send("^{j}")
				  sleep(1000)
				  Send("01:00{ENTER}")
				  sleep(3000)
				  $var = PixelGetColor(388, 575)
				  $var2 = PixelGetColor(462, 510)
				  $size1 = FileGetSize($novNazv)
				  If $cvet <> $var And $cvet2 <> $var2 Then
					 If $size0 <> $size1 Then
						
						FileWriteLine($file, "Конвертирование трека " & $element2&" удачно. Файл воспроизводиться")
						
					 Else
						$file = FileOpen("Otchet.txt", 1)
						FileWriteLine($file, "Конвертирование трека " & $element2&" удачно. Но файл не воспроизводиться")
						FileClose($file)
					 EndIf

				  Else
					 
					 FileWriteLine($file, "Конвертирование трека " & $element2&" неудачно. Файл не воспроизводиться")
					 
					 EndIf

			Next
			
						FileWriteLine($file, "" & @CRLF)
						




EndIf
Next

FileClose($file)

ProcessClose("AIMP3.exe")

Так же почему то не добавляется пустая строка в файл (строка 36)
Код:
FileWriteLine($file, "Трек " & $element& " не воспроизводиться" & @CRLF)
 
Верх