youtube-dl: используйте другой формат вывода при загрузке списка воспроизведения

Я использую youtube-dl в основном для загрузки каналов или плейлистов. Однако, если это плейлист, я не хочу использовать тот же шаблон вывода, как если бы это был канал. Есть ли способ достичь этого?

# If it is a channel, use this:
-o ./Downloads/Channels/%(uploader)s_%(channel_id)s/%(upload_date)s_%(title)s_%(display_id)s.%(ext)s
# If it is a playlist, use this:
-o ./Downloads/Playlists/%(playlist_title)s_%(playlist_id)s/[%(playlist_index)s] %(upload_date)s_%(title)s_%(display_id)s.%(ext)s
1
задан 29 June 2019 в 21:21

1 ответ

URL-адреса каналов Youtube содержат /channel/, я бы просто проверил эту строку и установил соответствующий параметр с помощью небольшой функции:

yt() {
  for i in "$@"; do
    if [[ "$i" =~ .*/channel/.* ]]; then
      opt="channel"
    else
      opt="playlist"
    fi
  echo youtube-dl -o "$opt" "$i"
  done
}

Это определяет функцию yt, которая перебирает ее arguments, устанавливает для переменной opt значение "channel", если аргумент содержит строку «/ channel /», или "playlist", если нет, и запускает echo youtube-dl с опцией и аргументом. Запустите его со списком каналов и плейлистов, чтобы увидеть, как он выполняет:

$ yt channel test something_with_/channel/_here
youtube-dl -o playlist channel
youtube-dl -o playlist test
youtube-dl -o channel something_with_/channel/_here

Замените "channel" на строку параметров (без начального -o!) Для каналов и "playlist" на строку для плейлисты, проверьте с реальными URL-адресами, печатает ли теперь функция правильные команды и, наконец, удалите команду echo, чтобы она действительно выполнялась youtube-dl.

Я храню функции bash в отдельном файле ~/.bash_functions и отправляю их в мой ~/.bashrc, другие предпочитают иметь функции непосредственно в последнем файле, в любом случае, как вы определили его в каждом новом терминале.

1
ответ дан 29 June 2019 в 21:21

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

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