Это рекомендовалось мне пользователем на здесь, что я делаю сообщение, спрашивающее, как я могу объединить несколько загрузок 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
файл, что, когда выполненный активирует все загрузки, содержавшие внутри, так как он будет иметь код для восьми или десяти различных каналов в нем.
Я надеюсь, что это помогает разъясниться если не сообщенный мне.
Это кричит о функции, как насчет:
#! /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/"
…
Шаги для достижения этого просты, просто определите, какие части команды действительно меняются, замените ее переменными, напишите функцию и вызовите это по мере необходимости. Возможно, есть лучшее решение, но нам понадобятся некоторые ваши точные сценарии, чтобы найти его.