Converti in batch e dividi .ape con .cue in .flac in varie cartelle dal terminale


9

Ho una cartella da 44 GB (sì, quarantaquattro) di .apefile CD. Ognuno .apeè un CD completo e di solito c'è un .cuefile insieme a ciascuno .ape. Devo convertirli ma non dividerli, poiché non ci sono dati di spunto da seguire. Ci sono anche alcuni .jpgs e .logs, di cui non mi interessa. Se l' treeoutput di un comando aiuta a visualizzarlo, ecco qui:

├── 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

ecc ... fino a 180 CDS.

Fondamentalmente, voglio dividere tutti i .apefile in più .flacfile e copiare le informazioni sui tag da .cue, mantenendo la struttura della directory (preferibilmente in una directory completamente nuova e diversa). Preferisco un comando a riga singola a uno script, se possibile. Come lo farei? Grazie a chiunque sappia come farlo!

E prima che qualcuno contrassegni questa domanda come duplicata in questa qui: Converti tutti i file .ape in .flac in diverse sottocartelle , vorrei sottolineare che l'utente non ha bisogno di dividere .ape in più .flacs.


Ciao, ti prego di spiegare di più sulla tua frase "... e di copiare le informazioni sui tag dal .cue ...". Significa che il nome del file .flac convertito deve essere prelevato dal file .cue? Quindi vorresti condividere il suo contenuto di esempio. Altrimenti come devono essere creati più file e qual è il numero massimo di questi file? Grazie
αғsнιη il

> Devo in qualche modo saltarli, dato che non ci sono dati di spunto per passare. Cosa intendi con questo? Senza i dati di cue, è possibile convertire, ma non dividere, poiché le informazioni su dove iniziano e finiscono le tracce sono nel cue.
emk2203,

@ Afshin.Hamadi Sì, il nome file corrisponderebbe al titolo della traccia. Il file .cue contiene informazioni come artista, album, ecc. Queste informazioni devono essere copiate nei nuovi file flac.
willem.hill,

@ emk2203 Buon punto, ho aggiornato la domanda.
willem.hill,

Ti stai contraddicendo ancora di più. "Devo convertirli ma non dividerli, dato che non ci sono dati di spunto per passare." - "Fondamentalmente, voglio dividere tutti i file .ape in più file .flac e copiarne le informazioni sui tag dal .cue ..." . Quindi, cos'è? Se è lo standard "Ho file .ape e .cue e li voglio convertiti e divisi sul posto in taggati .flac", la domanda avrebbe potuto essere chiusa con due buone risposte 24 ore fa.
emk2203,

Risposte:


6

Lo farei in più passaggi, poiché lo fai raramente. La trasparenza è più importante dell'automazione qui. Ma è anche possibile una sola riga. Suppongo che se usi un solo comando per tutti i file per ogni passaggio, questo è quello che volevi.

Devi avere ffmpeg(o avconv) shntoole cuetoolsinstallato.

Per convertire tutti i tuoi .apea .flacposto:

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

Se si installa il codificatore e decodificatore MAC con patch per i file APE da http://www.etree.org/shnutils/shntool/ , questo primo passaggio non è necessario. Ma si avrebbe bisogno di compilarlo con g++e yasmte stesso. Lo stesso vale per i .ttafile, che vengono spesso utilizzati al posto di .ape.

Dividi e nomi .flac file:

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

Se shnsplitviene utilizzato anche per la conversione, sostituire .flacin "${1%.cue}.flac"con l'estensione del formato da cui si sta convertendo.

  • %n - numero di spedizione
  • %p - esecutore
  • %t - nome della traccia

viene preso dal .cuefile per i .flacnomi dei file. Per taggare i .flacfile divisi risultanti :

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

Rimuovi i rimanenti CDImage.ape.cue, CDImage.flace CDImage.apefile a tuo piacimento. I nomi sono unici, quindi un semplice find . -name "CDImage*" -deleteè sufficiente, tranne se Mozart ha creato una composizione a partire dalla CDImagequale non sono a conoscenza.

Per shnsplitfunzionare, tutti i codificatori / decodificatori necessari devono essere installati in modo da poter leggere e scrivere file. I moduli per APE (e per il formato TTA) dovrebbero essere compilati dal sorgente, gli altri installando il pacchetto (cioè FLAC).

Questo funziona per tutti i casi standard in cui .cuee .tta/ .flac/ .apefile hanno lo stesso nome, ad eccezione dell'estensione.


Nota laterale per gli altri : se hai a che fare con questa conversione, i tuoi file sorgente potrebbero essere di origine giapponese, dove APE e TTA erano più popolari che altrove. Se i .cuefile erano inizialmente codificati SHIFT-JIS e ora aperti come UTF-8, il shnsplitpassaggio si interromperà . Devi rinominare i .cuefile con

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

e converti i file intermedi in UTF-8 con

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

prima di tentare di eseguire i passaggi precedenti. Non dimenticare di sbarazzarti dei .cuxfile quando hai finito con:

find . -name "*.cux" -delete

La manpage di shnsplit elenca la scimmia come formato supportato in modo da poter saltare la conversione in flac con ffmpeg e utilizzare -o flacinvece con shnsplit. Non aspettarti di trovare un nome di base e una scimmia standard poiché vengono usati anche altri codec senza perdita, quindi è meglio non codificare e sarebbe meglio includere tutti i passaggi in un'unica esecuzione del comando find. metaflac --add-replay-gainsarebbe anche una buona idea.
LiveWireBT

@LiveWireBT: tecnicamente, hai ragione. Ecco perché ho detto "due soluzioni disponibili" in uno dei miei commenti. Tuttavia, devi scaricare il sorgente dei plugin per il supporto di ape e tta, installare g ++ e yasm e compilarli e installarli tu stesso. Sono andato con la soluzione ffmpeg poiché è più facile.
emk2203,

2
Per una versione a comando singolo: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
Sì. Avrei sempre eseguito una volta senza l'interruttore di eliminazione prima per assicurarmi che funzionasse come previsto.
emk2203,

1
Si prega di utilizzare le istruzioni leggermente riviste. Li ho provati, funzionano.
emk2203,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.