IPB

Bienvenue invité ( Connexion | Inscription )

> Lecteur MP3 de natation : automatiser RSS + YouTube vers une clé USB (macOS)(TUTO)
Options
emma_xoxoxox
posté 16 Dec 2025, 11:52
Message #1


Adepte de Macbidouille
*

Groupe : Membres
Messages : 139
Inscrit : 22 Aug 2019
Membre no 208 767



🏊‍♂️ Tutoriel macOS (débutant)

Mettre automatiquement RSS + YouTube sur un lecteur MP3 de natation (clé USB)



🔹 À quoi ça sert (en clair)

Les lecteurs MP3 étanches pour la natation (Sony, Shokz, H2O Audio, Finis…) ont des limites :
• pas de Wi-Fi
• pas de streaming
• pas d’applications
• classement alphabétique uniquement

L’idée est donc de préparer à l’avance le contenu audio sur Mac.

Ce tutoriel explique comment :
• récupérer automatiquement
• un journal audio via RSS (radio/podcast)
• la dernière vidéo d’une chaîne YouTube (audio uniquement)
• convertir en MP3
• copier sur un lecteur MP3 de natation (clé USB)
• garantir que ces fichiers soient lus en premier



🔹 Résultat final

Sur la clé USB / lecteur MP3, on obtient par exemple :

01_2025-11-01_RSS_News.mp3
02_2025-11-01_YouTube_News.mp3

➡️ Le lecteur lit d’abord le journal radio, puis l’émission YouTube, puis le reste de la musique.



🔹 Étape 0 – Vérifier le nom de la clé USB
1. Branche ton lecteur MP3
2. Ouvre le Terminal
3. Tape :

Code
ls /Volumes


Note exactement le nom qui apparaît (ex. MP3 SWIM).



🔹 Étape 1 – Installer les outils (une seule fois)

Installer Homebrew (si nécessaire)

Code
/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”


Puis :

Code
echo ‘eval “$(/opt/homebrew/bin/brew shellenv)”’ >> ~/.zprofile
eval “$(/opt/homebrew/bin/brew shellenv)”


Vérifier :

Code
brew –version




Installer les programmes nécessaires

Code
brew install python ffmpeg yt-dlp


Installer les bibliothèques Python :

Code
python3 -m pip install requests feedparser




🔹 Étape 2 – Créer le dossier des scripts

Code
mkdir -p ~/Scripts




🔹 Étape 3 – Créer le script
1. Ouvrir l’éditeur simple :

Code
nano ~/Scripts/swim_mp3_sync.py

2. Copier-coller tout le code ci-dessous :

Code
import os, time, shutil, subprocess, requests, feedparser, tempfile
from datetime import datetime

====== A MODIFIER ======

USB_NAME = “MP3 SWIM”  # Nom exact de la clé USB
RSS_URL = “https://feeds.megaphone.fm/RCS6570791877”
YOUTUBE_CHANNEL = “https://www.youtube.com/@tgla7/videos”

=======================

DOWNLOAD_DIR = os.path.expanduser(”~/Mp3 Swimming pool”)
CHECK_INTERVAL = 5

def ensure_folder(path):
os.makedirs(path, exist_ok=True)

def usb_path():
path = f”/Volumes/{USB_NAME}”
return path if os.path.isdir(path) else None

def download_rss():
print(“RSS : récupération du dernier épisode…”)
feed = feedparser.parse(RSS_URL)
entry = feed.entries[0]
url = entry.enclosures[0].href

tmp = tempfile.mktemp()
r = requests.get(url, stream=True)
with open(tmp, "wb") as f:
    for chunk in r.iter_content(256*1024):
        f.write(chunk)

mp3 = os.path.join(DOWNLOAD_DIR, "rss.mp3")
subprocess.run(["ffmpeg", "-y", "-i", tmp, mp3],
               stdout=subprocess.DEVNULL,
               stderr=subprocess.DEVNULL)
os.remove(tmp)
print("RSS : OK")
return mp3

def download_youtube():
print(“YouTube : récupération de la dernière vidéo (audio)…”)
output = os.path.join(DOWNLOAD_DIR, “yt.%(ext)s”)
subprocess.run([
“yt-dlp”,
“-x”,
“–audio-format”, “mp3”,
“–playlist-end”, “1”,
“-o”, output,
YOUTUBE_CHANNEL
], check=True)

print("YouTube : OK")
return os.path.join(DOWNLOAD_DIR, "yt.mp3")

def sync_files(rss_mp3, yt_mp3):
usb = usb_path()
if not usb:
print(“Clé USB non détectée, attente…”)
return False

today = datetime.now().strftime("%Y-%m-%d")
rss_dest = os.path.join(usb, f"01_{today}_RSS_News.mp3")
yt_dest  = os.path.join(usb, f"02_{today}_YouTube_News.mp3")

# Supprime uniquement les anciens fichiers news
for f in os.listdir(usb):
    if f.startswith(("01_", "02_")) and "News" in f:
        try:
            os.remove(os.path.join(usb, f))
        except:
            pass

shutil.copy2(rss_mp3, rss_dest)
shutil.copy2(yt_mp3, yt_dest)
print("Copie terminée sur la clé USB.")
return True

if name == “main”:
ensure_folder(DOWNLOAD_DIR)
print(“Téléchargement RSS + YouTube…”)
rss_mp3 = download_rss()
yt_mp3  = download_youtube()

print("Branche la clé MP3 si ce n’est pas déjà fait.")
while not sync_files(rss_mp3, yt_mp3):
    time.sleep(CHECK_INTERVAL)

3. Sauvegarder :

• CTRL + O → Entrée
• CTRL + X



🔹 Étape 4 – Lancer le script

Dans le Terminal :

Code
python3 ~/Scripts/swim_mp3_sync.py


Laisser le Terminal ouvert, puis brancher le lecteur MP3.



🔹 Ce que fait le script (important)
• ❌ ne supprime pas ta musique
• ✅ supprime uniquement les anciens fichiers 01_...News.mp3 et 02_...News.mp3
• ✅ garantit l’ordre de lecture sur un MP3 de natation
• ✅ fonctionne hors ligne une fois la clé préparée



🔹 Personnalisation rapide

Changer de chaîne YouTube :
Code
YOUTUBE_CHANNEL = “https://www.youtube.com/@AutreChaine”


Changer de flux RSS :
Code
RSS_URL = “https://exemple.com/flux_audio.xml”


Changer de lecteur MP3 :
Code
USB_NAME = “NOM_DE_LA_CLE”




🔹 Conclusion

Ce workflow est né d’un besoin très concret :
écouter de l’actualité parlée hors ligne sur un lecteur MP3 de natation.

Simple, robuste, sans cloud, sans appli inutile.
Une fois en place : on branche → on nage → on écoute.



--------------------
MBP 16 M1Max 64G 8T Qwerty APP+, Mac Studio M1 Ultra 20-core CPU 64GB 4TB SSD,
Go to the top of the page
 
+Quote Post

Les messages de ce sujet


Reply to this topicStart new topic
2 utilisateur(s) sur ce sujet (2 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 30th January 2026 - 07:54