Объединение нескольких команд 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

2 ответа

Это кричит о функции, как «bout:

#! /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
ответ дан 18 July 2018 в 13:59

Это кричит о функции, как «bout:

#! /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
ответ дан 24 July 2018 в 20:18

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

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