logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#26 07-11-2020 20:15:59

Anonyme
Invité

Re : Streamripper (play/record + programmation) wav + cue + Titres.txt

Maintenant, je vais voir pour  une option de split et nommage de chaque morceau. (je ne parle pas de tags vu qu'on est sur du WAV)

#27 08-11-2020 19:11:31

Anonyme
Invité

Re : Streamripper (play/record + programmation) wav + cue + Titres.txt

A tester. smile
on se rapproche de ce que fait Streamrripper. Les fichiers séparés sont pas mal. (ils sont fadés en ouverture et fermeture)


#!/bin/bash

#### Help
# https://stackoverflow.com/questions/23577516/how-to-replace-all-matches-with-an-incrementing-number-in-bash
# https://unix.stackexchange.com/questions/23545/insert-a-new-line-after-every-n-lines

# How can I add lines to document every four lines?
# https://unix.stackexchange.com/questions/474172/how-can-i-add-lines-to-document-every-four-lines


#### Radios.


echo "Mes radios:"
echo -e "\e[3;32m1. \033[m \e[3;94mOldies_but_goldies\033[m"
echo -e "\e[3;32m2. \033[m \e[3;94mRadio_Italo4You\033[m"
echo -e "\e[3;32m3. \033[m \e[3;94mRadio_BOB\033[m"
echo -e "\e[3;32m4. \033[m \e[3;94mWitches_Radio\033[m"
echo

echo -n "Entrer votre choix, 0 pour quitter: "
read  choice
echo

if [[ $choice == 0 ]]; then
    echo "OK, see you!"
    exit 1
fi


if [[ $choice == "" ]]; then
    echo "Invalid input..."
    echo "Quit"
    exit 1
fi

if [[ $choice == 1 ]]; then
stream=http://orion.shoutca.st:8248/stream
folder=Oldies_but_goldies

fi

if [[ $choice == 2 ]]; then
stream=http://s0.radiohost.pl:8018/stream
folder=Radio_Italo4You

fi

if [[ $choice == 3 ]]; then
stream=http://bob.hoerradar.de/radiobob-acdc-mp3-mq
folder=Radio_BOB

fi

if [[ $choice == 4 ]]; then
stream=http://188.165.215.158:9181/listen.pls?sid=1
folder=Witches_Radio

fi

if [[ $choice != 0 || $choice != ""  ]]; then
mkdir -p "$folder/$(date +%d-%m-%y) à $(date +%H:%M:%S)"


cd "$folder/$(date +%d-%m-%y) à $(date +%H:%M:%S)" || exit
mpv $stream >/dev/null 2>&1 | \
streamripper $stream -a -A -s \
                  --codeset-filesys=UTF-8 \
                  --codeset-id3=ISO-8859-15 \
                  --codeset-metadata=ISO-8859-15 \
                  --codeset-relay=ISO-8859-15 \
                  -u FreeAmp/2.x

filename_cue=$(find . -type f -name "*.cue" | xargs --null basename)
filename=$(find . -type f \( -name "*.mp3" -o -name "*.ogg" -o -name "*.flac" \) -print0 | xargs --null basename)
tr -d '\0' < "$filename_cue" > data.cue
sed -i -e '1 s/^.*$/FILE "data.wav" WAVE/' data.cue
rm -f "$filename_cue"
ffmpeg -i "$filename" -acodec pcm_s16le -ar 44100 data.wav
rm -f "$filename"


grep -e 'TITLE' -e 'PERFORMER' data.cue | \
                   awk '{for(x=1;x<=NF;x++)if($x~/TITLE/){sub(/TITLE/,++i)}}1' | \
                   sed '0~2G' \
                   >> "Titres.txt"

#### Pour le fondu en ouverture et fermeture sur le single wave.
times=()
_t=$(ffmpeg -i data.wav 2>&1 | awk '/^  Duration/ { split($2, A, ":"); split(A[3], B, "."); print 3600*A[1] + 60*A[2] + B[1] - 5 }')

times+=("$_t")

echo "${times[@]}" | sed 's/ /+/g' | bc

ffmpeg -i data.wav \
          -acodec pcm_s16le -ar 44100 \
          -af "afade=t=in:ss=0:d=1,afade=t=out:st=${times[*]} :d=4" \
          data-fade.wav
rm -f data.wav  
mv data-fade.wav data.wav


fi


count_titles_in_cue=$(grep -c 'TITLE' data.cue)

if [[ $count_titles_in_cue -gt 1 ]]; then
ffmpeg -i data.wav -acodec flac -sample_fmt s16 -ar 44100 data.flac
mkdir -p FLACS
cuebreakpoints data.cue | shnsplit -f data.cue -d FLACS  data.flac -o "cust ext=flac flac -V --fast -o %f -"
cuetag.sh data.cue FLACS/split-track*.flac

rm -f data.flac

cd FLACS || exit
for i in split-track*; do

    title=$(metaflac --show-tag=TITLE "$i" | sed -e 's/TITLE=//' | sed -e 's/\//-/g')
    album=$(metaflac --show-tag=ALBUM "$i" | sed -e 's/ALBUM=//' | sed -e 's/\//-/g')
    artist=$(metaflac --show-tag=ARTIST "$i" | sed -e 's/ARTIST=//' | sed -e 's/\//-/g')
        track=$(metaflac --show-tag=TRACKNUMBER "$i" | sed -e 's/TRACKNUMBER=//' | sed -e 's/\//-/g')
       
mv "$i" "$track - $title.flac"

echo ""
echo "Le fichier "$i" a bien été renommé avec son numéro, ainsi que son titre:"
echo -e "\e[3;94m$track - $title.flac\033[m"
echo ""


icomplete=$(ffmpeg -i "$track - $title.flac" 2>&1 | awk '/^  Duration/ { split($2, A, ":"); split(A[3], B, "."); print 3600*A[1] + 60*A[2] + B[1]}')
if [[ "$icomplete" -lt 30 ]]; then
rm -f  "$track - $title.flac"
echo "Le titre $track - $title n'avait pas une durée suffisante, il a été supprimé."
sleep 2

else

echo "Le titre $track - $title est d'une longueur suffisante."
sleep 2
times_split_files=()
_ts=$(ffmpeg -i "$track - $title.flac" 2>&1 | awk '/^  Duration/ { split($2, A, ":"); split(A[3], B, "."); print 3600*A[1] + 60*A[2] + B[1] - 10 }')
times_split_files+=("$_ts")
echo "${times_split_files[@]}" | sed 's/ /+/g' | bc
ffmpeg -guess_layout_max 0 -i "$track - $title.flac" -acodec flac -sample_fmt s16 -ar 44100 -af "afade=t=in:ss=0:d=8,afade=t=out:st=${times_split_files[*]} :d=8" "FADE_$track - $title.flac"
rm -f "$track - $title.flac"
mv "FADE_$track - $title.flac" "$track - $title.flac"
fi


done

else
echo "Il n'y a rien à splitter"

fi
 

Dernière modification par Anonyme (08-11-2020 19:14:07)

#28 09-11-2020 14:57:47

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : Streamripper (play/record + programmation) wav + cue + Titres.txt

Hello
De mon coté j'ai résolu le problème pour mon lecteur de salon
il accepte les playlists .m3u
les playlists généré avec vlc ne passe pas
il me faut une liste qui reflète exactement le nom de fichier
du coup je créé une liste avec ls

ls -trN > playlist.m3u


-t     sort by modification time, newest first
-r, --reverse   reverse order while sorting
-N, --literal   print entry names without quoting
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

concernant le script au final rien a changé
juste un dossier FLACS qui est vide

Mes radios:
1.  Oldies_but_goldies
2.  Radio_Italo4You
3.  Radio_BOB
4.  Witches_Radio

Entrer votre choix, 0 pour quitter: 1

Connecting...
stream: DI Radio Digital Impulse - Oldies but goldies
server name: SHOUTcast/
declared bitrate: 320
meta interval: 8192

[skipping...   ] Sam The Sham & The Pharaohs - Lil' red riding hood [  1,45M]
[ripping...    ] Larry Verne - Mr. Custer [FWo] [  6,79M]
[ripping...    ] Dinah Washington - Mad about the boy [FLh] [  6,49M]
[ripping...    ] Jeff Beck - Hi Ho Silver Lining [FSQ] [  6,47M]
^Cipping...    ] Engelbert Humperdinck - Release Me [FNK] [  778kb]
shutting down
bye..
ffmpeg version 4.1.5 Copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 8 (Debian 8.3.0-6)
  configuration: --disable-decoder=amrnb --disable-decoder=libopenjpeg --disable-libopencv --disable-outdev=sdl2 --disable-podpages --disable-sndio --disable-stripping --enable-libaom --enable-avfilter --enable-avresample --enable-gcrypt --disable-gnutls --enable-openssl --enable-gpl --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libfdk-aac --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libilbc --enable-libkvazaar --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx265 --enable-libzimg --enable-libxvid --enable-libzvbi --enable-nonfree --enable-opencl --enable-opengl --enable-postproc --enable-pthreads --enable-shared --enable-version3 --enable-libwebp --incdir=/usr/include/x86_64-linux-gnu --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --toolchain=hardened --enable-frei0r --enable-chromaprint --enable-libx264 --enable-libiec61883 --enable-libdc1394 --enable-vaapi --enable-libmfx --enable-libvmaf --disable-altivec --shlibdir=/usr/lib/x86_64-linux-gnu
  libavutil      56. 22.100 / 56. 22.100
  libavcodec     58. 35.100 / 58. 35.100
  libavformat    58. 20.100 / 58. 20.100
  libavdevice    58.  5.100 / 58.  5.100
  libavfilter     7. 40.101 /  7. 40.101
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  3.100 /  5.  3.100
  libswresample   3.  3.100 /  3.  3.100
  libpostproc    55.  3.100 / 55.  3.100
