#!/bin/sh checkMetadata() { ffprobe "$1" 2>&1 | grep -ie artist -e title while true; do printf "correct metadata? [Y] | [n]: " read -r yn < /dev/tty case "$yn" in [Yy]* ) return 0;; [Nn]* ) return 1;; * ) echo "Please answer yes or no.";; esac done } download_dir="$(mktemp -d)" temp_dir="$(mktemp -d)" for song in "$@"; do file_name="$(youtube-dl "ytsearch:$song lyrics" \ -f bestaudio/best \ --output "$download_dir/%(title)s.%(ext)s" \ --metadata-from-title "%(artist)s - %(title)s" \ --add-metadata \ |awk '$1 == "[download]" && $2 == "Destination:" {print substr($0, index($0,$3))}')" case "$(echo "$file_name" | awk -F . '{print $NF}')" in "webm") new_filename="${file_name%.*}".opus mkvextract tracks "$file_name" "0:$new_filename" > /dev/null file_name="$new_filename" ;; "m4a") ;; *) echo "unsupported file type" exit 1 ;; esac r128gain "$file_name" 2> /dev/null temp_file="$temp_dir/$(basename "$file_name")" cp "$file_name" "$temp_file" idntag "$temp_file" temp_file=$(echo "$temp_dir"/*) if checkMetadata "$temp_file"; then mv "$temp_file" . elif checkMetadata "$file_name"; then mv "$file_name" . else echo "enter it manually" fi done rm -rf "$temp_dir" "$download_dir" mpc update > /dev/null