瀏覽代碼

Add cuetag program.

master
Svend Sorensen 19 年之前
父節點
當前提交
f0eec41ab5
共有 2 個檔案被更改,包括 145 行新增6 行删除
  1. +8
    -6
      tools/cueprint.c
  2. +137
    -0
      tools/cuetag.sh

+ 8
- 6
tools/cueprint.c 查看文件

@@ -346,14 +346,16 @@ int info (char *name, int format, int trackno, char *d_template, char *t_templat

ntrack = cd_get_ntrack(cd);

cd_printf(d_template, cd, 0);
if (-1 == trackno) {
cd_printf(d_template, cd, 0);

if (0 == trackno) {
for (trackno = 1; trackno <= ntrack; trackno++) {
cd_printf(t_template, cd, ntrack);
cd_printf(t_template, cd, trackno);
}
} else if (0 < trackno || ntrack >= trackno) {
cd_printf(t_template, cd, ntrack);
} else if (0 == trackno) {
cd_printf(d_template, cd, trackno);
} else if (0 < trackno && ntrack >= trackno) {
cd_printf(t_template, cd, trackno);
} else {
fprintf(stderr, "%s: track number out of range\n", progname);
return -1;
@@ -365,7 +367,7 @@ int info (char *name, int format, int trackno, char *d_template, char *t_templat
int main (int argc, char **argv)
{
int format = UNKNOWN;
int trackno = 0; /* track number (0 = all tracks) */
int trackno = -1; /* track number (-1 = unspecified, 0 = disc info) */
char *d_template = NULL; /* disc template */
char *t_template = NULL; /* track template */
/* getopt () variables */


+ 137
- 0
tools/cuetag.sh 查看文件

@@ -0,0 +1,137 @@
#! /bin/sh

# cuetag - tag files based on cue/toc file information
# uses cueprint output

CUEPRINT=cueprint
cue_file=""

# Vorbis Comments
vorbis()
{
VORBISCOMMENT=vorbiscomment

# space seperated list of recomended stardard field names
# see http://www.xiph.org/ogg/vorbis/doc/v-comment.html
fields='TITLE VERSION ALBUM TRACKNUMBER ARTIST PERFORMER COPYRIGHT LICENSE ORGANIZATION DESCRIPTION GENRE DATE LOCATION CONTACT ISRC'

# fields' corresponding cueprint conversion characters
# seperate alternates with a space

TITLE='%t'
VERSION=''
ALBUM='%T'
TRACKNUMBER='%n'
ARTIST='%c %p'
PERFORMER='%p'
COPYRIGHT=''
LICENSE=''
ORGANIZATION=''
DESCRIPTION='%m'
GENRE='%g'
DATE=''
LOCATION=''
CONTACT=''
ISRC='%i %u'

for field in $fields; do
value=""
for conv in `eval echo \\$$field`; do
value=`$CUEPRINT -n $1 -t "$conv\n" $cue_file`

if [ -n "$value" ]; then
break
fi
done

if [ -n "$value" ]; then
echo $VORBISCOMMENT -t "$field=$value" $2
fi
done
}

id3()
{
MP3INFO=mp3info

# space seperated list of ID3 v1.1 tags
# see http://id3lib.sourceforge.net/id3/idev1.html

fields="TITLE ALBUM ARTIST YEAR COMMENT GENRE TRACKNUMBER"

# fields' corresponding cueprint conversion characters
# seperate alternates with a space

TITLE='%t'
ALBUM='%T'
ARTIST='%p'
YEAR=''
COMMENT='%c'
GENRE='%g'
TRACKNUMBER='%n'

for field in $fields; do
value=""
for conv in `eval echo \\$$field`; do
value=`$CUEPRINT -n $1 -t "$conv\n" $cue_file`

if [ -n "$value" ]; then
break
fi
done

if [ -n "$value" ]; then
case $field in
TITLE)
echo $MP3INFO -t "$value" $2
;;
ARTIST)
echo $MP3INFO -a "$value" $2
;;
YEAR)
echo $MP3INFO -y "$value" $2
;;
COMMENT)
echo $MP3INFO -c "$value" $2
;;
GENRE)
echo $MP3INFO -g "$value" $2
;;
TRACKNUMBER)
echo $MP3INFO -n "$value" $2
;;
esac
fi
done
}

main()
{
cue_file=$1
shift

ntrack=`cueprint -d '%N' $cue_file`
trackno=1

if [ $# -ne $ntrack ]; then
echo "Number of files does not match number of tracks."
fi

for file in $@; do
case $file in
*.[Oo][Gg][Gg])
vorbis $trackno "$file"
;;
*.[Mm][Pp]3)
id3 $trackno "$file"
;;
*)
echo "$file: uknown file type"
;;
esac
trackno=$(($trackno + 1))
done
}

main "$@"

Loading…
取消
儲存