forked from julianmarcos/dot
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.7 KiB
67 lines
1.7 KiB
#!/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" -A "$album" -t "$title" -n "$track" -N "$total" -Y "$date" "$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
|
|
|