[mp3 @ 0x5636a2d61dc0] Estimating duration from bitrate, this may be inaccurate
Input #0, mp3, from 'sr_program_2020_11_09_14_43_33.mp3':
  Duration: 00:09:53.10, start: 0.000000, bitrate: 320 kb/s
    Stream #0:0: Audio: mp3, 44100 Hz, stereo, fltp, 320 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (mp3 (mp3float) -> pcm_s16le (native))
Press [q] to stop, [?] for help
Output #0, wav, to 'data.wav':
  Metadata:
    ISFT            : Lavf58.20.100
    Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, stereo, s16, 1411 kb/s
    Metadata:
      encoder         : Lavc58.35.100 pcm_s16le
size=  102173kB time=00:09:53.11 bitrate=1411.2kbits/s speed= 336x    
video:0kB audio:102172kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000075%
588
ffmpeg version 4.1.5 Copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 8 (Debian 8.3.0-6)
  configuration: --disable-decoder=amrnb --disable-decoder=libopenjpeg --disable-libopencv --disable-outdev=sdl2 --disable-podpages --disable-sndio --disable-stripping --enable-libaom --enable-avfilter --enable-avresample --enable-gcrypt --disable-gnutls --enable-openssl --enable-gpl --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libfdk-aac --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libilbc --enable-libkvazaar --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx265 --enable-libzimg --enable-libxvid --enable-libzvbi --enable-nonfree --enable-opencl --enable-opengl --enable-postproc --enable-pthreads --enable-shared --enable-version3 --enable-libwebp --incdir=/usr/include/x86_64-linux-gnu --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --toolchain=hardened --enable-frei0r --enable-chromaprint --enable-libx264 --enable-libiec61883 --enable-libdc1394 --enable-vaapi --enable-libmfx --enable-libvmaf --disable-altivec --shlibdir=/usr/lib/x86_64-linux-gnu
  libavutil      56. 22.100 / 56. 22.100
  libavcodec     58. 35.100 / 58. 35.100
  libavformat    58. 20.100 / 58. 20.100
  libavdevice    58.  5.100 / 58.  5.100
  libavfilter     7. 40.101 /  7. 40.101
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  3.100 /  5.  3.100
  libswresample   3.  3.100 /  3.  3.100
  libpostproc    55.  3.100 / 55.  3.100
