snippets/youtube-par-cmd

35 lines
1002 B
Bash
Executable File

#!/usr/bin/env bash
# called from youtube-audio-par-dl and youtube-par-dl with corresponding download command
# only works with jq (command line JSON processor)
cmd="$1"
playlistURL="$2"
playlistJSON=`yt-dlp "$playlistURL" --flat-playlist -J`
playlistTitle=`echo "$playlistJSON" | jq -r '.title'`
playlistInfo="$playlistTitle"
output="$(mkdir "$playlistTitle")"
status=$?
if [ $status -ne 0 ]; then
output="$(cd "$playlistTitle")"
status=$?
if [ $status -ne 0 ]; then
playlistTitle=`echo "$playlistJSON" | jq -r '.id'`
mkdir "$playlistTitle"
fi
fi
cd "$playlistTitle"
urls=`echo "$playlistJSON" | jq -r '.entries[].url'`
echo "$urls" | awk '{print "https://www.youtube.com/watch?v=" $0}' | xargs -n 1 -P 10 "$cmd"
m3uFile="Playlist - $playlistTitle"".m3u8"
echo "#EXTM3U" > "$m3uFile"
echo "#PLAYLIST:$playlistInfo" >> "$m3uFile"
echo "$urls" | while read url; do
find . -name "*$url*" -prune -exec basename '{}' ';'| tr -d "\n" | jq -sRr @uri >> "$m3uFile"
done