From d6f64217bfc80d2564941a290eae77b6f6fdf8ab Mon Sep 17 00:00:00 2001 From: TriMill Date: Fri, 13 Jan 2023 17:55:27 -0500 Subject: [PATCH] switched from id3v2 to eyeD3 --- README.md | 4 ++-- musidl | 26 +++++++++++++------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 3a436c6..b9877b0 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # musidl -musidl is a simple command-line utility written in Bash for downloading music from YouTube with id3 tags (used by media players to display the artist, album, etc.). It is licensed under the GNU GPLv3. +musidl is a simple command-line utility written in Bash for downloading music from YouTube with ID3v2 tags (used by media players to display the artist, album, etc.). It is licensed under the GNU GPLv3. -musidl requires [yt-dlp](https://github.com/yt-dlp/yt-dlp) to get information about and download the audio from videos, [jq](https://github.com/stedolan/jq) to process JSON, and [id3v2](http://id3v2.sourceforge.net/) to add id3 tags. +musidl requires [yt-dlp](https://github.com/yt-dlp/yt-dlp) to get information about and download the audio from videos, [jq](https://github.com/stedolan/jq) to process JSON, and [eyeD3](https://github.com/nicfit/eyeD3) to add ID3v2 tags. ## Installation diff --git a/musidl b/musidl index 824b841..8713b5d 100755 --- a/musidl +++ b/musidl @@ -18,14 +18,14 @@ # check to make sure all commands are available before running -if ! (command -v "yt-dlp" && command -v "jq" && command -v "id3v2") &>/dev/null; then +if ! (command -v "yt-dlp" && command -v "jq" && command -v "eyeD3") &>/dev/null; then >&2 echo "Missing dependencies." exit 1 fi # this is printed on -h/--help helpmsg="Usage: musidl [options]... [url]... (-- [yt-dlp options]) -Download music from YouTube using yt-dlp and add id3v2 metadata automatically +Download music from YouTube using yt-dlp and add ID3v2 metadata automatically Options: -h --help Print this message and exit @@ -45,7 +45,7 @@ Options: Any arguments after '--' will be sent to yt-dlp directly. These are not officially supported and some may cause problems." -versionmsg="0.0.1" +versionmsg="1.0.0" # Add a prefix to error messages function printStderr { @@ -175,8 +175,8 @@ for i in "${!data[@]}"; do if [ -n "$i_album" ]; then album="$i_album"; else album="${songdata[1]}" fi - if [ -n "$i_song" ]; then song="$i_song"; else - song="${songdata[2]}" + if [ -n "$i_song" ]; then title="$i_song"; else + title="${songdata[2]}" fi if [ -n "$i_year" ]; then year="$i_year"; else year="$(echo "${songdata[3]}" | head -c 4)" @@ -191,20 +191,20 @@ for i in "${!data[@]}"; do echo "URL: $url" [ -n "$artist" ] && echo "Artist: $artist" [ -n "$album" ] && echo "Album: $album" - [ -n "$song" ] && echo "Song: $song" + [ -n "$title" ] && echo "Title: $title" [ -n "$genre" ] && echo "Genre: $genre" [ -n "$year" ] && echo "Year: $year" [ -n "$track" ] && echo "Track: $track" continue fi - [ -z "$quiet" ] && echo -e "$pref_musidl tagging $song - $artist ($url)" - [ -n "$artist" ] && id3v2 --artist "$artist" "$filename" - [ -n "$album" ] && id3v2 --album "$album" "$filename" - [ -n "$song" ] && id3v2 --song "$song" "$filename" - [ -n "$genre" ] && id3v2 --genre "$genre" "$filename" - [ -n "$year" ] && id3v2 --year "$year" "$filename" - [ -n "$track" ] && id3v2 --track "$track" "$filename" + [ -z "$quiet" ] && echo -e "$pref_musidl tagging $title - $artist ($url)" + [ -n "$artist" ] && eyeD3 --artist "$artist" "$filename" --encoding utf8 >/dev/null + [ -n "$album" ] && eyeD3 --album "$album" "$filename" --encoding utf8 >/dev/null + [ -n "$title" ] && eyeD3 --title "$title" "$filename" --encoding utf8 >/dev/null + [ -n "$genre" ] && eyeD3 --genre "$genre" "$filename" --encoding utf8 >/dev/null + [ -n "$year" ] && eyeD3 --release-year "$year" "$filename" >/dev/null + [ -n "$track" ] && eyeD3 --track "$track" "$filename" >/dev/null done [ -z "$quiet" ] && echo -e "$pref_musidl done!"