24 lines
701 B
Bash
Executable File
24 lines
701 B
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo 'pipefail'
|
|
|
|
die() {
|
|
echo "$@" 1>&2
|
|
exit 1
|
|
}
|
|
|
|
data="$(yt-dlp -j "$1")"
|
|
dir="$HOME/Music/$(echo "$data" | jq -r '.title' | sed 's;/; ;g')"
|
|
id="$(echo "$data" | jq -r '.id')"
|
|
[ -z "$dir" ] && exit 1
|
|
[ -z "$id" ] && exit 1
|
|
echo "id: '$id'"
|
|
mkdir -p "$dir"
|
|
cd "$dir" || exit 1
|
|
yt-dlp -x --split-chapters "$1" || die "yt-dlp exited with an error code"
|
|
title="$(basename "$(find ./ -name "* \[$id\]*" | sort -r | head -n1 | sed "s; \[$id\].*;;")")"
|
|
[ -z "$title" ] && die "Could not get title"
|
|
find ./ -name "$title \[$id\]*" -exec rm {} \;
|
|
find ./ -name "$title - *" | while read file; do
|
|
mv "$file" "$(echo "$file" | sed "s;$title - ;;" | sed "s; \[$id\];;")"
|
|
done
|