После нескольких попыток я успешно сделал это самостоятельно, надеюсь, что мой ответ поможет кому-то, у кого возникнут подобные вопросы.
Поскольку список в AppleScript не может быть изменен (поправьте меня, если я ошибаюсь), я должен использовать индекс для циклического просмотра моих видео вместо получения 1-го элемента, а затем удалить его из списка:
set next_video_index to 1
Следующий бесконечный цикл repeat
предназначен для контроля количества активных окон терминала, которое считается System Events
. Это не лучшее решение, потому что System Events
считает все окна, включая те, которые были открыты пользователем вручную.
repeat while true
tell application "System Events"
tell application "Terminal"
set window_count to (count of windows)
end tell
end tell
if оператор помогает начать новую задачу конвертации, когда количество окон терминала не достигает максимума (в моем коде установлено значение 5) и не все видео конвертируются.
Следует отметить, что ; exit
в конце скрипта терминала гарантирует, что окно завершенной задачи не испортит счетчик окон, но сначала вам нужно изменить настройки терминала, см. Эту ссылку:
OSX - Как автоматически закрыть окно терминала после выполнения команды «выход».
set task_not_finished to (next_video_index ≤ length of video_list)
if (window_count < 5) and task_not_finished then
set filePath to POSIX path of item next_video_index in video_list
set filePath to esc_space(filePath)
set [folderPath, filename] to split_path_name(filePath)
set next_video_index to next_video_index + 1
tell application "Terminal"
activate
do script with command "ffmpeg -hide_banner -i " & filePath & " -vcodec libx265 -tag:v hvc1 " & folderPath & filename & "_hevc.mp4; mv " & filePath & " ~/.Trash; exit"
end tell
end if
Когда последнее видео конвертируется, пора заканчивать цикл повторения.
if not task_not_finished then exit repeat
delay 1
end repeat