35 lines
1002 B
Bash
Executable File
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
|