41b729acd3
* 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
71 lines
1.7 KiB
Bash
Executable file
71 lines
1.7 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
err() { echo "Usage:
|
|
tag [OPTIONS] file
|
|
Options:
|
|
-a: artist/author
|
|
-t: song/chapter title
|
|
-A: album/book title
|
|
-n: track/chapter number
|
|
-N: total number of tracks/chapters
|
|
-d: year of publication
|
|
-g: genre
|
|
-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
|
|
a) artist="${OPTARG}" ;;
|
|
t) title="${OPTARG}" ;;
|
|
A) album="${OPTARG}" ;;
|
|
n) track="${OPTARG}" ;;
|
|
N) total="${OPTARG}" ;;
|
|
d) date="${OPTARG}" ;;
|
|
g) genre="${OPTARG}" ;;
|
|
c) comment="${OPTARG}" ;;
|
|
f) file="${OPTARG}" ;;
|
|
*) printf "Invalid option: -%s\\n" "$OPTARG" && err ;;
|
|
esac done
|
|
|
|
shift $((OPTIND - 1))
|
|
|
|
file="$1"
|
|
|
|
[ ! -f "$file" ] && echo "Provide file to tag." && err
|
|
|
|
[ -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
|
|
|
|
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
|