Bonjour,
je met toujours ici ce script pour ne pas le perdre.
Il pourra toujours servir pour ceux qui sont sur Arch.
Pour Debian aussi en récupérant ce petit programme et en le mettant dans /usr/local/bin :
https://sourceforge.net/projects/yatoctocue/Il utilise gnudb.gnudb.org pour les infos cddb ( titre de l'album ). + iconv pour éliminer les mauvais caractères.
Il utilise cdrdao pour générer dans un dossier un BIN + TOC du CD Audio.
Dans ce dossier, il mettra dans un texte les commandes à utiliser pour graver cette image sur une galette.
Il corrigera les mauvais caractères dans le fichiers toc
Il génèrera un fichier perl pour le tag du fichier flac (single)
Convertira le toc en cue (avec yatoc2cue). On peut (pour Debian) commenter cette ligne puis décommenter une des deux lignes juste au dessus (cueconvert ou toc2cue)
On converti le BIN en un gros fichier FLAC ( il aura donc son fichier CUE à côté)
On injecte les tags dans le gros fichier FLAC
On crée un dossier FLACS & MP3S
On split le gros fichier FLAC pour avoir tous les titres séparés au format flac et mp3 dans leur dossier correspondant.
On supprime les "pregap"
On utilise le script "cuetag.sh" pour tagguer tout les flacs et mp3s par rapport au cue.
On met un numéro 01 02 03 etc devant le nom des titres ( le zéro utile pour le bon ordre dans le m3u à venir)
On génère le m3u pour les titres dans les deux dossiers (FLACS & MP3S)
Les programmes (en général)
cdrdao qui contient toc2cue
flac qui contient metaflac
cuetools qui contient cuebreakpoints cueconvert et cuetag
shntool qui contient shnsplit
mediainfo
et yatoctocue au cas où cueconvert ou toc2cue ne conviennent pas pour certains CD
Le script :
#!/bin/bash
# iconv -f ISO-8859-1 -t UTF8
DEVICE=/dev/sr0
ALBUMNAME=$(curl -s "http://gnudb.gnudb.org/~cddb/cddb.cgi?cmd=cddb+query+$(cd-discid "$DEVICE" | sed 's/ /+/g')&hello=user+hostname+cdparanoia+3&proto=3" | sed 's/\// - /g'|awk '{$1=""; $2=""; $3=""; sub(" ", " "); print}'| sed s'/.$//' | awk '{gsub(/^[ \t]+|[ \t]+$/,"")};1' | iconv -f ISO-8859-1 -t UTF8)
echo "Artist detected as: $ALBUMNAME"
read -p "Is this correct? (y/n) " yn
case $yn in
[Yy]* )
mkdir -p "$ALBUMNAME/BIN_TOC" ;;
[Nn]* )
read -p "Please enter the new album name: " ALBUMNAME
mkdir "$ALBUMNAME";;
* ) echo "Please answer yes or no.";;
esac
cdrdao read-cd --source-device "$DEVICE" --driver generic-mmc --paranoia-mode 3 \
--with-cddb --cddb-servers gnudb.gnudb.org:/~cddb/cddb.cgi \
--datafile "$ALBUMNAME/BIN_TOC/$ALBUMNAME.bin" "$ALBUMNAME/BIN_TOC/$ALBUMNAME.toc"
## Commandes pour graver une galette.
echo sudo cdrdao blank --device $DEVICE >> "$ALBUMNAME/BIN_TOC/BURN.txt"
echo sudo cdrdao write --device $DEVICE --driver generic-mmc --buffers 128 --speed 8 \"$ALBUMNAME.toc\" >> "$ALBUMNAME/BIN_TOC/BURN.txt"
## https://cryptii.com/pipes/text-octal
sed -i -e 's/\\240/ /g' -e 's/\\300/À/g' -e 's/\\340/à/g' \
-e 's/\\241/¡/g' -e 's/\\301/Á/g' -e 's/\\341/á/g' \
-e 's/\\242/¢/g' -e 's/\\302/Â/g' -e 's/\\342/â/g' \
-e 's/\\243/£/g' -e 's/\\303/Ã/g' -e 's/\\343/ã/g' \
-e 's/\\244/¤/g' -e 's/\\304/Ä/g' -e 's/\\344/ä/g' \
-e 's/\\245/¥/g' -e 's/\\305/Å/g' -e 's/\\345/å/g' \
-e 's/\\246/¦/g' -e 's/\\306/Æ/g' -e 's/\\346/æ/g' \
-e 's/\\247/§/g' -e 's/\\307/Ç/g' -e 's/\\347/ç/g' \
-e 's/\\250/¨/g' -e 's/\\310/È/g' -e 's/\\350/è/g' \
-e 's/\\251/©/g' -e 's/\\311/É/g' -e 's/\\351/é/g' \
-e 's/\\252/ª/g' -e 's/\\312/Ê/g' -e 's/\\352/ê/g' \
-e 's/\\253/«/g' -e 's/\\313/Ë/g' -e 's/\\353/ë/g' \
-e 's/\\254/¬/g' -e 's/\\314/Ì/g' -e 's/\\354/ì/g' \
-e 's/\\255/ /g' -e 's/\\315/Í/g' -e 's/\\355/í/g' \
-e 's/\\256/®/g' -e 's/\\316/Î/g' -e 's/\\356/î/g' \
-e 's/\\257/¯/g' -e 's/\\317/Ï/g' -e 's/\\357/ï/g' \
-e 's/\\260/°/g' -e 's/\\320/Ð/g' -e 's/\\360/ð/g' \
-e 's/\\261/±/g' -e 's/\\321/Ñ/g' -e 's/\\361/ñ/g' \
-e 's/\\262/²/g' -e 's/\\322/Ò/g' -e 's/\\362/ò/g' \
-e 's/\\263/³/g' -e 's/\\323/Ó/g' -e 's/\\363/ó/g' \
-e 's/\\264/´/g' -e 's/\\324/Ô/g' -e 's/\\364/ô/g' \
-e 's/\\265/µ/g' -e 's/\\325/Õ/g' -e 's/\\365/õ/g' \
-e 's/\\266/¶/g' -e 's/\\326/Ö/g' -e 's/\\366/ö/g' \
-e 's/\\267/·/g' -e 's/\\327/×/g' -e 's/\\367/÷/g' \
-e 's/\\270/¸/g' -e 's/\\330/Ø/g' -e 's/\\370/ø/g' \
-e 's/\\271/¹/g' -e 's/\\331/Ù/g' -e 's/\\371/ù/g' \
-e 's/\\272/º/g' -e 's/\\332/Ú/g' -e 's/\\372/ú/g' \
-e 's/\\273/»/g' -e 's/\\333/Û/g' -e 's/\\373/û/g' \
-e 's/\\274/¼/g' -e 's/\\334/Ü/g' -e 's/\\374/ü/g' \
-e 's/\\275/½/g' -e 's/\\335/Ý/g' -e 's/\\375/ý/g' \
-e 's/\\276/¾/g' -e 's/\\336/Þ/g' -e 's/\\376/þ/g' \
-e 's/\\277/¿/g' -e 's/\\337/ß/g' -e 's/\\377/ÿ/g' "$ALBUMNAME/BIN_TOC/$ALBUMNAME.toc"
#cat "$ALBUMNAME/$ALBUMNAME.toc" | sed 's/ (origine douteuse)//g' > "$ALBUMNAME/TEMP.toc"
#mv "$ALBUMNAME/TEMP.toc" "$ALBUMNAME/$ALBUMNAME.toc"
#sed -i "/SIZE_INFO/,/}/d" "$ALBUMNAME/$ALBUMNAME.toc"
#grep -v "MESSAGE" "$ALBUMNAME/$ALBUMNAME.toc" > "$ALBUMNAME/TEMP.toc"
#mv "$ALBUMNAME/TEMP.toc" "$ALBUMNAME/$ALBUMNAME.toc"
#grep -v "ISRC" "$ALBUMNAME/$ALBUMNAME.toc" > "$ALBUMNAME/TEMP.toc"
#mv "$ALBUMNAME/TEMP.toc" "$ALBUMNAME/$ALBUMNAME.toc"
# CRÉATION DU SCRIPT "toc2tag.pl"
{ echo "#!/usr/bin/perl -w" ;
echo '';
echo '$GotAlbum=0;' ;
echo '$Tracknum=0;';
echo '#$IsVarious=0;';
echo '$Artist="";';
echo '';
echo 'while (<>)';
echo '{';
echo 'if (/\/\/ Track (\d*)/)';
echo '{';
echo '$Tracknum=$1;';
echo 'print "TRACKNUMBER[$Tracknum]=$Tracknum\n";';
echo '}';
echo '';
echo 'if (/TITLE "(.*)"/)';
echo '{';
echo 'if (!$GotAlbum)';
echo '{';
echo '$GotAlbum=1;';
echo '$Album=$1;';
echo '$Album=~ s/\// - /;';
echo 'print "ALBUM=$Album\n";';
echo '}';
echo 'else';
echo '{';
echo 'print "TITLE[$Tracknum]=$1\n";';
echo '}';
echo '}';
echo '';
echo 'if (/PERFORMER "(.*)"/)';
echo '{';
echo 'if ($Tracknum==0)';
echo '{';
echo '$Artist=$1;';
echo '$Artist=~ s/\// - /;';
echo 'print "ARTIST=$Artist\n";';
echo '}';
echo 'else';
echo '{';
echo 'if ($1 ne $Artist)';
echo '{';
echo 'print "ARTIST[$Tracknum]=$1\n";';
echo '}';
echo '}';
echo '}';
echo '}';
} >>"$ALBUMNAME/toc2tag.pl"
chmod u+x "$ALBUMNAME/toc2tag.pl"
cat "$ALBUMNAME/BIN_TOC/$ALBUMNAME.toc" | "$ALBUMNAME"/./toc2tag.pl > "$ALBUMNAME/$ALBUMNAME.tags"
# CRÉATION DU "*.CUE"
## line too long ( line n°3)
#cueconvert -i toc -o cue "$ALBUMNAME/$ALBUMNAME.toc" "$ALBUMNAME/$ALBUMNAME.cue"
## C'est le cue qui n'est pas bon
#toc2cue "$ALBUMNAME/$ALBUMNAME.toc" "$ALBUMNAME/$ALBUMNAME.cue"
# Lui, c'est ok cue et Toc sans line too long ( line n°3)
yatoc2cue "$ALBUMNAME/BIN_TOC/$ALBUMNAME.toc" "$ALBUMNAME/$ALBUMNAME.cue"
# CONVERTIR LE BIN DE BASE POUR QUE MPLAYER PUISSE LIRE CELUI-CI
# Use mplayer to play the BIN file:
# mplayer -demuxer rawaudio ?NEWFILE.bin
# Ou rm file.bin plus bas après déchirement.
dd conv=swab if="$ALBUMNAME/BIN_TOC/$ALBUMNAME.bin" of="$ALBUMNAME/$ALBUMNAME-conv.bin"
mv "$ALBUMNAME/$ALBUMNAME-conv.bin" "$ALBUMNAME/$ALBUMNAME.bin"
# SI À LA LECTURE DU FICHIER FLAC, ON ENTEND QUE DU BRUIT: CHANGER "--endian=big" POUR "--endian=little"
flac --endian=little --sign=signed --channels=2 --bps=16 --sample-rate=44100 \
--cuesheet="$ALBUMNAME/$ALBUMNAME.cue" "$ALBUMNAME/$ALBUMNAME.bin"
# IMPORTER TAGS DANS LE FICHIER FLAC
metaflac --add-replay-gain --no-utf8-convert \
--import-tags-from="$ALBUMNAME/$ALBUMNAME.tags" "$ALBUMNAME/$ALBUMNAME.flac"
# SÉPARER TOUS LES PISTES DU FICHIER FLAC UNIQUE & SUPRESSION DE CELUI-CI
mkdir -p "$ALBUMNAME"/{FLACS,MP3S}
## shnsplit: warning: discarding initial zero-valued split point
## https://edpsblog.wordpress.com/2013/11/23/extraindo-arquivos-de-audio-nos-formatos-ape-flac-wave-wv-e-cue/
#shnsplit -d "$ALBUMNAME"/FLACS "$ALBUMNAME"/"$ALBUMNAME.flac" -f "$ALBUMNAME"/"$ALBUMNAME.cue" -o "cust ext=flac flac -V --fast -o %f -" -t "%n - %p - %t"
#shnsplit -d "$ALBUMNAME"/MP3S "$ALBUMNAME"/"$ALBUMNAME.flac" -f "$ALBUMNAME"/"$ALBUMNAME.cue" -o 'cust ext=mp3 lame --preset insane --quiet - %f' -t "%n - %p - %t"
cuebreakpoints "$ALBUMNAME"/"$ALBUMNAME.cue" | shnsplit -d "$ALBUMNAME"/FLACS "$ALBUMNAME"/"$ALBUMNAME.flac" -o "cust ext=flac flac -V --fast -o %f -"
cuebreakpoints "$ALBUMNAME"/"$ALBUMNAME.cue" | shnsplit -d "$ALBUMNAME"/MP3S "$ALBUMNAME"/"$ALBUMNAME.flac" -o "cust ext=mp3 lame --preset insane --quiet - %f"
rm -f "$ALBUMNAME/$ALBUMNAME.bin"
rm -f "$ALBUMNAME"/FLACS/00*pregap*
rm -f "$ALBUMNAME"/MP3S/00*pregap*
cuetag.sh "$ALBUMNAME"/"$ALBUMNAME.cue" "$ALBUMNAME"/FLACS/*.flac
cuetag.sh "$ALBUMNAME"/"$ALBUMNAME.cue" "$ALBUMNAME"/MP3S/*.mp3
( cd "$ALBUMNAME"/FLACS
num=1
for i in *.flac
do
name=$(mediainfo "$i" --Inform="General;%Track%")
a=$(printf "%02d" $num)
mv "$i" "$a - $name.flac"
let "num = $(($num + 1))"
done )
( cd "$ALBUMNAME"/MP3S
num=1
for i in *.mp3
do
name=$(mediainfo "$i" --Inform="General;%Track%")
a=$(printf "%02d" $num)
mv "$i" "$a - $name.mp3"
let "num = $(($num + 1))"
done )
## CRÉER UN FICHIER M3U POUR LES FLACS SÉPARÉS.
( cd "$ALBUMNAME"/FLACS
echo '#EXTM3U'
for file in *.flac; do
echo '#EXTINF:0,'"$file"
echo "$file"
done ) >> "$ALBUMNAME/FLACS/$ALBUMNAME.m3u"
## CRÉER UN FICHIER M3U POUR LES MP3s SÉPARÉS.
( cd "$ALBUMNAME"/MP3S
echo '#EXTM3U'
for file in *.mp3; do
echo '#EXTINF:0,'"$file"
echo "$file"
done ) >> "$ALBUMNAME/MP3S/$ALBUMNAME.m3u"
Artist detected as: Haddaway - What Is Love
Is this correct? (y/n) y
Cdrdao version 1.2.4 - (C) Andreas Mueller <andreas@daneb.de>
/dev/sr0: PLEXTOR DVDR PX-880SA Rev: 1.12
Using driver: Generic SCSI-3/MMC - Version 2.0 (options 0x0000)
Reading toc and track data...
Track Mode Flags Start Length
------------------------------------------------------------
1 AUDIO 0 00:00:32( 32) 04:31:03( 20328)
2 AUDIO 0 04:31:35( 20360) 04:36:32( 20732)
Leadout AUDIO 0 09:07:67( 41092)
PQ sub-channel reading (audio track) is supported, data format is BCD.
Raw P-W sub-channel reading (audio track) is supported.
Cooked R-W sub-channel reading (audio track) is supported.
Copying audio tracks 1-2: start 00:00:00, length 09:07:67 to "Haddaway - What Is Love/BIN_TOC/Haddaway - What Is Love.bin"...
Track 1...
Found ISRC code.
Track 2...
Found pre-gap: 00:00:26
Found ISRC code.
Found 1074 Q sub-channels with CRC errors.
Found disk catalogue number.
CDDB: Connecting to http://gnudb.gnudb.org:80/~cddb/cddb.cgi ...
CDDB: Ok.
Reading CDDB record for: 0e022302-rock-Haddaway / What Is Love
CDDB: Connecting to http://gnudb.gnudb.org:80/~cddb/cddb.cgi ...
CDDB: Ok.
CD-TEXT data was added to toc-file.
Reading of toc and track data finished successfully.
188766+1 enregistrements lus
188766+1 enregistrements écrits
96648384 octets (97 MB, 92 MiB) copiés, 0,589776 s, 164 MB/s
flac 1.3.3
Copyright (C) 2000-2009 Josh Coalson, 2011-2016 Xiph.Org Foundation
flac comes with ABSOLUTELY NO WARRANTY. This is free software, and you are
welcome to redistribute it under certain conditions. Type `flac' for details.
Haddaway - What Is Love.bin: wrote 68901032 bytes, ratio=0,713
Splitting [Haddaway - What Is Love/Haddaway - What Is Love.flac] (9:07.67) --> [Haddaway - What Is Love/FLACS/split-track01.flac] (4:31.35) : 100% OK
Splitting [Haddaway - What Is Love/Haddaway - What Is Love.flac] (9:07.67) --> [Haddaway - What Is Love/FLACS/split-track02.flac] (4:36.32) : 100% OK
Splitting [Haddaway - What Is Love/Haddaway - What Is Love.flac] (9:07.67) --> [Haddaway - What Is Love/MP3S/split-track01.mp3] (4:31.35) : 100% OK
Splitting [Haddaway - What Is Love/Haddaway - What Is Love.flac] (9:07.67) --> [Haddaway - What Is Love/MP3S/split-track02.mp3] (4:36.32) : 100% OK
Dernière modification par Anonyme (07-07-2020 08:00:11)