Объединение нескольких команд youtube-dl в один сценарий

Это рекомендовалось мне пользователем на здесь, что я делаю сообщение, спрашивающее, как я могу объединить несколько загрузок youtube-dl в на единственном сценарии, который будет выполнен. Я загружаю много каналов YouTube и в настоящее время имею каждый канал в другом .sh файл, который я могу выполнить, но был сказан, что могу просто объединить их всех в один файл. Пример моих сценариев:

./youtube-dl ytuser:user -ciw -o "/path/to/directory/%(upload_date)s-% \
(title)s.%(ext)s" --download-archive "/path/to/directory/downloaded.txt" \
--add-metadata --write-info-json --write-description --write-thumbnail \
--write-annotations --embed-subs -f \
"bestvideo[height<=720]+bestaudio/best[height<=720]" --merge-output-format \
"mkv"

Таким образом, у меня есть тот точный сценарий для каждого различного канала, кроме, конечно, измененного так, чтобы каждый канал имел свой собственный каталог. Так как у меня есть так многие, я хотел поместить их всех в .sh файлы и затем имеют сценарий для выполнения весь .sh файлы, но снова был сказан, что этот метод был путем по сложному и что был способ поместить все различные командные строки в единственный сценарий, который будет выполнен.

Разъяснение: так /path/to/directory/ будет отличающимся для каждого канала, обычно мне не нужен URL, так как это заботится о ytuser:*user* раздел кода. Если будет URL, то он будет просто добавлен в самом конце кода и ytuser:*user* будет удален.

В настоящее время у меня есть много различных .sh файлы, что у всех есть код, специфичный для одного канала, так например, выполнение h3h3Productions.sh откроет терминал, который загружает канал "h3h3Productions" с YouTube в каталог как /youtube-dl/videos/vlogs/h3h3Productions/ и выполнение WarLeaks.sh загрузит канал YouTube "WarLeaks" в каталог youtube-dl/videos/footage/WarLeaks/.

Так код в каждом .sh файл является относительно тем же, но /path/to/directory/ и /path/to/directory/.downloaded.txt, для --archive-download кодируйте, отличается для всех них и ytuser:*user* также отличается для каждого канала.

То, что я хочу смочь сделать, просто имеют тот .sh файл, который имеет код для нескольких различных каналов в нем. Тот путь, вместо того, чтобы выполнить каждый .sh зарегистрируйте индивидуально, у меня может просто быть тот .sh файл, что, когда выполненный активирует все загрузки, содержавшие внутри, так как он будет иметь код для восьми или десяти различных каналов в нем.

Я надеюсь, что это помогает разъясниться если не сообщенный мне.

2
задан 3 May 2017 в 00:39

1 ответ

Это кричит о функции, как насчет:

#! /bin/bash

yt(){
./youtube-dl "ytuser:"$1 -ciw -o $2"/%(upload_date)s-%(title)s.%(ext)s" --download-archive $2"/downloaded.txt" --add-metadata --write-info-json --write-description --write-thumbnail --write-annotations --embed-subs -f "bestvideo[height<=720]+bestaudio/best[height<=720]" --merge-output-format "mkv"
}

yt "user" "/path/to/directory/"
yt "differentuser" "/path/to/other/directory/"
…

Шаги для достижения этого просты, просто определите, какие части команды действительно меняются, замените ее переменными, напишите функцию и вызовите это по мере необходимости. Возможно, есть лучшее решение, но нам понадобятся некоторые ваши точные сценарии, чтобы найти его.

0
ответ дан 2 December 2019 в 09:06

Другие вопросы по тегам:

Похожие вопросы: