Canaux : Stéréo
Fréquence d'échantillonnage : 48000 Hz
Bits par échantillon : 32
- francemusique
- francemusiquebaroque
- francemusiqueclassiqueplus
- francemusiqueconcertsradiofrance
- francemusiqueeasyclassique
- francemusiquelabo
- francemusiquelacontemporaine
- francemusiquelajazz
- francemusiqueocoramonde
- francemusiqueopera
Fichier > Bibliothèque > Exporter la playlist... > Format XML
#!/usr/bin/env bash
# -*- coding: UTF-8 -*-
#
# author : JV-conseil
# credits : JV-conseil
# licence : BSD 3-Clause License
# copyright : Copyright (c) 2019-2024 JV-conseil
# All rights reserved
#====================================================
import json
import re
try:
import requests
except:
pip install requests
pages = [
"https://www.francemusique.fr",
"https://www.franceculture.fr",
"https://www.franceinter.fr",
"https://www.fip.fr",
]
# Regex source: https://regex101.com/r/QzFpaY/1
regex = {
"aac": r"(?P<link>http[^,\"]*?/(?P<title>[^\.]*?)\-hifi\.aac\?id=radiofrance)",
"mp3": r"(?P<link>http[^,\"]*?/(?P<title>[^\.]*?)\.mp3\?id=radiofrance)"
}
links = {k: {} for k, v in regex.items()}
for p in pages:
try:
response = requests.get(p)
for k, rgx in regex.items():
result = re.findall(rgx, response.text, 0)
links[k].update({y: x for x, y in result})
except Exception as e:
print(e)
# JSON View
print("\r\n# JSON View\r\n")
print(json.dumps(links, indent=2, ensure_ascii=False))
# Markdown View
print("\r\n# Markdown View\r\n")
for x, y in links["aac"].items():
print("- [%s](%s)" % (x, y))
# M3U View
print("\r\n#EXTM3U")
for x, y in links["aac"].items():
print("#EXTINF:0,Radio France HiFi - %s\r\n%s" % (x, y))
print()
France Musique .AAC link scraping on Regex101
{
"aac": {
"francemusiqueeasyclassique": "https://icecast.radiofrance.fr/francemusiqueeasyclassique-hifi.aac?id=radiofrance",
"francemusiqueopera": "https://icecast.radiofrance.fr/francemusiqueopera-hifi.aac?id=radiofrance",
"francemusiquebaroque": "https://icecast.radiofrance.fr/francemusiquebaroque-hifi.aac?id=radiofrance",
"francemusiqueclassiqueplus": "https://icecast.radiofrance.fr/francemusiqueclassiqueplus-hifi.aac?id=radiofrance",
"francemusiqueconcertsradiofrance": "https://icecast.radiofrance.fr/francemusiqueconcertsradiofrance-hifi.aac?id=radiofrance",
"francemusiquelajazz": "https://icecast.radiofrance.fr/francemusiquelajazz-hifi.aac?id=radiofrance",
"francemusiquelacontemporaine": "https://icecast.radiofrance.fr/francemusiquelacontemporaine-hifi.aac?id=radiofrance",
"francemusiqueocoramonde": "https://icecast.radiofrance.fr/francemusiqueocoramonde-hifi.aac?id=radiofrance",
"francemusiquelabo": "https://icecast.radiofrance.fr/francemusiquelabo-hifi.aac?id=radiofrance",
"francemusique": "https://icecast.radiofrance.fr/francemusique-hifi.aac?id=radiofrance",
"franceculture": "https://icecast.radiofrance.fr/franceculture-hifi.aac?id=radiofrance",
"franceinter": "https://icecast.radiofrance.fr/franceinter-hifi.aac?id=radiofrance",
"fiprock": "https://icecast.radiofrance.fr/fiprock-hifi.aac?id=radiofrance",
"fipjazz": "https://icecast.radiofrance.fr/fipjazz-hifi.aac?id=radiofrance",
"fipgroove": "https://icecast.radiofrance.fr/fipgroove-hifi.aac?id=radiofrance",
"fippop": "https://icecast.radiofrance.fr/fippop-hifi.aac?id=radiofrance",
"fipelectro": "https://icecast.radiofrance.fr/fipelectro-hifi.aac?id=radiofrance",
"fipworld": "https://icecast.radiofrance.fr/fipworld-hifi.aac?id=radiofrance",
"fipreggae": "https://icecast.radiofrance.fr/fipreggae-hifi.aac?id=radiofrance",
"fipnouveautes": "https://icecast.radiofrance.fr/fipnouveautes-hifi.aac?id=radiofrance",
"fip": "https://icecast.radiofrance.fr/fip-hifi.aac?id=radiofrance"
},
"mp3": {
"francemusiqueeasyclassique-midfi": "https://icecast.radiofrance.fr/francemusiqueeasyclassique-midfi.mp3?id=radiofrance",
"francemusiqueopera-midfi": "https://icecast.radiofrance.fr/francemusiqueopera-midfi.mp3?id=radiofrance",
"francemusiquebaroque-midfi": "https://icecast.radiofrance.fr/francemusiquebaroque-midfi.mp3?id=radiofrance",
"francemusiqueclassiqueplus-midfi": "https://icecast.radiofrance.fr/francemusiqueclassiqueplus-midfi.mp3?id=radiofrance",
"francemusiqueconcertsradiofrance-midfi": "https://icecast.radiofrance.fr/francemusiqueconcertsradiofrance-midfi.mp3?id=radiofrance",
"francemusiquelajazz-midfi": "https://icecast.radiofrance.fr/francemusiquelajazz-midfi.mp3?id=radiofrance",
"francemusiquelacontemporaine-midfi": "https://icecast.radiofrance.fr/francemusiquelacontemporaine-midfi.mp3?id=radiofrance",
"francemusiqueocoramonde-midfi": "https://icecast.radiofrance.fr/francemusiqueocoramonde-midfi.mp3?id=radiofrance",
"francemusiquelabo-midfi": "https://icecast.radiofrance.fr/francemusiquelabo-midfi.mp3?id=radiofrance",
"francemusique-lofi": "https://icecast.radiofrance.fr/francemusique-lofi.mp3?id=radiofrance",
"francemusique-midfi": "https://icecast.radiofrance.fr/francemusique-midfi.mp3?id=radiofrance",
"franceculture-midfi": "https://icecast.radiofrance.fr/franceculture-midfi.mp3?id=radiofrance",
"franceinter-midfi": "https://icecast.radiofrance.fr/franceinter-midfi.mp3?id=radiofrance",
"franceinter-lofi": "https://icecast.radiofrance.fr/franceinter-lofi.mp3?id=radiofrance",
"fiprock-midfi": "https://icecast.radiofrance.fr/fiprock-midfi.mp3?id=radiofrance",
"fipjazz-midfi": "https://icecast.radiofrance.fr/fipjazz-midfi.mp3?id=radiofrance",
"fipgroove-midfi": "https://icecast.radiofrance.fr/fipgroove-midfi.mp3?id=radiofrance",
"fippop-midfi": "https://icecast.radiofrance.fr/fippop-midfi.mp3?id=radiofrance",
"fipelectro-midfi": "https://icecast.radiofrance.fr/fipelectro-midfi.mp3?id=radiofrance",
"fipworld-midfi": "https://icecast.radiofrance.fr/fipworld-midfi.mp3?id=radiofrance",
"fipreggae-midfi": "https://icecast.radiofrance.fr/fipreggae-midfi.mp3?id=radiofrance",
"fipnouveautes-midfi": "https://icecast.radiofrance.fr/fipnouveautes-midfi.mp3?id=radiofrance",
"fip-lofi": "https://icecast.radiofrance.fr/fip-lofi.mp3?id=radiofrance",
"fip-midfi": "https://icecast.radiofrance.fr/fip-midfi.mp3?id=radiofrance",
"fipbordeaux-lofi": "https://icecast.radiofrance.fr/fipbordeaux-lofi.mp3?id=radiofrance",
"fipbordeaux-midfi": "https://icecast.radiofrance.fr/fipbordeaux-midfi.mp3?id=radiofrance",
"fipnantes-lofi": "https://icecast.radiofrance.fr/fipnantes-lofi.mp3?id=radiofrance",
"fipnantes-midfi": "https://icecast.radiofrance.fr/fipnantes-midfi.mp3?id=radiofrance",
"fipstrasbourg-lofi": "https://icecast.radiofrance.fr/fipstrasbourg-lofi.mp3?id=radiofrance",
"fipstrasbourg-midfi": "https://icecast.radiofrance.fr/fipstrasbourg-midfi.mp3?id=radiofrance"
}
}
#!/usr/bin/env bash
# -*- coding: UTF-8 -*-
#
# author : JV-conseil
# credits : JV-conseil
# copyright : Copyright (c) 2019-2024 JV-conseil
# All rights reserved
#====================================================
cat <<EOF
| attempt | icy-pub | wait |
| :------ | :-----: | ---: |
EOF
for i in {0..10}; do
wait=$(("${i}" * 10))
sleep "${wait}"
tmp="$(curl -sI "http://icecast.radiofrance.fr/franceinter-hifi.aac?icy-pub=0" | grep -o "icy-pub: [0-1]")"
printf "| %d | %s | %d sec. |\n" "${i}" "${tmp}" "${wait}"
done
icy-pub=0
ne désactivera pas les publicités, le paramètre passé dans l'url n'a aucun effet sur la valeur retournée par les en-têtes du serveur.
Le tableau ci-dessous produit par le script ci-dessus démontre que sur 10 tentatives espacées d'un temps d'attente augmenté d'un facteur de 10 secondes entre chacune, l'activation / désactivation de icy-pub
apparaît aléatoire 👇
attempt | icy-pub | wait |
---|---|---|
0 | icy-pub: 1 | 0 sec. |
1 | icy-pub: 1 | 10 sec. |
2 | icy-pub: 1 | 20 sec. |
3 | icy-pub: 1 | 30 sec. |
4 | icy-pub: 0 | 40 sec. |
5 | icy-pub: 0 | 50 sec. |
6 | icy-pub: 0 | 60 sec. |
7 | icy-pub: 1 | 70 sec. |
8 | icy-pub: 1 | 80 sec. |
9 | icy-pub: 0 | 90 sec. |
10 | icy-pub: 1 | 100 sec. |
Pour aller plus loin documentation sur le protocole Icecast 🔗
NB: Essayer de changer icy-br=320
n'a pas plus d'effets et ne bascule pas l'encodage de 192 à 320 Kbps, standard d'écoute disponible sur la BBC depuis déjà plusieurs années 🔉
L’Open API de Radio France est un portail qui permet à des acteurs innovants de développer de nouveaux services grâce à un accès raisonné aux contenus de Radio France — https://www.radiofrance.fr/lopen-api-radio-france
Documentation
If this project helps you, you can offer me a cup of coffee ☕️ :-)