Guessed Channel Layout for Input Stream #0.0 : stereo
Input #0, wav, from 'data.wav':
  Metadata:
    encoder         : Lavf58.20.100
  Duration: 00:09:53.11, bitrate: 1411 kb/s
    Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, stereo, s16, 1411 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (pcm_s16le (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
Output #0, wav, to 'data-fade.wav':
  Metadata:
    ISFT            : Lavf58.20.100
    Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, stereo, s16, 1411 kb/s
    Metadata:
      encoder         : Lavc58.35.100 pcm_s16le
size=  102173kB time=00:09:53.11 bitrate=1411.2kbits/s speed= 925x    
video:0kB audio:102172kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000075%
ffmpeg version 4.1.5 Copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 8 (Debian 8.3.0-6)
  configuration: --disable-decoder=amrnb --disable-decoder=libopenjpeg --disable-libopencv --disable-outdev=sdl2 --disable-podpages --disable-sndio --disable-stripping --enable-libaom --enable-avfilter --enable-avresample --enable-gcrypt --disable-gnutls --enable-openssl --enable-gpl --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libfdk-aac --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libilbc --enable-libkvazaar --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx265 --enable-libzimg --enable-libxvid --enable-libzvbi --enable-nonfree --enable-opencl --enable-opengl --enable-postproc --enable-pthreads --enable-shared --enable-version3 --enable-libwebp --incdir=/usr/include/x86_64-linux-gnu --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --toolchain=hardened --enable-frei0r --enable-chromaprint --enable-libx264 --enable-libiec61883 --enable-libdc1394 --enable-vaapi --enable-libmfx --enable-libvmaf --disable-altivec --shlibdir=/usr/lib/x86_64-linux-gnu
  libavutil      56. 22.100 / 56. 22.100
  libavcodec     58. 35.100 / 58. 35.100
  libavformat    58. 20.100 / 58. 20.100
  libavdevice    58.  5.100 / 58.  5.100
  libavfilter     7. 40.101 /  7. 40.101
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  3.100 /  5.  3.100
  libswresample   3.  3.100 /  3.  3.100
  libpostproc    55.  3.100 / 55.  3.100
Guessed Channel Layout for Input Stream #0.0 : stereo
Input #0, wav, from 'data.wav':
  Metadata:
    encoder         : Lavf58.20.100
  Duration: 00:09:53.11, bitrate: 1411 kb/s
    Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, stereo, s16, 1411 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (pcm_s16le (native) -> flac (native))
Press [q] to stop, [?] for help
Output #0, flac, to 'data.flac':
  Metadata:
    encoder         : Lavf58.20.100
    Stream #0:0: Audio: flac, 44100 Hz, stereo, s16, 128 kb/s
    Metadata:
      encoder         : Lavc58.35.100 flac
size=   58011kB time=00:09:53.11 bitrate= 801.2kbits/s speed= 227x    
video:0kB audio:58003kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.013954%
./Anonyme.sh: ligne 113: shnsplit : commande introuvable
./Anonyme.sh: ligne 113: cuebreakpoints : commande introuvable
./Anonyme.sh: ligne 114: cuetag.sh : commande introuvable
split-track*: ERROR: reading metadata, status = "FLAC__METADATA_CHAIN_STATUS_ERROR_OPENING_FILE"

The FLAC file could not be opened.  Most likely the file does not exist
or is not readable.
split-track*: ERROR: reading metadata, status = "FLAC__METADATA_CHAIN_STATUS_ERROR_OPENING_FILE"

The FLAC file could not be opened.  Most likely the file does not exist
or is not readable.
split-track*: ERROR: reading metadata, status = "FLAC__METADATA_CHAIN_STATUS_ERROR_OPENING_FILE"

The FLAC file could not be opened.  Most likely the file does not exist
or is not readable.
split-track*: ERROR: reading metadata, status = "FLAC__METADATA_CHAIN_STATUS_ERROR_OPENING_FILE"

The FLAC file could not be opened.  Most likely the file does not exist
or is not readable.
mv: impossible d'évaluer 'split-track*': Aucun fichier ou dossier de ce type

Le fichier split-track* a bien été renommé avec son numéro, ainsi que son titre:
 - .flac

Le titre  -  n'avait pas une durée suffisante, il a été supprimé.


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#29 09-11-2020 16:42:39

Anonyme
Invité

Re : Streamripper (play/record + programmation) wav + cue + Titres.txt

@Croutons

Oups, désolé. Il te faut les paquets  cuetag, cuetools et shntool

et remplacer dans le script,  cuetag.sh par cuetag wink

et pour le m3u, je le mettrai plus tard :



( cd FLACS || exit

  echo '#EXTM3U'
for file in *.flac; do
  echo '#EXTINF:0,'"$file"
  echo "$file"
done ) >> "playlist.m3u"
 

Dernière modification par Anonyme (09-11-2020 16:50:16)

#30 11-11-2020 09:43:40

Anonyme
Invité

Re : Streamripper (play/record + programmation) wav + cue + Titres.txt

@Croutons
Fais moi un retour
wink

Script à ce jour avec explications commentés et pas mal de conditions utiles : ( la  création du playlist arrive )



#!/bin/bash

#### Help
# https://stackoverflow.com/questions/23577516/how-to-replace-all-matches-with-an-incrementing-number-in-bash
# https://unix.stackexchange.com/questions/23545/insert-a-new-line-after-every-n-lines

# How can I add lines to document every four lines?
# https://unix.stackexchange.com/questions/474172/how-can-i-add-lines-to-document-every-four-lines

jour=$(date +%d-%m-%Y)
heure=$(date +%H:%M:%S)
time="$jour à $heure"

#### Radios.


echo "Mes radios:"
echo -e "\e[3;32m1. \033[m \e[3;94mOldies_but_goldies\033[m"
echo -e "\e[3;32m2. \033[m \e[3;94mRadio_Italo4You\033[m"
echo -e "\e[3;32m3. \033[m \e[3;94mRadio_BOB\033[m"
echo -e "\e[3;32m4. \033[m \e[3;94mWitches_Radio\033[m"
echo

echo -n "Entrer votre choix, 0 pour quitter: "
read -r  choice
echo

if [[ "$choice" == 0 ]]; then
    echo "OK, see you!"
    exit 1

fi


if [[ "$choice" == "" ]]; then
    echo "Invalid input..."
    echo "Quit"
    exit 1
fi

if [[ "$choice" == 1 ]]; then
stream="http://orion.shoutca.st:8248/stream"
folder=Oldies_but_goldies

fi

if [[ "$choice" == 2 ]]; then
stream="http://s0.radiohost.pl:8018/stream"
folder=Radio_Italo4You

fi

if [[ "$choice" == 3 ]]; then
stream="http://bob.hoerradar.de/radiobob-acdc-mp3-mq"
folder=Radio_BOB

fi

if [[ "$choice" == 4 ]]; then
stream="http://188.165.215.158:9181/listen.pls?sid=1"
folder=Witches_Radio

fi

if [[ "$choice" != 0 || "$choice" != "" ]]; then
mkdir -p "$folder/$time"


### ici, la partie lecture, capture.
mpv "$stream" >/dev/null 2>&1 | \
streamripper "$stream" -a -A -s -d "$folder/$time"  \
                  --codeset-filesys=UTF-8 \
                  --codeset-id3=UTF-8 \
                  --codeset-metadata=UTF-8 \
                  --codeset-relay=UTF-8 \
                  -u FreeAmp/2.x

filename_cue=$(find "$folder/$time" -type f -name "*.cue" | xargs --null basename)
filename=$(find "$folder/$time" -type f \( -name "*.mp3" -o -name "*.ogg" -o -name "*.flac" \) -print0 | xargs --null basename)
tr -d '\0' < "$folder/$time/$filename_cue" > "$folder/$time/data.cue"
sed -i -e '1 s/^.*$/FILE "data.wav" WAVE/' "$folder/$time/data.cue"
rm -f "$folder/$time/$filename_cue"
ffmpeg -i "$folder/$time/$filename" -acodec pcm_s16le -ar 44100 "$folder/$time/data.wav"
rm -f "$folder/$time/$filename"

### on sort un listing des titres dans un fichier texte.
grep -e 'TITLE' -e 'PERFORMER' "$folder/$time/data.cue" | \
                   awk '{for(x=1;x<=NF;x++)if($x~/TITLE/){sub(/TITLE/,++i)}}1' | \
                   sed '0~2G' \
                   >> "$folder/$time/Titres.txt"

fi


#### Pour le fondu en ouverture et fermeture sur le single wave.
data_wav_duration=$(ffmpeg -i "$folder/$time/data.wav" 2>&1 | awk '/^  Duration/ { split($2, A, ":"); split(A[3], B, "."); print 3600*A[1] + 60*A[2] + B[1]}')
times=()
_t=$(ffmpeg -i "$folder/$time/data.wav" 2>&1 | awk '/^  Duration/ { split($2, A, ":"); split(A[3], B, "."); print 3600*A[1] + 60*A[2] + B[1] - 5 }')

times+=("$_t")

echo "${times[@]}" | sed 's/ /+/g' | bc

if [[ "$data_wav_duration" -gt 15 ]]; then

ffmpeg -i "$folder/$time/data.wav" \
          -acodec pcm_s16le -ar 44100 \
          -af "afade=t=in:ss=0:d=3,afade=t=out:st=${times[*]} :d=3" \
          "$folder/$time/data-fade.wav"
rm -f "$folder/$time/data.wav"  
mv "$folder/$time/data-fade.wav" "$folder/$time/data.wav"


fi


### durée minimum exploitable pour le fichier wav. ( prise en compte du fade ffmpeg)
if [[ "$data_wav_duration" -lt 15 ]]; then
rm -rf "$folder/$time"
exit


fi


### si plus d'un titre dans le cuesheet, on passe le single wav en single flac.
count_titles_in_cue=$(grep -c 'TITLE' "$folder/$time/data.cue")
if [[ $count_titles_in_cue -gt 1 ]]; then
ffmpeg -i "$folder/$time/data.wav" -acodec flac -sample_fmt s16 -ar 44100 "$folder/$time/data.flac"


fi

### un seul titre présent dans le cue.
if [[ $count_titles_in_cue -eq 1 ]]; then
echo "Il n'y a rien à splitter"


fi


### condition : il faut que le single flac soit présent pour la suite.
### on sépare les titres du single flac.
### on récupère les titres dans le cue pour taguer chaque split-track*.flac .
if [ -e  "$folder/$time/data.flac" ]
then
     echo "data.flac - Found"

mkdir -p "$folder/$time/FLACS"
cuebreakpoints "$folder/$time/data.cue" | \
           shnsplit -f "$folder/$time/data.cue" \
           -d "$folder/$time/FLACS" "$folder/$time/data.flac" \
           -o "cust ext=flac flac -V --fast -o %f -"

(cd "$folder/$time" || exit
cuetag.sh data.cue FLACS/split-track*.flac)
rm -f "$folder/$time/data.flac"

else
   echo "data.flac - Not found"


fi


### condition : vérification de la présence des split-track*.flac
files_flacs=$(find "$folder/$time" -type f -name "*.flac" | wc -l)
if [ "$files_flacs" != 0 ]; then

###  début deboucle
### on récupère les infos dans les tags pour chaque split-track*.flac
for i in "$folder/$time/FLACS"/split-track*; do

title=$(metaflac --show-tag=TITLE "$i" | sed -e 's/TITLE=//' | sed -e 's/\//-/g')
#album=$(metaflac --show-tag=ALBUM "$i" | sed -e 's/ALBUM=//' | sed -e 's/\//-/g')
artist=$(metaflac --show-tag=ARTIST "$i" | sed -e 's/ARTIST=//' | sed -e 's/\//-/g')
track=$(metaflac --show-tag=TRACKNUMBER "$i" | sed -e 's/TRACKNUMBER=//' | sed -e 's/\//-/g')

### on se sert des ces infos pour renommer chaque split-track*.flac
mv "$i" "$folder/$time/FLACS/$track - $artist - $title.flac"

echo ""
echo "Le fichier $i a bien été renommé avec son numéro, ainsi que son titre:"
echo -e "\e[3;94m$track - $artist - $title.flac\033[m"
echo ""


### prendre l'info sur la durée du titre. (en seconde)
duration=$(ffmpeg -i "$folder/$time/FLACS/$track - $artist - $title.flac" 2>&1 | \
            awk '/^  Duration/ { split($2, A, ":"); split(A[3], B, "."); print 3600*A[1] + 60*A[2] + B[1]}')


### condition : si le titre fait moins de 30 secondes, on le supprime.
if [[ "$duration" -lt 30 ]]; then
rm -f  "$folder/$time/FLACS/$track - $artist - $title.flac"
echo "Le titre $track - $artist - $title n'avait pas une durée suffisante, il a été supprimé."
sleep 2


fi

### condition : le titre fait plus de 30 secondes, on le garde.
if [[ "$duration" -gt 30 ]]; then
echo "Le titre $track - $artist - $title est d'une longueur suffisante."
sleep 2


### ici, on fait un fade in/out sur chaque titre pour la finition.
times_split_files=()
_ts=$(ffmpeg -i "$folder/$time/FLACS/$track - $artist - $title.flac" 2>&1 | \
             awk '/^  Duration/ { split($2, A, ":"); split(A[3], B, "."); print 3600*A[1] + 60*A[2] + B[1] - 10 }')
times_split_files+=("$_ts")
echo "${times_split_files[@]}" | sed 's/ /+/g' | bc

ffmpeg -guess_layout_max 0 -i "$folder/$time/FLACS/$track - $artist - $title.flac" \
            -acodec flac -sample_fmt s16 -ar 44100 \
            -af "afade=t=in:ss=0:d=8,afade=t=out:st=${times_split_files[*]} :d=8" \
            "$folder/$time/FLACS/FADE_$track - $artist - $title.flac"

rm -f "$folder/$time/FLACS/$track - $artist - $title.flac"
mv "$folder/$time/FLACS/FADE_$track - $artist - $title.flac" "$folder/$time/FLACS/$track - $artist - $title.flac"


fi


done


fi

 

Dernière modification par Anonyme (11-11-2020 09:49:51)

#31 11-11-2020 09:52:40

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : Streamripper (play/record + programmation) wav + cue + Titres.txt

ok faut que je test çà
mais je suis pas sur que créer de faux fichier flac soit top
entre 10 et 30 Mo suivant le morceau comparé au 1,5 Mo du fichier d'origine
On gagne rien en qualité , y'a qu'avoir avec un analyseur de spectre , logique vu que la source est la meme

-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#32 11-11-2020 10:00:01

Anonyme
Invité

Re : Streamripper (play/record + programmation) wav + cue + Titres.txt

Croutons a écrit :

ok faut que je test çà
mais je suis pas sur que créer de faux fichier flac soit top
entre 10 et 30 Mo suivant le morceau comparé au 1,5 Mo du fichier d'origine
On gagne rien en qualité , y'a qu'avoir avec un analyseur de spectre , logique vu que la source est la meme



Non, le passage n'est pas fait pour gagner en qualité. ( mais on ne perd rien non plus )
C'est juste pour utiliser metaflac pour pouvoir renommer les split-track*.flac wink

Pour la grosseur du flac, je ne suis pas penché dessus. pour le fad, je suis obligé de passer en encodage  pour que le filtre foctionne ( -acodec copy impossible ).
Mais on peut très bien réduire la taille avec le codec flac sans perte.

et je suis tout à fait d'accord avec toi smile

Dernière modification par Anonyme (11-11-2020 10:11:37)

#33 11-11-2020 10:14:38

Anonyme
Invité

Re : Streamripper (play/record + programmation) wav + cue + Titres.txt

C'est bon, je vais pouvoir intégrer le m3u pour les flacs séparés :

#EXTM3U
#EXTINF:0,01 - Leo Sayer - When I Need You [FWB].flac
01 - Leo Sayer - When I Need You [FWB].flac
#EXTINF:0,02 - The Walker Brothers - 22 - The Walker Brothers - The Sun Ain't Gonna Shine Anymore [Ge4].flac
02 - The Walker Brothers - 22 - The Walker Brothers - The Sun Ain't Gonna Shine Anymore [Ge4].flac
#EXTINF:0,03 - The Beatles - Do You Want To Know A Secret [G6R].flac
03 - The Beatles - Do You Want To Know A Secret [G6R].flac
#EXTINF:0,04 - Percy Sledge - My Special Prayer [G13].flac
04 - Percy Sledge - My Special Prayer [G13].flac




playlist.png

smile

Dernière modification par Anonyme (11-11-2020 10:18:24)

#34 11-11-2020 13:57:55

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : Streamripper (play/record + programmation) wav + cue + Titres.txt

as tu constaté si il y avait des décalages constant sur la coupure automatique des morceaux avec streamripper
car j'ai vu qui il avait une option pour décaler

Each of my songs contain about 5 seconds of the previous song. How can I fix this?

             streamripper URL --xs_offset=5000

       Each of my songs contain about 5 seconds of the next song. How can I fix?

             streamripper URL --xs_offset=-5000

       Each of my songs contain between 5 and 10 seconds of the previous song, but it depends on the song. How can I include all of this zone within both songs, and
       edit them later?

             streamripper URL --xs_offset=7500 --xs_padding=2500:2500


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#35 11-11-2020 14:00:37

Anonyme
Invité

Re : Streamripper (play/record + programmation) wav + cue + Titres.txt

lol lol lol

pourquoi je cherche au niveau de :

meta interval: ****

à ton avis wink

#36 11-11-2020 14:01:57

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : Streamripper (play/record + programmation) wav + cue + Titres.txt

a oué c'est pas faux lol

-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#37 11-11-2020 14:54:58

Anonyme
Invité

Re : Streamripper (play/record + programmation) wav + cue + Titres.txt

@Croutons

dis-moi, si j'ai bien compris. Quand le metadata apparait pour le titre suivant, c'est là que Streamripper fait sa coupe. C'est bien ça ?
Car, j'ai fait un test en exagérant --xs_offset, et le metadata mais une plombe à venir smile

PS: en fait, c'est pour cela que j'ai fait un fade sur les titres séparés. J'ai peut-être oublié de le signaler.

Dernière modification par Anonyme (11-11-2020 15:01:02)

#38 11-11-2020 15:52:00

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : Streamripper (play/record + programmation) wav + cue + Titres.txt

ya des règles de détections de silence expliqué dans le man ça ma l'air assez complexe
faudra que je regarde si le décalage est constant mais j'ai un doute
c'est pour ça que pour l'instant je créé mes playlist par ordre croissant de la date la plus ancienne au fichier plus récent
comme ça si y'a une mauvaise coupe je m'en apercoi pas a par si je navigue entre les titres

-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#39 12-11-2020 07:33:06

Anonyme
Invité

Re : Streamripper (play/record + programmation) wav + cue + Titres.txt

Bonjour,

dans ce script, un choix  "lecture seule"  et "lecture + capture" serait mieux.

#40 12-11-2020 08:03:50

Anonyme
Invité

Re : Streamripper (play/record + programmation) wav + cue + Titres.txt

Travail en cours .....


Mes radios:
1.  Oldies_but_goldies
2.  Radio_Italo4You
3.  Radio_BOB
4.  Witches_Radio

Entrer votre choix, 0 pour quitter: 1

Play or Play/Record
p.  Play
r.  Play Record
Play(p) or Play/Rec(r), 0 for exit: p

 (+) Audio --aid=1 (mp3 2ch 44100Hz)
File tags:
 icy-title: The Ventures - Caravan [GdU]
AO: [alsa] 48000Hz stereo 2ch float
A: 00:00:48 / 00:00:54 (89%) Cache: 5.4s/316KB
File tags:
 icy-title: Sam Cooke - Twistin' The Night Away [G3x]
A: 00:01:23 / 00:01:30 (92%) Cache: 6.3s/369K
 



Reste plus que la sauvegarde de la liste d'écoute smile

Dernière modification par Anonyme (12-11-2020 08:08:16)

#41 14-11-2020 09:50:21

Anonyme-14
Invité

Re : Streamripper (play/record + programmation) wav + cue + Titres.txt

Coucou, enregistrement à une heure programmée possible ?

#42 14-11-2020 10:08:43

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : Streamripper (play/record + programmation) wav + cue + Titres.txt

Coucou, enregistrement à une heure programmée possible ?


tu veux dire inclus dans le script après la sélection de ta radio?


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#43 14-11-2020 10:10:18

Anonyme
Invité

Re : Streamripper (play/record + programmation) wav + cue + Titres.txt

@Anonyme-14

toi tu profites du confinement !!! big_smile

EDIT : j'ai rectifié le tire  smile c'était un message pour Anonyme-14.

Dernière modification par Anonyme (14-11-2020 10:42:43)

#44 14-11-2020 10:17:56

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : Streamripper (play/record + programmation) wav + cue + Titres.txt

si on veux
je suis chez mes parents à la campagne donc confinement je connais pas trop
je pourrais allez au champignons mais j'ai un peu peur de me faire tiraillé par un chasseur lol

-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#45 14-11-2020 10:25:12

Anonyme-14
Invité

Re : Streamripper (play/record + programmation) wav + cue + Titres.txt

Croutons a écrit :


tu veux dire inclus dans le script après la sélection de ta radio?



En partant de ce principe par exemple, pourquoi pas.
"enregistrer maintenant" Ok
ou "à --h--mn" jusqu'à "--h--mn" entrez l'heure de début et de fin.

#46 14-11-2020 10:36:31

Anonyme
Invité

Re : Streamripper (play/record + programmation) wav + cue + Titres.txt

Il y a le programme at, mais je ne sais pas comment le lancer :


Can't open /var/run/atd.pid to signal atd. No atd running?

#47 14-11-2020 10:40:16

Anonyme
Invité

Re : Streamripper (play/record + programmation) wav + cue + Titres.txt

Je vois bien le truc, mais c'est le problème de saisie de l'heure qui peut parait "chiant" à taper.. mais bon.

Donc le truc qu'il faut si j'ai bien compris est :

je tapes "r" en choix puis,

question : tout de suite ou différé

C'est bien ça ?

Dernière modification par Anonyme (14-11-2020 10:40:48)

#48 14-11-2020 10:52:42

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : Streamripper (play/record + programmation) wav + cue + Titres.txt

j'ai un script pour l’arrêt programmé de ffmpeg

cat durée_record.sh


#!/bin/bash
#necessite l'installation du paquet at
#script stop_ffmpeg.sh = pkill ffmpeg

zenity --warning --text="inhibé la veille automatique
quitter Redshift
luminosité au max(Ctrl++)"
--ok-label="J'ai compris" --width=250
echo "arret de l'enregistrement"
read -p "Choix 1) compte à rebour(défaut)~~~~~ Choix 2) à l'Heure :
Votre choix ?: "
temps
read -p "Avec Arret du PC ?  n)NON(défaut)~~~~~o)Oui :" stop
export temps

if  [ -z $temps ] || [ $temps -eq 1 ] #tester en premier si la variable est non nul pour éviter un message d'erreur
then
  echo "Entrer la durée d'enregistrement
  le SUFFIXE peut être « s » pour secondes(par défaut), « m » pour minutes, « h » pour heures
  exemple:2h 30m 5s
  115m"

  read -p "stop l'enregistrement (ffmpeg) dans:" duree
  sleep $duree && ./stop_ffmpeg.sh
  echo "fin sleep arret record"
else
  read -p "Arret enregistrement à (format HH:MM) :" duree
  at $duree -f stop_ffmpeg.sh
fi
 
if      [[ $stop =~ ^($|n|N) ]] #si la variable est nul $ commence par n ou N
then
  echo "FIN d'enregistrement sans shutdown "

elif  [ -z $temps ] || [ $temps -eq 1 ] && [[ $stop =~ ^(o|O) ]]
then  
        sleep 6 && /sbin/shutdown
 
elif  [[ $stop =~ ^(o|O) ]]
then
  read -p "arret enregistrement prévu à $duree
  entrer l'heure d'arret du PC: "
stop2
  /sbin/shutdown $stop2
  echo "/sbin/shutdown -c pour annuler shutdown" ;sleep 30
fi

Dernière modification par Croutons (14-11-2020 10:54:18)


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#49 14-11-2020 11:05:59

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : Streamripper (play/record + programmation) wav + cue + Titres.txt

Il y a le programme at, mais je ne sais pas comment le lancer :
Can't open /var/run/atd.pid to signal atd. No atd running?


on parle bien du paquet at que j'utilise dans mon script
apres un

apt install at


man at


at -h


c'est un peu une commande interactif
voir https://openclassrooms.com/fr/courses/4 … e-differee


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#50 15-11-2020 12:11:58

Anonyme
Invité

Re : Streamripper (play/record + programmation) wav + cue + Titres.txt

Un truc sans at qu'on pourrait adapter :

Vous pouvez essayer et me donner votre avis.
J'en ai bien chi** à adapter ce truc trouvé sur la toile tongue

En fait le principe est de saisir une date, puis par une comparaison avec la date de l'instant T, va décompter en une sorte de compte à rebours.



#!/bin/bash  

#date "+%s" -d "11/16/2020 08:41:15"
#1605512475 secondes
#date  -d @1605512475
#lun. 16 nov. 2020 08:41:15 CET

read -p "enter the date in the format  MM/DD/YYYY HH:MM:SS " replay
#date "+%s" -d "$replay"

diff=$(date "+%s" -d "$replay")

#diff=1605522135


date=$(( $diff - `date +%s`));
  while [ "$diff" -ne `date +%s` ]; do
    echo -ne "  $(date -u --date @$(($diff - `date +%s`)) +%H:%M:%S)\r";
    sleep 1
  done

echo "C'est partie !!!"
mpv http://orion.shoutca.st:8248/stream --no-resume-playback --no-save-position-on-quit

 



EDIT : Par contre j'aurais bien aimer entrer une date comme cela :

15/11/2020 au lieu de 11/15/2020 mais je n'ai pas trouvé le truc.

Dernière modification par Anonyme (15-11-2020 12:34:33)

Pied de page des forums