195 lines
7.9 KiB
Markdown
195 lines
7.9 KiB
Markdown
# 🎬 Lecteur de sessions — Assembly Session Player
|
||
|
||

|
||

|
||

|
||

|
||

|
||
|
||
Application de bureau (GNOME / Wayland) **très simple à utiliser**, qui lit
|
||
automatiquement, **dans l'ordre**, toutes les sessions vidéo disponibles sur un
|
||
lien d'assemblée du type :
|
||
|
||
```
|
||
https://stream.jw.org/9021-8224-3277-8078
|
||
```
|
||
|
||
Elle retient où vous en étiez (session + position exacte) pour reprendre la
|
||
lecture pile où vous vous êtes arrêté·e, y compris après un redémarrage du PC.
|
||
|
||
> ⚠️ **Projet non officiel**, réalisé pour un usage personnel. Il n'est ni
|
||
> développé, ni approuvé, ni affilié à watchtower.org / jw.org / stream.jw.org.
|
||
> Il se contente d'afficher la page officielle telle quelle dans une fenêtre
|
||
> (WebKitGTK) et de l'automatiser via le DOM — aucun contenu n'est téléchargé,
|
||
> copié ou redistribué par l'application.
|
||
|
||
## ✨ Fonctionnalités
|
||
|
||
- 🔗 Lien d'assemblée **configurable** (Paramètres, ou menu de l'icône de la
|
||
barre des tâches).
|
||
- 📋 Détection automatique de la liste des sessions et **lecture dans le bon
|
||
ordre**, enchaînement automatique d'une session à l'autre.
|
||
- ⏯️ **Reprise de lecture** exacte (session + position en secondes), même après
|
||
fermeture complète de l'application ou redémarrage du PC.
|
||
- ⏰ **Démarrage automatique** au démarrage du PC (option dans les Paramètres ou
|
||
le menu de l'icône), en arrière-plan (fenêtre réduite dans la barre des
|
||
tâches), avec reprise automatique.
|
||
- 🖥️ **Mode plein écran** (bouton dédié, touche `F11`, ou menu de l'icône) ;
|
||
`F10` ouvre les Paramètres même en plein écran.
|
||
- 🔔 **Icône dans la barre des tâches** (system tray / AppIndicator, compatible
|
||
GNOME sur Wayland) avec Lecture/Pause, session précédente/suivante, plein
|
||
écran, démarrage automatique et changement de lien.
|
||
- 🎨 Icône d'application dédiée, utilisée dans la fenêtre, le lanceur et la
|
||
barre des tâches.
|
||
- ℹ️ Bouton discret « À propos » (barre du haut ou menu de l'icône) : nom,
|
||
version et rappel du caractère non officiel de l'application.
|
||
- 📦 Paquet `.deb` prêt à l'emploi (`make deb`).
|
||
|
||
## ⚠️ Limitation connue (sécurité navigateur, pas un bug)
|
||
|
||
Les navigateurs (et WebKitGTK) bloquent le démarrage automatique du son/vidéo
|
||
tant qu'aucun **clic réel** n'a eu lieu dans la page. Concrètement : **au
|
||
premier lancement de la fenêtre, un seul clic sur le bouton ▶ affiché dans la
|
||
vidéo est nécessaire pour démarrer**. Une fois ce clic fait, tout s'enchaîne
|
||
ensuite automatiquement (reprise à la bonne position, passage à la session
|
||
suivante) sans autre action, tant que la fenêtre reste ouverte. C'est une
|
||
protection standard des navigateurs contre la lecture automatique intempestive
|
||
— l'application ne peut pas (et ne doit pas) la contourner.
|
||
|
||
## 📋 Prérequis
|
||
|
||
Testé sur Ubuntu/GNOME (Wayland). Paquets système nécessaires :
|
||
|
||
- `python3-gi`, `python3-gi-cairo`
|
||
- `gir1.2-gtk-3.0`
|
||
- `gir1.2-webkit2-4.1`
|
||
- `gir1.2-ayatanaappindicator3-0.1`
|
||
- `gir1.2-notify-0.7`
|
||
- `gir1.2-rsvg-2.0` (uniquement pour générer les icônes)
|
||
|
||
Installation en une commande :
|
||
|
||
```
|
||
make deps
|
||
```
|
||
|
||
## 📥 Installation
|
||
|
||
```
|
||
make install
|
||
```
|
||
|
||
Installe l'application pour l'utilisateur courant dans `~/.local` (binaire,
|
||
icônes, fichier `.desktop`). Assurez-vous que `~/.local/bin` est dans votre
|
||
`PATH` (c'est le cas par défaut sur la plupart des distributions GNOME).
|
||
|
||
Pour une installation système (tous les utilisateurs) :
|
||
|
||
```
|
||
sudo make install PREFIX=/usr/local
|
||
```
|
||
|
||
### 📦 Paquet .deb
|
||
|
||
```
|
||
make deb
|
||
sudo apt install ./dist/assembly-player_*.deb
|
||
```
|
||
|
||
Génère un paquet Debian autonome (`dist/assembly-player_<version>_all.deb`)
|
||
avec toutes les dépendances déclarées, prêt à installer ou à partager.
|
||
|
||
## ▶️ Utilisation
|
||
|
||
Lancez `assembly-player` depuis le terminal, le menu d'applications, ou
|
||
cliquez sur l'icône **Lecteur de sessions**.
|
||
|
||
1. La fenêtre s'ouvre sur le lien d'assemblée configuré (par défaut, celui
|
||
fourni à la création du projet).
|
||
2. L'application choisit automatiquement la bonne session à ouvrir (reprise,
|
||
ou première session si c'est la première fois) et se positionne au bon
|
||
endroit.
|
||
3. Cliquez une fois sur ▶ dans la vidéo pour démarrer (voir limitation
|
||
ci-dessus). Ensuite, tout est automatique.
|
||
4. Fermer la fenêtre (croix) coupe la lecture et **quitte complètement**
|
||
l'application. Pour la garder active en arrière-plan sans fenêtre visible,
|
||
utilisez « Masquer la fenêtre » dans le menu de l'icône (au lieu de la
|
||
croix) ; « Afficher la fenêtre » la fait réapparaître.
|
||
|
||
### 🔗 Changer le lien de l'assemblée
|
||
|
||
Bouton ☰ dans la fenêtre, ou clic droit sur l'icône de la barre des tâches →
|
||
« Changer le lien de l'assemblée… ».
|
||
|
||
### ⏰ Démarrage automatique au démarrage du PC
|
||
|
||
Cochez « Lancer automatiquement au démarrage du PC » dans les Paramètres (ou
|
||
le menu de l'icône), ou en ligne de commande :
|
||
|
||
```
|
||
make autostart-enable
|
||
make autostart-disable
|
||
```
|
||
|
||
Au démarrage du PC, l'application se lance réduite dans la barre des tâches et
|
||
reprend automatiquement à l'endroit où vous vous étiez arrêté (un clic sur ▶
|
||
reste nécessaire, voir plus haut).
|
||
|
||
### 🖥️ Plein écran
|
||
|
||
Bouton dédié dans la fenêtre, touche `F11`, ou menu de l'icône.
|
||
|
||
En plein écran, la barre du haut (avec le bouton ☰ Paramètres) est masquée —
|
||
c'est normal, GTK fait disparaître la barre de titre dans ce mode. Pour
|
||
revenir en fenêtré ou ouvrir les Paramètres sans repasser par la souris :
|
||
|
||
- `F11` : bascule plein écran / fenêtré (fonctionne même si la vidéo a le
|
||
focus clavier).
|
||
- `F10` : ouvre directement les Paramètres, même en plein écran.
|
||
|
||
Une notification rappelle ces deux raccourcis à chaque entrée en plein écran.
|
||
|
||
## 🗂️ Emplacement des données
|
||
|
||
- Configuration (lien, options) : `~/.config/assembly-player/config.json`
|
||
- Progression de lecture (par assemblée) : `~/.local/state/assembly-player/state.json`
|
||
- Démarrage automatique : `~/.config/autostart/assembly-player.desktop`
|
||
|
||
## 🗑️ Désinstallation
|
||
|
||
```
|
||
make uninstall
|
||
```
|
||
|
||
## 💻 Développement
|
||
|
||
```
|
||
make test # vérifie que le code Python compile
|
||
make run # lance l'application depuis les sources
|
||
make icons # régénère les icônes PNG depuis le SVG source
|
||
make deb # génère un paquet .deb dans dist/
|
||
```
|
||
|
||
Icône source (vecteur) : `assembly_player/icons/assembly-player.svg`.
|
||
|
||
## 🛠️ Dépannage
|
||
|
||
- **L'icône n'apparaît pas dans la barre des tâches** : sur GNOME/Wayland,
|
||
l'extension GNOME Shell « AppIndicator and KStatusNotifierItem Support »
|
||
doit être activée.
|
||
- **`assembly-player` introuvable après `make install`** : vérifiez que
|
||
`~/.local/bin` figure dans votre `$PATH` (`echo $PATH`).
|
||
- **La vidéo ne démarre jamais** : cliquez directement sur le bouton ▶ affiché
|
||
dans la vidéo (voir « Limitation connue » ci-dessus).
|
||
- **La liste des sessions ne se met pas à jour** : le site stream.jw.org a pu
|
||
changer sa structure de page ; ouvrez une issue/PR sur le dépôt du projet.
|
||
- **Impossible de revenir aux Paramètres en plein écran** : appuyez sur `F10`
|
||
(ouvre directement les Paramètres) ou `F11` (revient en fenêtré), ou passez
|
||
par le menu de l'icône de la barre des tâches.
|
||
- **Image noire ou figée (mais le son continue) en changeant de session** :
|
||
bug de compositing GPU connu de WebKitGTK. Depuis la version 1.0.4,
|
||
l'accélération matérielle de la page est désactivée pour l'éviter
|
||
structurellement. Si ça se reproduit malgré tout, basculer une fois en
|
||
plein écran (`F11`) puis revenir force un rafraîchissement de l'image ; et
|
||
n'hésitez pas à signaler le modèle de carte graphique/pilote utilisé.
|