터미널에서 다양한 폴더로 .cue에서 .flac로 .ape를 일괄 변환 및 분할


9

44GB (예, 44 개)의 .apeCD 파일 폴더가 있습니다. 각각 .ape은 완전한 CD이며 일반적 .cue으로 각각과 함께 파일이 있습니다 .ape. 큐 데이터가 없기 때문에 변환해야하지만 분할하지 않아야합니다. 거기에도 .jpgs와 .logs가 있으며, 나는 신경 쓰지 않습니다. 경우 tree명령 출력이를 시각화하는 데 도움이, 여기 있습니다 :

├── Philips Mozart Collection - 180 CD
│   │   ├── box01-Symphonies
│   │   │   ├── 1B.jpg
│   │   │   ├── 1F.jpg
│   │   │   ├── cd01
│   │   │   │   ├── CDImage.ape
│   │   │   │   ├── CDImage.ape.cue
│   │   │   │   ├── Complete Mozart Edition, Vol. 01, Early Symphonies (Disc 1) - Neville Mariner, Academy of St. Martin in the Fields.log
│   │   │   │   ├── img421.jpg
│   │   │   │   └── img422.jpg
│   │   │   ├── cd02
│   │   │   │   └── CDImage.ape
│   │   │   ├── cd03
│   │   │   │   ├── CDImage.ape
│   │   │   │   ├── CDImage.ape.cue
│   │   │   │   ├── Complete Mozart Edition, Vol. 01, Early Symphonies (Disc 2) - Sir Neville Marinner - Acadamy of St Martin in the Fields.log
│   │   │   │   ├── img426.jpg
│   │   │   │   └── img427.jpg
│   │   │   ├── cd04

등 ... 180 CDS까지.

기본적으로 모든 .ape파일을 여러 파일로 분할 하고 디렉토리 구조 (바람직하게는 완전히 새롭고 다른 디렉토리에 있음)를 유지하면서 .flac태그 정보를에서 복사 하고 싶습니다 .cue. 가능하면 스크립트보다 한 줄 명령을 선호합니다. 나는 이것에 대해 어떻게 갈 것인가? 이 작업을 수행하는 방법을 아는 사람에게 감사합니다!

그리고 누군가 가이 질문을 여기 에이 질문에 대한 복제로 표시하기 전에 : 다른 하위 폴더에서 모든 .ape 파일을 .flac로 변환하십시오.


안녕하세요, 당신의 문장에 대해 더 자세히 설명해 주시겠습니까? ".. 태그에서 태그 정보를 복사하십시오 ..." 변환 된 .flac 파일 이름을 .cue 파일에서 가져와야합니까? 그런 다음 샘플 컨텐츠를 공유하십시오. 다른 방법으로 여러 개의 파일을 작성해야하며 이러한 파일의 최대 수는 얼마입니까? 감사합니다
αғsнιη

큐 데이터가 없기 때문에 어떻게 든 건너 뛰어야합니다. 이게 무슨 뜻이야? 큐 데이터가 없으면 트랙이 시작 및 종료되는 위치에 대한 정보가 큐에 있기 때문에를 변환 할 수는 있지만 분할 할 수는 없습니다.
emk2203

@ Afshin.Hamadi 예, 파일 이름은 트랙 제목과 일치합니다. .cue 파일에는 아티스트, 앨범 등과 같은 정보가 있습니다.이 정보는 새 flac 파일로 복사해야합니다.
willem.hill

@ emk2203 좋은 지적, 나는 질문을 업데이트했습니다.
willem.hill

당신은 자신을 훨씬 더 모순하고 있습니다. "큐 데이터가 없어서 변환해야하지만 분할하지 않아도됩니다." - "기본적으로 모든 .ape 파일을 여러 .flac 파일로 분할하고 .cue에서 태그 정보를 복사하고 싶습니다 ..." . 그래서 무엇입니까? 표준 ".ape 및 .cue 파일이 있고 파일을 .flac 태그로 변환 및 분할"하려는 경우 24 시간 전에 두 가지 좋은 답변으로 질문을 마감했을 수 있습니다.
emk2203

답변:


6

당신이 거의하지 않기 때문에 나는 여러 단계로 이것을 할 것입니다. 여기서는 자동화보다 투명성이 중요합니다. 그러나 한 줄도 가능합니다. 각 단계마다 모든 파일에 대해 하나의 명령 만 사용하면 이것이 의도 한 것입니다.

당신이 필요합니다 ffmpeg(또는 avconv), shntoolcuetools설치.

모든 .ape것을 .flac제자리 로 변환하려면 :

