Files
2026-06-09 18:40:21 +02:00

131 lines
6.1 KiB
Markdown

---
title: Music Service
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, downloads, music, multi-source, python, api]
confidence: medium
contested: false
sources:
- https://selfh.st/apps/?tag=downloads
---
# 🎶 Music Service
> Service générique de téléchargement musical multi-sources : unifie plusieurs backends de recherche (YouTube, SoundCloud, Bandcamp, etc.) derrière une API REST unique.
| Métadonnée | Valeur |
| :--- | :--- |
| **Site web** | https://github.com/nicholasgasior/music-service |
| **GitHub** | https://github.com/nicholasgasior/music-service |
| **License** | MIT |
| **Langage** | Python (FastAPI) |
| **Étoiles** | 5 ⭐ |
| **Catégorie** | [[cat-downloads]] |
## Description
Music Service est un **agrégateur de sources musicales** : au lieu de coller une URL YouTube ici, une URL SoundCloud là, il offre **une seule API REST** qui accepte un nom d'artiste, de morceau ou d'album, et interroge en parallèle plusieurs backends pour ramener le meilleur résultat.
L'idée est proche de [[app-music-grabber]] (du même auteur d'ailleurs — nicholasgasior), mais plus **générique et bas-niveau** : pas de couplage fort avec [[app-lidarr]], pas de notion de « backfill de discographie », juste un **service de résolution « titre → fichier »** sur lequel on peut brancher n'importe quel frontend (Lidarr, Navidrome via import script, Home Assistant, ou un script perso).
Les sources supportées (selon config) incluent typiquement YouTube (via yt-dlp), SoundCloud (via scdl), Bandcamp (via bandcamp-downloader), et potentiellement Dailymotion, Vimeo, ou des archives libres (Jamendo, Free Music Archive). La sortie est uniformisée : ID3 tags cohérents, format configurable (mp3/flac/opus), et pochette embarquée.
C'est l'outil idéal pour qui veut un **« point d'entrée unique »** dans son installation musicale self-hosted, mais c'est aussi le **type de projet à risque** : très peu d'étoiles, **bus factor 1** certain, et la valeur dépend de la qualité des backends sous-jacents (souvent des scrapers fragiles).
**⚠️ Avertissement légal** : comme pour tous les outils de la famille, n'utiliser que sur du contenu sous licence libre, vos propres fichiers, ou avec un abonnement actif au service source (SoundCloud Go+, YouTube Premium).
## Installation
### Docker Compose (recommandé)
```yaml
# docker-compose.yml
services:
music-service:
image: ghcr.io/nicholasgasior/music-service:latest
container_name: music-service
restart: unless-stopped
ports:
- "8090:8090"
environment:
- TZ=Europe/Paris
- SOURCES=youtube,soundcloud,bandcamp
- AUDIO_FORMAT=mp3
- AUDIO_BITRATE=320
- METADATA_PROVIDER=musicbrainz
volumes:
- ./config:/app/config
- /data/music/service:/downloads
- ./cache:/app/cache
```
### Installation manuelle
```bash
git clone https://github.com/nicholasgasior/music-service
cd music-service
pip install -r requirements.txt # ffmpeg + yt-dlp système requis
cp .env.example .env
python -m music_service
# API sur :8090, docs OpenAPI sur /docs
```
## Configuration
- **Sources activées** : liste CSV (`youtube,soundcloud,bandcamp`), désactivable individuellement.
- **Provider de métadonnées** : `musicbrainz` (recommandé, gratuit, sans clé) ou `spotify` (nécessite client ID/secret).
- **Format/bitrate** : `mp3`/`flac`/`opus`, bitrate cible pour les formats lossy.
- **Cache** : pour ne pas re-scraper deux fois la même URL.
- **Authentification source** : pour SoundCloud Go+ (auth OAuth) ou YouTube avec restrictions (cookies).
- **Rate limit** : éviter de se faire bannir par les sources, par défaut conservateur.
- **API key** : clé d'API pour `/download` (à mettre devant l'endpoint si exposé).
## Alternatives
### Open Source
- [[app-music-grabber]] — du même auteur, **couplé Lidarr**, plus « produit fini ».
- [[app-yubal]] — focus YouTube Music, UI plus polie.
- [[app-spotizerr]] — focus Spotify → YouTube.
- [[app-soulbeet]] — focus Soulseek (P2P).
- **yt-dlp CLI** — bas-niveau, multi-sources natif, sans API.
- **beets + plugins** — tagger + import depuis sources diverses, plus orienté « bibliothèque » que « downloader ».
### Propriétaires (ce que Music Service remplace)
- **Spotify Premium offline** —只能在客户端读。
- **TuneMyMusic** — transfert, pas download.
- **YouTube Premium offline** — idem.
- **Bandcamp app** — pas d'agrégation multi-sources.
- **Last.fm scrobbling** — métadonnées seulement, pas download.
## Sécurité
- **Bus factor 1 absolu** : <10 ⭐, un seul auteur (nicholasgasior), **projet à surveiller de très près** ou à éviter en prod critique. Préparer un plan B (spotDL CLI, yt-dlp en script).
- **Authentification source** : si vous stockez un token SoundCloud ou des cookies YouTube, ils donnent accès à votre compte — chiffrer `./config` au repos.
- **API sans auth par défaut** : à ne jamais exposer sans reverse proxy authentifié, l'endpoint peut consommer votre bande passante.
- **Scrapers fragiles** : les backends YouTube/SoundCloud changent régulièrement, attendez-vous à des casses à chaque mise à jour de la source.
- **Légalité** : comme pour tous les outils du genre, vérifier votre juridiction (DMCA, EUCD).
- **Logs** : contiennent les termes de recherche (RGPD), anonymiser avant export centralisé.
## Ressources
- Repository : https://github.com/nicholasgasior/music-service
- [[app-music-grabber]] — alternative plus mature du même auteur
- yt-dlp : https://github.com/yt-dlp/yt-dlp
- MusicBrainz API : https://musicbrainz.org/doc/MusicBrainz_API
- selfh.st downloads : https://selfh.st/apps/?tag=downloads
## Pages Liées
- [[cat-downloads]] — catégorie parente
- [[app-music-grabber]] — alternative couplée Lidarr
- [[app-yubal]] — alternative YouTube Music
- [[app-spotizerr]] — alternative Spotify
- [[app-lidarr]] — gestion bibliothèque
- [[app-navidrome]] — serveur streaming
- [[app-beets]] — tagger complémentaire
- [[app-traefik]] — reverse proxy
- [[recettes-docker-compose]] — templates
- [[securisation-home-lab]] — bonnes pratiques