Автор Тема: Скрипт для разбивки lossless-образов  (Прочитано 1231 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Driver

  • Супермодератор
  • Сообщений: 1715
  • Репутация: 22.25
  • OS:
  • Linux Linux
  • Browser:
  • Opera 9.80 Opera 9.80
    • Просмотр профиля
    • i'am on linux.com
разбивает по трекам на основе информации из cue-файлов. на выходе кучка flac-файлов :)
#!/bin/bash
#
# albumsplit
#
# 2010-02-23 02:32 KRAT
#
# dependencies packages: flac, shntool, mac, wavpack, lame, cuetools
#
 
cue_file=$1
album_file=$2

usage()
{
echo "usage: albumsplit cuefile albumfile [--recode|-r]"
}

cue_recode()
{
cue_utf=`echo "$cue_file" | sed 's/.cue/.utf.cue/'`
iconv "$cue_file" -f cp1251 -t utf8 -o "$cue_utf" &&
cue_file="$cue_utf"
return
}

main()
{
if [ $# -lt 1 ]; then
usage
exit
fi
case "$3" in
-r|--recode)
cue_recode
;;
esac

#если у вас wavpack на лету не разбивается shntool'ом, раскомментрируйте 4 строки ниже
# echo $album_file | grep .wv > /dev/null
# if [ $? = 0 ]; then
# wvunpack "$album_file" && "album_file = `echo $album_file | sed 's/.wv/.wav/' > /dev/null `"
# fi

cuebreakpoints "$cue_file" | shnsplit -o flac "$album_file"
mv "$album_file" "$album_file.orig" && cuetag "$cue_file" *.flac
genre=`grep GENRE "$cue_file" | awk '{print $3}'`
date=`grep DATE "$cue_file" | awk '{print $3}'`
metaflac --set-tag=GENRE=$genre ./*.flac
metaflac --set-tag=DATE=$date ./*.flac

for fl in `ls -1 *.flac`;
do mv "$fl" "`metaflac --show-tag=TRACKNUMBER $fl |
awk '{print sprintf("%02d", substr($0, 1+index($0, "=")))}'` - `metaflac --show-tag=TITLE $fl |
awk '{print substr($0, 1+index($0, "="))}'`.flac";
done
mv *.orig "$album_file" && echo "complete"
}

main "$@"

проверялось на wav, flac, ape, wv образах
« Последнее редактирование: Май 20, 2010, 01:06:31 pm от Pascal »
Знаю отличную шутку про UDP, но не факт что она до вас дойдет.

Pascal

  • Администратор
  • Сообщений: 8558
  • Репутация: 38.45
  • OS:
  • Linux (Gentoo) Linux (Gentoo)
  • Browser:
  • Chrome 10.0.648.151 Chrome 10.0.648.151
    • Просмотр профиля
    • Форум системных администраторов UNIX
Re: Скрипт для разбивки lossless-образов
« Ответ #1 : Март 20, 2011, 10:19:27 pm »
Что я установил:
* app-cdr/cuetools
     Available versions:  1.3.1 ~1.3.1-r1
     Installed versions:  Version: 1.3.1
                          Date:    22:16:57 20.03.2011
     Best versions/slot:  1.3.1
     Homepage:            http://developer.berlios.de/projects/cuetools/
     Description:         Utilities to manipulate and convert cue and toc files
     License:             GPL-2
vaio pascal # eix -ve shntool
* media-sound/shntool
     Available versions:  3.0.8 ~3.0.10 ~3.0.10-r1 {alac flac mac shorten sox wavpack}
     Installed versions:  Version: 3.0.8
                          Date:    22:19:48 20.03.2011
                          USE:     flac -shorten -sox -wavpack
     Best versions/slot:  3.0.8
     Homepage:            http://shnutils.freeshell.org/shntool/
     Description:         shntool is a multi-purpose WAVE data processing and reporting utility
     License:             GPL-2

после этого в bin таки не обнаружил cuetag
поиском он был найден в
/usr/share/doc/cuetools-1.3.1-r1/extras/cuetag.sh.bz2
после чего он был распакован в /usr/bin

при конвертации вылезло куча ошибок типа

2002: input file error
-: unknown format
-: input file error

в итоге я нашел некий патченый cuetag но он тоже отказался работать

поэтому все надо делать самому =)

$ cuebreakpoints "2002.cue" | shnsplit -o flac "2002.flac"
Splitting [2002.flac] (63:18.00) --> [split-track01.flac] (8:01.72) : 100% OK
Splitting [2002.flac] (63:18.00) --> [split-track02.flac] (7:14.73) : 100% OK
-----
$ cuetag.sh 2002.cue split-track0*.flac


cuetag пропатчил сам посредством замены опций в 21 строке

METAFLAC="metaflac --remove-all-tags --import-tags-from=-"
мой скрипт вышел несколько короче =)

#!/bin/sh
cuebreakpoints $1 | shnsplit -o flac $2
cuetag $1 split-track0*.flac

И обязательно убираем пробелы из названий cue и flac иначе ничего не выйдет =)
« Последнее редактирование: Март 20, 2011, 11:35:31 pm от Pascal »
cout << "Shalom World!\n"; // (с)

Pascal

  • Администратор
  • Сообщений: 8558
  • Репутация: 38.45
  • OS:
  • Linux (Arch) Linux (Arch)
  • Browser:
  • Chrome 18.0.1025.142-1 Chrome 18.0.1025.142-1
    • Просмотр профиля
    • Форум системных администраторов UNIX
Скрипт для разбивки lossless-образов
« Ответ #2 : Апрель 05, 2012, 12:19:20 am »
На Арче все заработало из коробки без патчей и правок имен файлов

Spoiler for Hiden:
pascal@netbee ~/tmp/mf $ cuebreakpoints "Mylene Farmer - Avant que l'ombre... (Japan).cue" | shnsplit -o flac "Mylene Farmer - Avant que l'ombre... (Japan).flac"
Splitting [Mylene Farmer - Avant que l'ombre... (Japan).flac] (70:52.67) --> [split-track01.flac] (6:01.50) : 100% OK
Splitting [Mylene Farmer - Avant que l'ombre... (Japan).flac] (70:52.67) --> [split-track02.flac] (4:38.02) : 100% OK
Splitting [Mylene Farmer - Avant que l'ombre... (Japan).flac] (70:52.67) --> [split-track03.flac] (3:56.23) : 100% OK
Splitting [Mylene Farmer - Avant que l'ombre... (Japan).flac] (70:52.67) --> [split-track04.flac] (5:25.22) : 100% OK
Splitting [Mylene Farmer - Avant que l'ombre... (Japan).flac] (70:52.67) --> [split-track05.flac] (4:29.15) : 100% OK
Splitting [Mylene Farmer - Avant que l'ombre... (Japan).flac] (70:52.67) --> [split-track06.flac] (4:21.15) : 100% OK
Splitting [Mylene Farmer - Avant que l'ombre... (Japan).flac] (70:52.67) --> [split-track07.flac] (4:09.58) : 100% OK
Splitting [Mylene Farmer - Avant que l'ombre... (Japan).flac] (70:52.67) --> [split-track08.flac] (4:16.40) : 100% OK
Splitting [Mylene Farmer - Avant que l'ombre... (Japan).flac] (70:52.67) --> [split-track09.flac] (4:05.00) : 100% OK
Splitting [Mylene Farmer - Avant que l'ombre... (Japan).flac] (70:52.67) --> [split-track10.flac] (3:48.60) : 100% OK
Splitting [Mylene Farmer - Avant que l'ombre... (Japan).flac] (70:52.67) --> [split-track11.flac] (5:08.42) : 100% OK
Splitting [Mylene Farmer - Avant que l'ombre... (Japan).flac] (70:52.67) --> [split-track12.flac] (5:24.03) : 100% OK
Splitting [Mylene Farmer - Avant que l'ombre... (Japan).flac] (70:52.67) --> [split-track13.flac] (4:55.27) : 100% OK
Splitting [Mylene Farmer - Avant que l'ombre... (Japan).flac] (70:52.67) --> [split-track14.flac] (10:13.10) : 100% OK
pascal@netbee ~/tmp/mf $ cuetag.sh Mylene\ Farmer\ -\ Avant\ que\ l\'ombre...\ \(Japan\).cue split-track*.flac
pascal@netbee ~/tmp/mf $
cout << "Shalom World!\n"; // (с)