Streamer guide
# Song Player
File d'attente de musiques YouTube alimentée par le chat. Les viewers ajoutent des morceaux via une commande, tu contrôles la lecture depuis le plugin streamer.
## Ce que fait l'app
- File d'attente principale alimentée par le chat (`!addsong <url ou ID YouTube>` par défaut)
- Playlist secondaire de fallback que tu charges depuis une URL de playlist YouTube — elle prend le relais quand la file est vide
- Lecteur YouTube intégré avec play/pause, skip, volume
- Annonces dans le chat configurables (musique ajoutée, lecture en cours)
- Plugin viewers séparé qui affiche la file et le morceau en cours
## Limites par défaut
- **100** morceaux maximum dans la file
- **3** morceaux par viewer (configurable, illimité pour les animateurs)
- Cooldown de **30 s** entre deux requêtes d'un même viewer
- Cooldown de **3 s** sur la commande chat
- Doublons refusés (la position du morceau dans la file est renvoyée au viewer)
## Commandes chat
### Viewers
```
!addsong <url ou ID YouTube>
```
Le mot-clé `addsong` est modifiable dans l'onglet **Avancé**.
### Animateurs
Toutes les commandes admin utilisent un préfixe (par défaut `!sp`) :
| Commande | Effet |
| --- | --- |
| `!sp play` | Relance la lecture |
| `!sp stop` | Met en pause |
| `!sp skip` | Passe au morceau suivant |
| `!sp vol <1-100>` | Change le volume |
| `!sp remove <pseudo\|video_id\|titre>` | Retire un morceau de la file |
Le préfixe et chaque mot-clé sont éditables dans l'onglet **Avancé**.
## Plugin streamer
Depuis l'interface tu peux :
- Voir la file et le morceau en cours
- Play/pause, skip, ajuster le volume au slider
- Ajouter manuellement un morceau (URL ou ID YouTube)
- Charger une playlist YouTube entière comme playlist secondaire (URL contenant `?list=…`)
- Vider la playlist secondaire
- Réordonner la file par drag-and-drop
- Lancer immédiatement un morceau précis de la file
- Retirer un morceau spécifique
## Préférences
Trois onglets :
**Global**
- `Volume` — 1 à 100, défaut 50
- `Nombre par utilisateur` — défaut 3, mettre `0` pour illimité
**Annonces** — messages postés dans le chat, avec les variables `##user_name##` et `##video_title##` :
- `Musique ajoutée` — quand un morceau entre dans la file
- `Lecture en cours` — quand un morceau de la file principale démarre
- `Lecture en cours (playlist secondaire)` — quand un morceau de la playlist secondaire démarre
**Avancé** — mots-clés des commandes chat : `addsong`, `sp` (admin), `play`, `stop`, `skip`, `vol`, `remove`.
## Permissions requises
L'app demande les scopes suivants :
- `chat:read`, `chat:write` — lire la commande des viewers et poster les annonces
- `app-plugin-viewers:write` — pousser la file et le morceau en cours vers le plugin viewers
- `app-plugin-streamer:write`, `app-plugin-streamer:call` — synchroniser et recevoir les actions du plugin streamer
- `triggers:manage` — enregistrer la commande chat `!addsong`
## Notes techniques
L'app utilise l'API YouTube IFrame pour la lecture. Les 100 derniers morceaux joués sont conservés et réutilisés pour réalimenter la playlist secondaire au redémarrage. La file et l'état de lecture persistent entre les sessions.