Advertisement
Guest User

Untitled

a guest
Sep 20th, 2010
239
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.41 KB | None | 0 0
  1. #!/bin/bash
  2. # Разбивает ape или flac файл на отдельные песни в соответствии с cue файлом.
  3. # Песни будут записаны в формате flac. Ибо нефиг.
  4. # в flac-файлах будут заполнены теги ( из cue-файла )
  5. # все теги будут в utf-8
  6. # flac-файлы будут переименованны в "<номер песни> - <название песни>.flac"
  7. # Входные параметры:
  8. #       - тип разбиваемого файла, ape или flac
  9. #       - кодировка cue-файла.
  10. # Требования:
  11. #       - в каталоге должен быть только один ape либо flac файл
  12. #       - в каталоге должен быть только один cue файл
  13. #
  14. #       - наличие recode, cuetool, shntools, flac и mac
  15. #       - recode должен быть из состава perl
  16. #defvar() {
  17. #       if [ -z "$1" ]; then
  18. #               return $2;
  19. #       else
  20. #               return $1;
  21. #       fi
  22. #}
  23.  
  24. ftype=$1; #"ape" "flac" "wavepack"
  25. fcoding=$2;
  26. if [ -z "$ftype" ] ; then ftype="flac" ; fi
  27. if [ -z "$fcoding" ]  ; then fcoding="utf-8"; fi
  28.  
  29. # подготовка. cuetag сильно глючит
  30. rename 's/\ /_/g' *.{flac,cue};
  31.  
  32. # разобъём исходный файл на части
  33. cuebreakpoints *.cue |  shnsplit -o wav *.${ftype} ;
  34. for a in split*.wav ; do
  35.         # собственно кодирование
  36.                 flac --best --delete-input-file "$a";
  37.                 done;
  38.  
  39.                 # пропишем корректные теги
  40.                 recode ${fcoding}..utf-8 *.cue;
  41.                 cuetag *.cue split*.flac;
  42.  
  43.                 # переименуем файлы
  44.                 recode utf-8..${LANG#ru_RU.} *.cue;
  45.                 let a=1;
  46.                 for b in split*.flac; do
  47.                         mv "$b" "$(printf '%.2d - %s\n' "$(cueprint -t %n -n $a *.cue )" \
  48.                                                 "$(cueprint -t %t -n $a *.cue)").flac";
  49.                                                        let a=$a+1;
  50.                                                        done;
  51.  
  52.                                                        # вернём почти всё как было
  53.                                                        rename 's/_/\ /g' *.cue
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement