1

Я недавно задал этот вопрос об использовании gpaste get output в качестве STDIN для youtube-dl. С тех пор на этот вопрос был дан ответ, но я хотел бы перейти к следующему этапу автоматизации, состоящему из нескольких команд:

  1. начать загрузку видео в текущей папке, используя URL, скопированный с панели URL в команде firefox: youtube-dl $(gpaste get [video url])

  2. преобразовать файл 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

  3. [... процесс продолжается ...]

Мой вопрос: я все еще новичок в регулярных выражениях. Существует ли последовательность регулярных выражений, которую я могу использовать, чтобы получить имя файла из файла, созданного командой youtube-dl и использовать его в качестве входных данных для следующей команды ffmpeg ?

Вот пример:

gpaste get 0

возвращает https://somevideo.com/video

youtube-dl $(gpaste get 0)

Загружает файл в текущую папку с именем файла Y &&

ffmpeg -i <filename Y>

Вернет дубликат исходного файла, теперь в формате .wav

Как я могу заставить bash получить это имя Y до того, как оно существует, чтобы я мог поместить все это в скрипт?

Должен ли я также фильтровать по диапазону типов файлов (все типы видео) или мне нужно будет фильтровать самый последний файл в текущей папке или их комбинацию?

1 ответ1

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. 

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .