History

split2mp3 and split2ogg

Serge Zirukin committed 17 years ago

Commit 2d44a611 parent b60f91d1 file · +87 −30Browse files

Unified · Split

split2flac.sh+87−30
@@ -20,6 +20,12 @@ · 19 unmodified lines
2020 # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
2121 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
2222
23+# Dependencies:
24+# shntool, cuetools
25+# SPLIT: flac, wavpack, mac
26+# CONVERT: flac, id3lib, lame, vorbis-tools
27+# ART: ImageMagick
28+
2329 CONFIG="${HOME}/.split2flac"
2430 TMPCUE="${HOME}/.split2flac_sheet.cue"
2531 TMPPIC="${HOME}/.split2flac_cover.jpg"
@@ -29,6 +35,8 @@ NORENAME=0 · 3 unmodified lines
2935 NOPIC=0
3036 REMOVE=0
3137 PIC_SIZE="192x192"
38+FORMAT=$(echo $0 | sed 's/^.*2//;s/\..*//')
39+FORMAT=${FORMAT:-"flac"}
3240
3341 # load settings
3442 eval $(cat "${CONFIG}" 2>/dev/null)
@@ -42,25 +50,27 @@ FORCE=0 · 7 unmodified lines
4250 HELP="Usage: split2flac.sh [OPTIONS] FILE
4351 -o DIRECTORY * - set output directory
4452 -cue FILE - use file as a cue sheet
53+ -f FORMAT - use specified output format (current is \${FORMAT})
4554 -c FILE * - use file as a cover image
4655 -nc * - do not set any cover images
47− -cs WxH * - set cover image size (current is ${PIC_SIZE})
56+ -cs WxH * - set cover image size (current is \${PIC_SIZE})
4857 -d * - create artist/album subdirs
4958 -nd * - do not create any subdirs
5059 -r * - rename tracks to include title
51− -nr * - do not rename tracks (numbers only, e.g. '01.flac')
60+ -nr * - do not rename tracks (numbers only, e.g. '01.\${FORMAT}')
5261 -p - dry run
5362 -D * - delete original file
5463 -nD * - do not remove the original
5564 -f - force deletion without asking
56− -s - save configuration to \"${CONFIG}\"
65+ -s - save configuration to \"\${CONFIG}\"
5766 -h - print this message
5867 -H - print README
5968
6069 * - option has effect on configuration if -s option passed.
61−NOTE: '-c some_file.jpg -s' only allows cover images, it doesn't set a default one."
70+NOTE: '-c some_file.jpg -s' only allows cover images, it doesn't set a default one.
71+Supported FORMATs: flac, mp3, ogg."
6272
63−README="split2flac.sh splits one big APE/FLAC/WV file to FLAC tracks with tagging and renaming.
73+README="split2flac.sh splits one big APE/FLAC/WV file to FLAC/MP3/OGG tracks with tagging and renaming.
6474 It's better to pass '-p' option to see what will happen when actually splitting tracks.
6575 You may want to pass '-s' option for the first run to save default configuration
6676 (output dir, cover image size, etc.) so you won't need to pass a lot of options
@@ -73,6 +83,7 @@ do · 6 unmodified lines
7383 case $1 in
7484 -o) DIR=$2; shift;;
7585 -cue) CUE=$2; shift;;
86+ -f) FORMAT=$2; shift;;
7687 -c) NOPIC=0; PIC=$2; shift;;
7788 -nc) NOPIC=1;;
7889 -cs) PIC_SIZE=$2; shift;;
@@ -85,13 +96,13 @@ do · 6 unmodified lines
8596 -nD) REMOVE=0;;
8697 -f) FORCE=1;;
8798 -s) SAVE=1;;
88− -h) echo "${HELP}"; exit 0;;
99+ -h) eval "echo \"${HELP}\""; exit 0;;
89100 -H) echo "${README}"; exit 0;;
90101 *)
91102 if [ -r "${FILE}" ]
92103 then
93104 echo "Unknown option $1"
94− echo "${HELP}"
105+ eval "echo \"${HELP}\""
95106 exit 1
96107 elif [ ! -r "$1" ]
97108 then
@@ -105,6 +116,8 @@ do · 7 unmodified lines
105116 done
106117
107118 METAFLAC="metaflac --no-utf8-convert"
119+VORBISCOMMENT="vorbiscomment -R -a"
120+ID3TAG="id3tag -2"
108121
109122 # search for a cue sheet if not specified
110123 if [ -z "${CUE}" ]
@@ -142,7 +155,7 @@ then · 31 unmodified lines
142155 fi
143156
144157 # print some info and check arguments
145−echo "Input file :" ${FILE:?"${HELP}"}
158+echo "Input file :" ${FILE:?"No input filename given. Use -h for help."}
146159 echo "Cue sheet :" ${CUE:?"No cue sheet"}
147160
148161 # search for a front cover image
@@ -264,9 +277,16 @@ then · 115 unmodified lines
264277 exit 1
265278 fi
266279
280+ case ${FORMAT} in
281+ flac) ENC="flac flac -8 - -o %f";;
282+ mp3) ENC="cust ext=mp3 lame --preset extreme - %f";;
283+ ogg) ENC="cust ext=ogg oggenc -q 10 - -o %f";;
284+ *) echo "Unknown output format ${FORMAT}"; exit 1;;
285+ esac
286+
267287 # split to tracks
268288 cuebreakpoints "${CUE}" | \
269− shnsplit -O never -o "flac flac -8 - -o %f" -d "${OUT}" -t "%n" "${FILE}"
289+ shnsplit -O never -o "${ENC}" -d "${OUT}" -t "%n" "${FILE}"
270290 if [ $? -ne 0 ]
271291 then
272292 echo "Failed to split"
@@ -295,15 +315,15 @@ i=1 · 22 unmodified lines
295315 while [ $i -le ${TRACKS_NUM} ]
296316 do
297317 TAG_TITLE=$(cueprint -n $i -t %t "${CUE}")
298− f="${OUT}/$(printf %02i $i).flac"
299− FILE_TRACK=$(basename "$f" .flac)
318+ f="${OUT}/$(printf %02i $i).${FORMAT}"
319+ FILE_TRACK=$(basename "$f" .${FORMAT})
300320 FILE_TITLE=$(echo ${TAG_TITLE} | ${VALIDATE})
301321
302322 echo "$i: ${TAG_TITLE}"
303323
304324 if [ ${NORENAME} -ne 1 ]
305325 then
306− FINAL="${OUT}/${FILE_TRACK} - ${FILE_TITLE}.flac"
326+ FINAL="${OUT}/${FILE_TRACK} - ${FILE_TITLE}.${FORMAT}"
307327 if [ ${DRY} -ne 1 ]
308328 then
309329 mv "$f" "${FINAL}"
@@ -319,25 +339,62 @@ do · 9 unmodified lines
319339
320340 if [ ${DRY} -ne 1 ]
321341 then
322− ${METAFLAC} --remove-all-tags \
323− --set-tag="ARTIST=${TAG_ARTIST}" \
324− --set-tag="ALBUM=${TAG_ALBUM}" \
325− --set-tag="TITLE=${TAG_TITLE}" \
326− --set-tag="TRACKNUMBER=$i" \
327− "${FINAL}"
328− RES=$?
329−
330− if [ -n "${TAG_DATE}" ]
331− then
332− ${METAFLAC} --set-tag="DATE=${TAG_DATE}" "${FINAL}"
333− RES=$((${RES} + $?))
334− fi
342+ case ${FORMAT} in
343+ flac)
344+ ${METAFLAC} --remove-all-tags \
345+ --set-tag="ARTIST=${TAG_ARTIST}" \
346+ --set-tag="ALBUM=${TAG_ALBUM}" \
347+ --set-tag="TITLE=${TAG_TITLE}" \
348+ --set-tag="TRACKNUMBER=$i" \
349+ "${FINAL}" >/dev/null
350+ RES=$?
351+
352+ if [ -n "${TAG_DATE}" ]
353+ then
354+ ${METAFLAC} --set-tag="DATE=${TAG_DATE}" "${FINAL}" >/dev/null
355+ RES=$((${RES} + $?))
356+ fi
357+
358+ if [ -n "${PIC}" ]
359+ then
360+ ${METAFLAC} --import-picture-from="${PIC}" "${FINAL}" >/dev/null
361+ RES=$((${RES} + $?))
362+ fi
363+ ;;
364+
365+ mp3)
366+ ${ID3TAG} "-a${TAG_ARTIST}" \
367+ "-A${TAG_ALBUM}" \
368+ "-s${TAG_TITLE}" \
369+ "-t$i" \
370+ "-T${TRACKS_NUM}" \
371+ "${FINAL}" >/dev/null
372+ RES=$?
373+
374+ if [ -n "${TAG_DATE}" ]
375+ then
376+ ${ID3TAG} -y"${TAG_DATE}" "${FINAL}" >/dev/null
377+ RES=$((${RES} + $?))
378+ fi
379+ ;;
380+
381+ ogg)
382+ ${VORBISCOMMENT} "${FINAL}" \
383+ -t "ARTIST=${TAG_ARTIST}" \
384+ -t "ALBUM=${TAG_ALBUM}" \
385+ -t "TITLE=${TAG_TITLE}" \
386+ -t "TRACKNUMBER=$i" >/dev/null
387+ RES=$?
388+
389+ if [ -n "${TAG_DATE}" ]
390+ then
391+ ${VORBISCOMMENT} "${FINAL}" -t "DATE=${TAG_DATE}" >/dev/null
392+ RES=$((${RES} + $?))
393+ fi
394+ ;;
395+ *) echo "Unknown output format ${FORMAT}"; exit 1;;
396+ esac
335397
336− if [ -n "${PIC}" ]
337− then
338− ${METAFLAC} --import-picture-from="${PIC}" "${FINAL}"
339− RES=$((${RES} + $?))
340− fi
341398
342399 if [ ${RES} -ne 0 ]
343400 then

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t