131 lines
6.1 KiB
Markdown
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
|