From 41b729acd303ff1180ca2e1a9ab9e0b05a0e4c29 Mon Sep 17 00:00:00 2001 From: appeasementPolitik <108810900+appeasementPolitik@users.noreply.github.com> Date: Thu, 22 Sep 2022 12:52:04 +0000 Subject: Fix tag script mp3 issue (#1182) * Fix tag script mp3 issue When you don't manually specify $total and $date with an mp3 file the eyeD3 command tries tagging with an empty variable, which causes it to error. This fixes it by only passing the parameter to the command if the variable is set. This pull request also adds support for the $genre and $comment variable. * Remove double backslash --- .local/bin/tag | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to '.local/bin/tag') diff --git a/.local/bin/tag b/.local/bin/tag index 8462b99..11a5b8e 100755 --- a/.local/bin/tag +++ b/.local/bin/tag @@ -54,7 +54,11 @@ Total=$total Date=$date Genre=$genre Comment=$comment" | opustags -i -S "$file" ;; - *.mp3) eyeD3 -Q --remove-all -a "$artist" -A "$album" -t "$title" -n "$track" -N "$total" -Y "$date" "$file" ;; + *.mp3) eyeD3 -Q --remove-all -a "$artist" -t "$title" -A "$album" -n "$track" \ + ${total:+-N "$total"} \ + ${date:+-Y "$date"} \ + ${genre:+-G "$genre"} \ + ${comment:+-c "$comment"} "$file" ;; *.flac) echo "TITLE=$title ARTIST=$artist ALBUM=$album -- cgit v1.3.1 From 21e08299b1709c6051a42560ca89967894d5c962 Mon Sep 17 00:00:00 2001 From: appeasementPolitik <108810900+appeasementPolitik@users.noreply.github.com> Date: Fri, 23 Sep 2022 14:55:42 +0000 Subject: Use ffmpeg for tag script (#1193) eyeD3 got orphaned in the AUR, so I looked for an alternative. Apparently ffmpeg also supports the ability to tag audio files, so this pull request replaces all the helper applications with ffmpeg --- .local/bin/tag | 56 +++++++++++++++++--------------------------------------- 1 file changed, 17 insertions(+), 39 deletions(-) (limited to '.local/bin/tag') diff --git a/.local/bin/tag b/.local/bin/tag index 11a5b8e..92d6323 100755 --- a/.local/bin/tag +++ b/.local/bin/tag @@ -13,7 +13,7 @@ Options: -c: comment You will be prompted for title, artist, album and track if not given." && exit 1 ;} -while getopts "a:t:A:n:N:d:g:c:f:" o; do case "${o}" in +while getopts "a:t:A:n:N:d:g:c:" o; do case "${o}" in a) artist="${OPTARG}" ;; t) title="${OPTARG}" ;; A) album="${OPTARG}" ;; @@ -22,7 +22,6 @@ while getopts "a:t:A:n:N:d:g:c:f:" o; do case "${o}" in d) date="${OPTARG}" ;; g) genre="${OPTARG}" ;; c) comment="${OPTARG}" ;; - f) file="${OPTARG}" ;; *) printf "Invalid option: -%s\\n" "$OPTARG" && err ;; esac done @@ -30,42 +29,21 @@ shift $((OPTIND - 1)) file="$1" -[ ! -f "$file" ] && echo "Provide file to tag." && err +temp="$(mktemp -p "$(dirname "$file")")" +trap 'rm -f $temp' HUP INT QUIT TERM PWR EXIT -[ -z "$title" ] && echo "Enter a title." && read -r title -[ -z "$artist" ] && echo "Enter an artist." && read -r artist -[ -z "$album" ] && echo "Enter an album." && read -r album -[ -z "$track" ] && echo "Enter a track number." && read -r track +[ ! -f "$file" ] && echo 'Provide file to tag.' && err -case "$file" in - *.ogg) echo "Title=$title -Artist=$artist -Album=$album -Track=$track -Total=$total -Date=$date -Genre=$genre -Comment=$comment" | vorbiscomment -w "$file" ;; - *.opus) echo "Title=$title -Artist=$artist -Album=$album -Track=$track -Total=$total -Date=$date -Genre=$genre -Comment=$comment" | opustags -i -S "$file" ;; - *.mp3) eyeD3 -Q --remove-all -a "$artist" -t "$title" -A "$album" -n "$track" \ - ${total:+-N "$total"} \ - ${date:+-Y "$date"} \ - ${genre:+-G "$genre"} \ - ${comment:+-c "$comment"} "$file" ;; - *.flac) echo "TITLE=$title -ARTIST=$artist -ALBUM=$album -TRACKNUMBER=$track -TOTALTRACKS=$total -DATE=$date -GENRE=$genre -DESCRIPTION=$comment" | metaflac --remove-all-tags --import-tags-from=- "$file" ;; - *) echo "File type not implemented yet." ;; -esac +[ -z "$title" ] && echo 'Enter a title.' && read -r title +[ -z "$artist" ] && echo 'Enter an artist.' && read -r artist +[ -z "$album" ] && echo 'Enter an album.' && read -r album +[ -z "$track" ] && echo 'Enter a track number.' && read -r track + +cp -f "$file" "$temp" && ffmpeg -i "$temp" -map 0 -y -codec copy \ + -metadata title="$title" \ + -metadata album="$album" \ + -metadata artist="$artist" \ + -metadata track="${track}${total:+/"$total"}" \ + ${date:+-metadata date="$date"} \ + ${genre:+-metadata genre="$genre"} \ + ${comment:+-metadata comment="$comment"} "$file" -- cgit v1.3.1