From 2e43c0ff49089f3e41d360f94f2f4519e9d60ad6 Mon Sep 17 00:00:00 2001 From: Johnny Date: Mon, 13 Jul 2026 09:28:41 +0200 Subject: [PATCH] first commit --- README.md | 176 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 176 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..8279bc7 --- /dev/null +++ b/README.md @@ -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é.