#!/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