# TV Signage — Webapp d'affichage vidéo pour TV Android

Webapp permettant de diffuser en boucle sur une TV Android une sélection de
courtes vidéos (10-15 secondes), gérée depuis une interface d'administration
protégée par mot de passe.

## Structure du projet

```
tv-signage/
├── config.php              # Config générale (BDD, dossiers, options)
├── setup-admin.php         # Script à usage unique : créer/réinitialiser le compte admin
├── login.php                # Page de connexion admin (logo + slogan)
├── admin.php                 # Interface d'administration
├── logout.php
├── player.php                # Page à afficher sur la TV
├── includes/
│   ├── db.php                 # Connexion PDO/MySQL
│   └── auth.php               # Protection des pages admin
├── api/
│   ├── videos-list.php        # [admin] Liste des vidéos
│   ├── upload.php              # [admin] Upload vidéo + miniature
│   ├── toggle-select.php       # [admin] Cocher/décocher une vidéo
│   ├── reorder.php             # [admin] Réordonner (drag & drop)
│   ├── delete.php               # [admin] Supprimer une vidéo
│   └── playlist.php            # [public] Playlist active pour le player TV
├── assets/
│   ├── css/style.css
│   ├── js/admin.js
│   ├── js/player.js
│   └── img/                    # <-- dépose ton logo ici (logo.png)
├── uploads/
│   ├── videos/                 # Fichiers vidéo uploadés
│   └── thumbnails/              # Miniatures générées automatiquement
└── sql/schema.sql              # Structure de la base de données
```

## Installation sur hébergement mutualisé (type OVH)

1. **Créer la base de données MySQL** depuis l'espace d'hébergement, puis
   importer `sql/schema.sql` (via phpMyAdmin par exemple).
2. **Renseigner `config.php`** avec les identifiants de connexion à la base
   (host, nom, utilisateur, mot de passe).
3. **Uploader tout le dossier** `tv-signage/` sur le serveur (FTP ou gestionnaire
   de fichiers).
4. Vérifier que les dossiers `uploads/videos/` et `uploads/thumbnails/` sont
   accessibles en écriture par le serveur (permissions 755 ou 775 selon l'hébergeur).
5. **Créer le compte administrateur** : ouvre `setup-admin.php` une fois dans
   ton navigateur (modifie d'abord le mot de passe dans le fichier), puis
   **supprime ce fichier du serveur immédiatement après**.
6. Personnalise l'écran de connexion :
   - dépose ton logo dans `assets/img/logo.png`
   - modifie le texte du slogan directement dans `login.php` (`login-slogan`)
7. Rends-toi sur `https://tonsite.fr/login.php` pour te connecter à l'admin,
   et sur `https://tonsite.fr/player.php` pour voir le rendu de diffusion
   (c'est cette URL qu'il faudra ouvrir sur la TV).

## Utilisation au quotidien

1. Prépare tes vidéos avec Canva et exporte-les (format MP4 conseillé).
2. Connecte-toi sur `/login.php`, puis va dans `/admin.php`.
3. Ajoute chaque vidéo via le bouton d'upload — une miniature est générée
   automatiquement dans le navigateur au moment de l'envoi.
4. Coche les vidéos que tu veux diffuser, et glisse-dépose les cartes pour
   définir l'ordre de passage.
5. La TV se met à jour automatiquement (vérification toutes les 15 secondes,
   réglable dans `config.php` via `PLAYLIST_POLL_INTERVAL_MS`) — pas besoin de
   redémarrer la télé.

## Configuration de la TV Android

La solution la plus simple et fiable est d'utiliser une application de
navigateur "kiosque" plutôt que de développer une application Android sur mesure :

### Option recommandée : Fully Kiosk Browser (gratuit)

1. Sur la TV Android, installe **"Fully Kiosk Browser"** depuis le Play Store
   (ou via un fichier APK si le Play Store n'est pas disponible sur le boîtier).
2. Ouvre l'application, va dans **Réglages → Web Content Settings** et renseigne
   l'URL de démarrage : `https://tonsite.fr/player.php`
3. Dans **Réglages → Motion & Autostart** :
   - active **"Start on Boot"** (démarrage automatique avec la TV)
   - active **"Launch on Boot Delay"** si la TV a besoin de temps pour se
     connecter au Wi-Fi/Ethernet
4. Dans **Réglages → Other Settings**, tu peux activer le mode kiosque complet
   (empêche de quitter l'application, cache la barre de statut, etc.)
5. Redémarre la TV pour vérifier que `player.php` s'ouvre automatiquement en
   plein écran.

### Alternative : navigateur par défaut + lanceur de démarrage

Si tu préfères ne pas installer d'application tierce, certains boîtiers Android
TV permettent de définir une page de démarrage automatique via les paramètres
système ou une application de type "kiosk launcher" (selon le fabricant du
boîtier). Fully Kiosk Browser reste la solution la plus universelle et la
plus simple à mettre en place.

## Sécurité

- Le dossier `includes/` est protégé par `.htaccess` (accès direct interdit).
- Le dossier `uploads/` interdit l'exécution de scripts PHP (protection contre
  l'upload de fichiers malveillants déguisés en vidéos).
- Pense à supprimer `setup-admin.php` du serveur après la création du compte admin.
- La page `player.php` (TV) n'est volontairement pas protégée par mot de passe,
  puisque c'est la télévision elle-même qui l'affiche sans intervention humaine.

## Pistes d'évolution possibles

- Programmer la diffusion de certaines vidéos à des horaires précis
- Ajouter plusieurs écrans/TV avec des playlists différentes
- Statistiques de diffusion (nombre de fois qu'une vidéo est passée)
