Fabriquez des cartes audio pour le lecteur Yoto de votre enfant.
Conteur récupère des histoires — livres audio du domaine public, podcasts, vidéos, vos propres fichiers, votre propre voix — les met en forme et les envoie sur une carte. En ligne de commande, en terminal, ou dans une application de bureau en français.
Basé sur xkjq/yoto-up, sous licence MIT. Ce dépôt en est une version modifiée : interface repensée en français, import depuis LibriVox / podcasts / YouTube, outils audio, sauvegarde, abonnements, enregistrement vocal, télécommande du lecteur et routines. Le travail d'origine reste sous le copyright de son auteur ; voir LICENSE.
Projet indépendant, sans lien avec Yoto. « Yoto » est une marque de ses propriétaires respectifs.
Les ajouts de ce dépôt ont été écrits par Claude (Anthropic), au fil de quelques sessions dirigées par @groquick92-dev, qui en a formulé les demandes et tranché les choix.
| Écrit par Claude | 46 nouveaux modules, ~14 400 lignes sur 121 fichiers |
| Hérité de xkjq, non réécrit | ~35 000 lignes, soit 76 % du code Python |
En volume, le projet reste donc majoritairement l'œuvre de xkjq. La part écrite par une IA est celle qui a été ajoutée par-dessus.
304 tests passent, la CI est verte sur Windows et Linux. La couverture globale est de 20 %, très inégalement répartie :
| Couverture | Portée |
|---|---|
| 75 – 99 % | modules de logique ajoutés (naming, subscriptions, listening_log, routines, podcast_feed, librivox…) |
| 22 – 55 % | panneaux d'interface ajoutés |
| 0 % | base héritée (yoto.py, covers.py, tui.py) |
Un test construit l'application entière et visite les 16 écrans : aucun ne plante à l'ouverture. Cela ne dit rien de la justesse de chaque bouton.
La création de carte de bout en bout n'a jamais été exécutée contre un compte Yoto réel. Elle suit la documentation de l'API sans avoir été éprouvée. Une sauvegarde avant le premier usage est prudente.
L'application est rangée dans l'ordre où une carte prend forme : trouver de quoi la remplir, la fabriquer, puis s'occuper de ce qu'on a déjà.
- Domaine public — recherche dans le catalogue LibriVox et import direct des livres audio libres de droits
- Podcasts — une sélection de podcasts jeunesse francophones, et l'import de n'importe quel flux RSS par son adresse
- Depuis YouTube — extraction de la piste audio d'une vidéo ou d'une
playlist entière (nécessite l'extra
[youtube])
- Créer une carte — un assistant en quatre étapes, pensé pour quelqu'un qui n'a jamais fait ça
- Ma voix — enregistrement au micro, pour lire une histoire soi-même
- Outils audio — découper un livre audio en chapitres (par détection des silences ou d'après les repères présents dans le fichier), retirer les génériques répétés d'une série, harmoniser le volume entre les cartes, convertir une vidéo ou un format inhabituel, extraire la pochette
- Envois en cours — l'avancement des transferts vers le compte
- Mes cartes et Ma bibliothèque — pistes, chapitres, métadonnées
- Abonnements — une carte reliée à un flux, qui se complète toute seule quand un nouvel épisode paraît
- Réparer — passe la bibliothèque en revue et corrige ce qui cloche
- Sauvegarde — archive ZIP complète du compte
- Choisir une icône dans le catalogue, ou en dessiner une (éditeur avec incrustation de texte et d'images)
- Le lecteur — télécommande en direct : ce qui passe, lecture, pause,
volume (nécessite l'extra
[remote]) - Habitudes — rituel du soir (histoire, extinction différée, veilleuse) et ce que votre enfant écoute vraiment au fil des semaines
L'application de bureau (Flet) est l'entrée principale et la seule entièrement
traduite. La ligne de commande et l'interface terminal héritées du projet
d'origine restent disponibles et couvrent surtout la gestion des cartes ;
yoto --help en donne la liste à jour.
-
Run with uvx (without installing if you just want to try it out)[1]
Command line
uvx --from "git+https://github.com/groquick92-dev/conteur.git@main#egg=conteur" yoto [command]GUI
uvx --from "git+https://github.com/groquick92-dev/conteur.git@main#egg=conteur[gui]" yoto gui -
If you like it, install with uv tool[2]
uv tool install "git+https://github.com/groquick92-dev/conteur.git@main#egg=conteur"This should add the command
yototo your path, test it out withyoto --help
or if you want the GUI
uv tool install "git+https://github.com/groquick92-dev/conteur.git@main#egg=conteur[gui]"Then run
yoto gui
[1] uvx allows you to run a python tool/package without installation (by creating a temporary isolated environment).
[2] uv tool also supports upgrading the tool once installed, see their docs for more information.
-
Clone the repository and change into it:
git clone https://github.com/groquick92-dev/conteur.git cd conteur -
Create and activate a virtual environment
You can use the standard Python venv workflow, but uv is recommended
Standard (bash / zsh / sh):
python -m venv .venv source .venv/bin/activateStandard (fish):
python -m venv .venv source .venv/bin/activate.fishUsing
uv(recommended if available):uv venv source .venv/bin/activate -
Install the package and dependencies:
Using
uv(recommended):uv pip install -e .or with GUI support:
uv pip install -e .[gui]
Using standard pip:
pip install -e .or with GUI support:
pip install -e .[gui]
Quick checks and notes:
- Confirm the venv Python is active:
python --versionandwhich pythonshould point into.venv/. - macOS / Linux: use the system
python3ifpythonis not available. - Alternative workflows:
pipxorpoetrycan be used if preferred.
- Confirm the venv Python is active:
Deux fonctionnalités vivent en dehors de l'installation de base, parce qu'elles dépendent de choses que Conteur ne contrôle pas. Le reste de l'application démarre et fonctionne sans elles.
| Extra | Ce que ça ajoute | Pourquoi c'est séparé |
|---|---|---|
[youtube] |
L'écran Depuis YouTube | Repose sur yt-dlp, qu'il faut mettre à jour souvent pour qu'il continue de marcher |
[remote] |
L'écran Le lecteur | Parle à un point d'accès MQTT que Yoto ne documente pas et peut fermer |
uv pip install -e ".[gui,youtube,remote]"35 commandes, dont voici les familles. Le détail des options vit dans
--help, qui est généré depuis le code et ne peut donc pas être périmé :
yoto --help
yoto create-card-from-folder --help| Domaine | Commandes |
|---|---|
| Cartes | list-cards get-card create-content create-card-from-file create-card-from-folder (alias ccf) edit-card fix-card delete-card delete-cards versions merge-chapters expand-all-tracks |
| Import / export | export-card export-cards import-card family-library |
| Audio | normalize split-audio intro outro intro-outro |
| Images | get-public-icons get-user-icons search-icons search-yotoicons find-best-icons replace-default-icons upload-cover-image |
| Lecteur | get-devices get-device-status get-device-config |
| Divers | reset-auth paths gui |
Sans installer le paquet, depuis les sources :
PYTHONPATH=src python -m yoto_up.yoto --helpIf installed, run the GUI via:
yoto guior:
guiOtherwise, you can run from source using Python modules:
PYTHONPATH=src python -m yoto_up.guiMIT — see LICENSE for details.