find . -name "*.ape" -exec sh -c 'exec ffmpeg -i "$1" "${1%.ape}.flac"' _ {} \;

http://www.etree.org/shnutils/shntool/ 에서 APE 파일 용 패치 된 MAC 인코더 및 디코더를 설치하는 경우이 첫 번째 단계는 필요하지 않습니다. 하지만 당신은 그것을 컴파일해야 g++하고 yasm자신. .tta파일 대신 동일하게 사용되며 파일 대신 자주 사용됩니다 .ape.

파일 분할 및 이름 .flac 지정 :

find . -name "*.cue" -exec sh -c 'exec shnsplit -f "$1" -o flac -t "%n_%p-%t" "${1%.cue}.flac"' _ {} \;

경우 shnsplit또한 변환에 사용하는 경우, 교체 .flac"${1%.cue}.flac"당신이에서 변환 된 포맷의 확장자.

  • %n - 트랙 번호
  • %p – 출연자
  • %t – 트랙 이름

파일 이름 .cue에 대한 .flac파일 에서 가져옵니다 . 결과에 태그를 지정하려면 .flac파일을 분할 하십시오.

find . -name "*.cue" -execdir sh -c 'exec cuetag "$1" *.flac' _ {} \;

여가 시간에 나머지 CDImage.ape.cue, CDImage.flacCDImage.ape파일을 제거하십시오 . 이름은 독특하기 때문에 find . -name "CDImage*" -delete모차르트 CDImage가 내가 모르는 작곡을 시작한 경우를 제외하고 는 간단 합니다.

들어 shnsplit작업에 필요한 모든 인코더 / 디코더는 읽기 및 쓰기 파일을 할 수 있도록 설치해야합니다. 패키지 (예 : FLAC)를 설치하여 APE (및 TTA 형식) 용 모듈을 소스에서 컴파일해야합니다.

확장명을 제외하고 .cue.tta/ .flac/ .ape파일의 이름이 같은 모든 표준 사례에 적용 됩니다.


다른 사람에 대한 참고 사항 :이 변환을 처리하는 경우 소스 파일은 일본에서 유래 된 것일 수 있으며 APE 및 TTA가 다른 곳보다 더 인기가 있습니다. 경우 .cue파일이 처음 SHIFT-JIS 코딩 지금은 UTF-8로 열리고의 shnsplit단계는 중단됩니다 . .cue파일 이름을 바꿔야합니다.

find . -name "*.cue" -exec rename 's/\.cue$/.cux/' -- {} +

중간 파일을 UTF-8로 변환하십시오.

find . -name "*.cux" -exec sh -c 'exec iconv -f SHIFT-JIS -t UTF-8 -o "${1%.cux}.cue" -- "$1"' _ {} \;

위의 단계를 수행하기 전에 .cux다음을 수행 하면 파일을 제거하는 것을 잊지 마십시오 .

find . -name "*.cux" -delete

shnsplit의 맨 페이지 에는 지원되는 형식으로 원숭이가 나열되므로 ffmpeg를 사용하여 flac로 변환하는 것을 건너 뛰고 -o flac대신 shnsplit과 함께 사용할 수 있습니다 . 코덱 / 컨테이너의 다른 무손실 코덱도 사용되므로 표준 기본 이름과 원숭이를 기대하지 마십시오. 따라서 하드 코드를 작성하지 않는 것이 좋으며 find 명령을 한 번 실행할 때 모든 단계를 포함하는 것이 좋습니다. metaflac --add-replay-gain좋은 생각이 될 것입니다.
LiveWireBT

@LiveWireBT : 기술적으로는 맞습니다. 이것이 제가 한 의견에서 "사용 가능한 두 가지 솔루션"이라고 말한 이유입니다. 그러나 ape 및 tta 지원을위한 플러그인 소스를 다운로드하고 g ++ 및 yasm을 설치 한 후 직접 컴파일하여 설치해야합니다. ffmpeg 솔루션이 더 쉬워서갔습니다.
emk2203

2
한 명령 버전 :find -name '*.ape' -execdir sh -c 'flac="${1%.ape}.flac"; ffmpeg -i "$1" "$flac" && shnsplit -f CDImage.ape.cue "$flac" && cuetag CDImage.ape.cue "$flac"' _ {} \:
David Foerster

1
예. 삭제 스위치없이 항상 한 번만 실행하면 의도 한대로 실행됩니다.
emk2203

1
약간 수정 된 지침을 사용하십시오. 그들을 시험해 보았습니다.
emk2203
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.