summaryrefslogblamecommitdiffstats
path: root/.bin/music
blob: 6ef5ef8c0344038031218756bd2150bc53e3683c (plain) (tree)















































                                                                 

                                                



















                                                                                                                 
#!/bin/sh


MUSIC_DIR="${HOME}/music"
MUSIC_LIST=
MUSIC_FILE=
MUSIC_YT_OPTIONS=

log() {
	echo "[${0}  ] ${@}"
}

main() {
	# arguments
	while getopts "c:" arg; do
		case "${arg}" in
			c)
				MUSIC_FILE="${OPTARG}"
				;;
			h)
				exit 0
				;;
		esac
	done

	# ensure parameters are correct
	[ ! -f "${MUSIC_FILE}" ] && exit 1


	while read -r line; do
		
		# skip comments
		line=$(echo ${line} | grep -v -e "^$" -e "^#")
		[ -z "${line}" ] && continue

		# retrieve playlist params
		url=$(echo "${line}" | cut -d " " -f 1)
		dir=$(echo "${line}" | cut -d " " -f 2)

		dir="${MUSIC_DIR}/${dir}"

		[ -d "${dir}" ] &&
			log "${dir}: directory already exists" &&
			continue

		mkdir "${dir}"
		log "${dir} ${url}: download"

		yt-dlp --rm-cache-dir >/dev/null
		yt-dlp \
			--extract-audio \
			--audio-format mp3 \
			--prefer-ffmpeg \
			--audio-quality 0 \
			--embed-thumbnail \
			--metadata-from-title "%(artist)s - %(title)s" \
			--no-warnings \
			--ignore-errors \
			--no-overwrites \
			--continue \
			--add-metadata \
			--user-agent "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" \
			--output "${dir}/'%(title)s.%(ext)s'" \
			"${url}"


	done < "${MUSIC_FILE}"
}

main ${@}
remember that computers suck.