#1 Le 02/11/2018, à 01:35
- Le Goss
Récupérer les infos de flux webradios avec mplayer ou autre
Bonjour à tous
Je dispose de plusieurs milliers d'adresses de flux webradio du type:
http://us4.internet-radio.com:8266
http://192.95.18.39:5552
etc.
A l'aide d'un script et d'une boucle, je cherche à récupérer les informations de chaque webradio dans un fichier texte: nom de la radio, genre et débit.
J'utilise mplayer. exemple:
legoss@legoss:~$ mplayer -vo null -ao null -identify -frames 0 legoss@legoss:~$ mplayer http://us4.internet-radio.com:8266
MPlayer 1.2.1 (Debian), built with gcc-5.4.0 (C) 2000-2016 MPlayer Team
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.
Playing legoss@legoss:~$.
File not found: 'legoss@legoss:~$'
Failed to open legoss@legoss:~$.
No bind found for key 'M'.
Playing mplayer.
File not found: 'mplayer'
Failed to open mplayer.
Playing http://us4.internet-radio.com:8266.
Resolving us4.internet-radio.com for AF_INET6...
Couldn't resolve name for AF_INET6: us4.internet-radio.com
Resolving us4.internet-radio.com for AF_INET...
Connecting to server us4.internet-radio.com[198.58.98.83]: 8266...
Name : Smooth Jazz Florida
Genre : Smooth Jazz
Website: http://www.SmoothJazzFlorida.com
Public : yes
Bitrate: 128kbit/s
Cache size set to 320 KBytes
Cache fill: 0.00% (0 bytes)
No bind found for key 'l'.
Cache fill: 0.00% (0 bytes)
No bind found for key 'l'.
Cache fill: 0.00% (0 bytes)
ICY Info: StreamTitle='Herb Alpert - Windy City';
Cache fill: 15.00% (49152 bytes)
ID_AUDIO_ID=0
Audio only file format detected.
ID_FILENAME=http://us4.internet-radio.com:8266
ID_DEMUXER=audio
ID_AUDIO_FORMAT=85
ID_AUDIO_BITRATE=128000
ID_AUDIO_RATE=44100
ID_AUDIO_NCH=0
ID_START_TIME=0.00
ID_LENGTH=0.00
ID_SEEKABLE=0
ID_CHAPTERS=0
==========================================================================
Opening audio decoder: [mpg123] MPEG 1.0/2.0/2.5 layers I, II, III
AUDIO: 44100 Hz, 2 ch, s16le, 128.0 kbit/9.07% (ratio: 16000->176400)
ID_AUDIO_BITRATE=128000
ID_AUDIO_RATE=44100
ID_AUDIO_NCH=2
Selected audio codec: [mpg123] afm: mpg123 (MPEG 1.0/2.0/2.5 layers I, II, III)
==========================================================================
AO: [null] 44100Hz 2ch s16le (2 bytes per sample)
ID_AUDIO_CODEC=mpg123
Video: no video
Starting playback...
Exiting... (End of file)
ID_EXIT=EOF
legoss@legoss:~$
Les renseignements recherchés s'y trouvent:
Name : Smooth Jazz Florida
Genre : Smooth Jazz
Website: http://www.SmoothJazzFlorida.com
Public : yes
Bitrate: 128kbit/s
Mais impossible d'envoyer la sortie vers un fichier...
Mauvaise commande de mplayer? impossibilité avec mplayer?
J'ai aussi essayé avec avconv:
legoss@legoss:~$ avconv -i http://us4.internet-radio.com:8266
ffmpeg version 2.8.15-0ubuntu0.16.04.1 Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.10) 20160609
configuration: --prefix=/usr --extra-version=0ubuntu0.16.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv
WARNING: library configuration mismatch
avcodec configuration: --prefix=/usr --extra-version=0ubuntu0.16.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv --enable-version3 --disable-doc --disable-programs --disable-avdevice --disable-avfilter --disable-avformat --disable-avresample --disable-postproc --disable-swscale --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libvo_aacenc --enable-libvo_amrwbenc
libavutil 54. 31.100 / 54. 31.100
libavcodec 56. 60.100 / 56. 60.100
libavformat 56. 40.101 / 56. 40.101
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 40.101 / 5. 40.101
libavresample 2. 1. 0 / 2. 1. 0
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 2.101 / 1. 2.101
libpostproc 53. 3.100 / 53. 3.100
[mp3 @ 0x1d56400] Skipping 0 bytes of junk at 0.
Input #0, mp3, from 'http://us4.internet-radio.com:8266':
Metadata:
icy-notice1 : <BR>This stream requires <a href="http://www.winamp.com">Winamp</a><BR>
icy-notice2 : SHOUTcast DNAS/posix(linux x64) v2.5.1.724<BR>
icy-name : Smooth Jazz Florida
icy-genre : Smooth Jazz
icy-br : 128
icy-sr : 44100
icy-url : http://www.SmoothJazzFlorida.com
icy-pub : 1
StreamTitle : Michael Garvin - Call Me Mike
Duration: N/A, start: 0.000000, bitrate: 128 kb/s
Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 128 kb/s
At least one output file must be specified
legoss@legoss:~$
Les renseignements s'y trouve aussi, mais je ne peux rien en faire.
Merci pour votre aide
Cordialement
Si je pose une question sur le forum, ce n'est pas par paresse ou pour faire faire "mes devoirs"; c'est par ignorance: j'ai 51 berges. Et, par principe, je préfère être traité d'ignare que de fainéant.
Samsung i7-3630QM CPU @ 2.40GHz × 8 - 64 bits - RAM 7,7 Gio - DD 976 Go - Bodhi 6.0.0 Ubuntu 20.04
Allergique au wysiwyg; traitement à vie: Lilypond - LaTeX - txt2tags
Hors ligne
#2 Le 02/11/2018, à 11:38
- toitoinebzh
Re : Récupérer les infos de flux webradios avec mplayer ou autre
salut,
ce genre de commande devrait te plaire, cela crée un fichier avec les datas qui t'intéressent, plus qu'a faire un script pour nettoyer les infos inutiles (regex par exemple)
mplayer -vo null -ao null -frames 0 -identify http://us4.internet-radio.com:8266 >>infos.txt
source utile
https://snippets.aktagon.com/snippets/1 … r-and-Ruby
Dernière modification par toitoinebzh (Le 02/11/2018, à 11:39)
Hors ligne
#3 Le 02/11/2018, à 11:54
- Le Goss
Re : Récupérer les infos de flux webradios avec mplayer ou autre
J'avais déjà essayé.
Ça ne me traite que la première ligne de ma liste d'urls et le script s'arrête, après avoir créé un fichier de plus de 130000 lignes!!!
MPlayer 1.2.1 (Debian), built with gcc-5.4.0 (C) 2000-2016 MPlayer Team
Playing http://109.71.41.6:8123.
Resolving 109.71.41.6 for AF_INET6...
Connecting to server 109.71.41.6[109.71.41.6]: 8123...
Name : Mais Kizomba (Kizomba, Tarraxinha, Zouk, Semba)
Genre : Kizomba Tarraxinha Zouk Semba
Website: http://www.maiskizomba.com
Public : yes
Bitrate: 128kbit/s
Cache size set to 320 KBytes
Cache fill: 0.00% (0 bytes)
Cache fill: 0.00% (0 bytes)
Cache fill: 0.00% (0 bytes)
Cache fill: 0.00% (0 bytes)
Cache fill: 0.00% (0 bytes)
Cache fill: 0.00% (0 bytes)
Cache fill: 0.00% (0 bytes)
...
Cache fill: 15.00% (49152 bytes)
Cache fill: 15.00% (49152 bytes)
Cache fill: 15.00% (49152 bytes)
Cache fill: 15.00% (49152 bytes)
ID_AUDIO_ID=0
Audio only file format detected.
ID_FILENAME=http://109.71.41.6:8123
ID_DEMUXER=audio
ID_AUDIO_FORMAT=85
ID_AUDIO_BITRATE=128000
ID_AUDIO_RATE=44100
ID_AUDIO_NCH=0
ID_START_TIME=0.00
ID_LENGTH=0.00
ID_SEEKABLE=0
ID_CHAPTERS=0
==========================================================================
Opening audio decoder: [mpg123] MPEG 1.0/2.0/2.5 layers I, II, III
AUDIO: 44100 Hz, 2 ch, s16le, 128.0 kbit/9.07% (ratio: 16000->176400)
ID_AUDIO_BITRATE=128000
ID_AUDIO_RATE=44100
ID_AUDIO_NCH=2
Selected audio codec: [mpg123] afm: mpg123 (MPEG 1.0/2.0/2.5 layers I, II, III)
==========================================================================
AO: [null] 44100Hz 2ch s16le (2 bytes per sample)
ID_AUDIO_CODEC=mpg123
Video: no video
Starting playback...
Exiting... (End of file)
ID_EXIT=EOF
Pour l'instant, je n'ai trouvé que ceci:
mplayer -slave -playlist $line > web & sleep 1 && killall mplayer
C'est plus du bricolage qu'autre chose.
Et ça oblige à prendre une valeur suffisamment importante pour sleep en cas de débit de connexion faiblard. Pas le top donc.
Si je pose une question sur le forum, ce n'est pas par paresse ou pour faire faire "mes devoirs"; c'est par ignorance: j'ai 51 berges. Et, par principe, je préfère être traité d'ignare que de fainéant.
Samsung i7-3630QM CPU @ 2.40GHz × 8 - 64 bits - RAM 7,7 Gio - DD 976 Go - Bodhi 6.0.0 Ubuntu 20.04
Allergique au wysiwyg; traitement à vie: Lilypond - LaTeX - txt2tags
Hors ligne
#4 Le 02/11/2018, à 14:51
- Le Goss
Re : Récupérer les infos de flux webradios avec mplayer ou autre
Et encore, le script s'arrête si l'url traitée n'aboutit à rien. Et je ne comprends pas pourquoi...
Si dessous mon script:
#!/bin/bash
> result
while read line; do
# mplayer -vo null -ao null -frames 0 -identify $line > infos
mplayer -slave -playlist $line > infos & sleep 1 && killall mplayer
nom=$(cat infos | grep "^Name" | cut -d':' -f2 | sed "s/^ *//g" | sed "s/,//g" | sed "s/ */ /g" ) # | sed "s/((*//g" | sed "s/))*//g"
genre=$(cat infos | grep "^Genre" | cut -d':' -f2 | sed "s/^ *//g" | sed "s/,//g" | sed "s/ */ /g")
bitrate=$(cat infos | grep "^Bitrate" | cut -d':' -f2 | sed "s/ //g")
if [ -n "$nom" ]; then
echo "$nom ($bitrate) $genre;$line" >> result
fi
done < urls
Extrait du fichier urls:
http://192.96.205.59:7610
http://209.236.126.18:8002
http://217.21.199.146:8012
http://64.95.243.43:8002
http://8.38.78.173:8210
http://sj64.hnux.com
http://stream14.shoutcastsolutions.com:8057
http://uk3.internet-radio.com:11168/live.m3u
http://uk3.internet-radio.com:8021
http://uk3.internet-radio.com:8130
http://uk3.internet-radio.com:8405/live.m3u
http://uk5.internet-radio.com:8174
http://uk6.internet-radio.com:8179
http://us2.internet-radio.com:8362
http://us2.internet-radio.com:8443
http://us3.internet-radio.com:8342
http://us4.internet-radio.com:8193
http://us4.internet-radio.com:8266
http://us5.internet-radio.com:8110
http://www.partyviberadio.com:8020
http://144.217.253.136:8539
http://176.9.43.216:8006
http://184.154.202.243:8053
http://184.75.223.178:8155
http://192.211.51.158:5014
http://192.235.87.113:10222
http://192.99.17.12:6031
http://199.180.72.2:8015
Si je pose une question sur le forum, ce n'est pas par paresse ou pour faire faire "mes devoirs"; c'est par ignorance: j'ai 51 berges. Et, par principe, je préfère être traité d'ignare que de fainéant.
Samsung i7-3630QM CPU @ 2.40GHz × 8 - 64 bits - RAM 7,7 Gio - DD 976 Go - Bodhi 6.0.0 Ubuntu 20.04
Allergique au wysiwyg; traitement à vie: Lilypond - LaTeX - txt2tags
Hors ligne
#5 Le 02/11/2018, à 19:52
- toitoinebzh
Re : Récupérer les infos de flux webradios avec mplayer ou autre
as tu essayé ma ligne de commande ?
tu verras qu'il n'y a pas 13000 lignes
Hors ligne
#6 Le 03/11/2018, à 12:40
- Le Goss
Re : Récupérer les infos de flux webradios avec mplayer ou autre
J'ai testé ta ligne. Toujours le même résultat.
Si je pose une question sur le forum, ce n'est pas par paresse ou pour faire faire "mes devoirs"; c'est par ignorance: j'ai 51 berges. Et, par principe, je préfère être traité d'ignare que de fainéant.
Samsung i7-3630QM CPU @ 2.40GHz × 8 - 64 bits - RAM 7,7 Gio - DD 976 Go - Bodhi 6.0.0 Ubuntu 20.04
Allergique au wysiwyg; traitement à vie: Lilypond - LaTeX - txt2tags
Hors ligne
#7 Le 03/11/2018, à 23:22
- Le Goss
Re : Récupérer les infos de flux webradios avec mplayer ou autre
Je suis parvenu à un résultat correct avec cvlc.
Voici le script complet, avec en prime la recherche des urls par style musical à partir du site https://www.internet-radio.com/
Merci d'y jeter un œil, et merci pour vos suggestions et corrections!
Précision: je suis tombé sur ce script de kholo post #1928; mon code permet de créer des fichiers csv dont les contenus peuvent-être ajoutés au sien.
w3m doit être installé.
#!/bin/bash
auj=$(date +%Y%m%d_%H:%M:%S)
> donnees_completes
> donnees_incompletes
> urls
w3m -dump https://www.internet-radio.com/stations/ | sed '/^ /d' | sed '/^$/d' | sed '1,4d' > listestyles
cat listestyles | nl
read -p "Numéro du style recherché: " numero
style=$(cat listestyles | sed -n "$numero"p)
wget "https://www.internet-radio.com/stations/$style/page1" -O page.html
nbr=$(w3m -dump https://www.internet-radio.com/stations/$style/page1 | sed '1,/Previous/d' | sed '/Next/,$d' | tail -1 | sed "s/•//g" | sed "s/ *//g")
for page in `seq 1 $nbr`; do
wget "https://www.internet-radio.com/stations/$style/page$page" -O page.html
cat page.html | grep "<br><samp>" | cut -d' ' -f2 | sed "s/\/listen..*//g" | sort | uniq >> urls
done
while read line; do
> infos
cvlc -vv "$line" --sout file/mp3:testurl.mp3 --run-time=1 --stop-time=1 --file-logging --logfile=infos vlc://quit
testurl=$(file testurl.mp3 | grep empty)
if [ -z "$testurl" ]; then
nom=$(cat infos | grep "^http debug: Icy-Name: " | sed "s/http debug: Icy-Name: //g" | sed "s/^ *//g" | sed "s/ *$//g" | sed "s/ */ /g")
genre=$(cat infos | grep "^http debug: Icy-Genre: " | sed "s/http debug: Icy-Genre: //g" | cut -d':' -f2 | sed 's/\([[:punct:]]\)/ /g' | sed "s/^ *//g" | sed "s/ *$//g" | sed "s/ */ /g" | tr [:upper:] [:lower:] | sed -r 's/(^.| .)/\U&/g' )
bitrate=$(cat infos | grep "icy-br" | head -n 1 | cut -d':' -f4 | sed "s/^ *//g" | sed "s/$/kbps/g")
if [ -n "$nom" ] && [ -n "$genre" ] && [ -n "$bitrate" ]; then
echo "$nom [$bitrate] $genre;$line" >> donnees_completes
else
echo "$nom [$bitrate] $genre;$line" >> donnees_incompletes
fi
else
done < urls
[ -s donnees_completes ] && < donnees_completes sort | uniq > "csv-$auj-$style.csv" && rm donnees_completes
[ -s donnees_incompletes ] && mv "donnees_incompletes" "$auj-$style-donnees_incompletes"
rm testurl.mp3 infos donnees_completes donnees_incompletes urls listestyles page.html
cat csv* | sort | uniq > radios.csv
clear
Si je pose une question sur le forum, ce n'est pas par paresse ou pour faire faire "mes devoirs"; c'est par ignorance: j'ai 51 berges. Et, par principe, je préfère être traité d'ignare que de fainéant.
Samsung i7-3630QM CPU @ 2.40GHz × 8 - 64 bits - RAM 7,7 Gio - DD 976 Go - Bodhi 6.0.0 Ubuntu 20.04
Allergique au wysiwyg; traitement à vie: Lilypond - LaTeX - txt2tags
Hors ligne