Я недавно спросилЭтот вопрос об использовании gpaste get
вывода как STDIN
для youtube-dl. На этот вопрос уже был дан ответ, но я хотел бы перейти к следующему шагу автоматизации многокомандной задачи:
инициировать загрузку видео в текущей папке, используя URL-адрес, скопированный из адресной строки Firefox, команда:
youtube-dl $(gpaste get [video url])
преобразовать файл mkv, mp4 или m4a в .wav
командой:ffmpeg -i [filename of video from step one].<filetype of video from step one> [filename of video from step one].wav
[...процесс продолжается...]
Мой вопрос: я все еще новичок в регулярных выражениях. Есть ли последовательность регулярных выражений, которую я могу использовать, чтобы извлечь имя файла из файла, созданного командой, youtube-dl
и использовать его в качестве входных данных для следующей ffmpeg
команды?
Вот пример:
gpaste get 0
возвращаетсяhttps://somevideo.com/video
youtube-dl $(gpaste get 0)
Загружает файл в текущую папку с Y
именем файла &&
ffmpeg -i <filename Y>
Вернет дубликат исходного файла, теперь в .wav
формате
Как мне заставить bash получить имя файла Y до того, как он будет создан, чтобы я мог поместить все это в скрипт?
Нужно ли мне также фильтровать по диапазону типов файлов (все типы видео) или мне следует фильтровать по самому последнему файлу в текущей папке или по комбинации обоих вариантов?
решение1
Только что проверил документацию youtube-dl, он принимает этот параметр:
--get-filename Simulate, quiet but print output filename
Итак, возможно, вы можете попробовать что-то вроде этого:
videourl=$(gpaste get [video url])
videofilename=$(youtube-dl --get-filename $videourl)
youtube-dl $videourl
#further processing.