first commit

This commit is contained in:
Johnny
2026-07-13 09:28:41 +02:00
commit 2e43c0ff49

176
README.md Normal file
View File

@@ -0,0 +1,176 @@
# 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.
## 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
```
## 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
```
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é.