Skip to content

Repository files navigation

Conteur

Fabriquez des cartes audio pour le lecteur Yoto de votre enfant.

Artwork preview

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.

🤖 Qui a écrit ce code

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.

Ce que les tests établissent, et ce qu'ils n'établissent pas

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.

✨ Ce que fait Conteur

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à.

🔎 Trouver des histoires

  • 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])

🛠️ Fabriquer

  • 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

📚 Ma collection

  • 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

🎨 Images

  • Choisir une icône dans le catalogue, ou en dessiner une (éditeur avec incrustation de texte et d'images)

⚙️ Le lecteur

  • 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

🖥️ Trois façons de s'en servir

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.

🛠️ Installation

With uv(x)

  1. Install uv

  2. 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
  3. 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 yoto to your path, test it out with

    yoto --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.

From source

  1. Clone the repository and change into it:

    git clone https://github.com/groquick92-dev/conteur.git
    cd conteur
  2. 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/activate

    Standard (fish):

    python -m venv .venv
    source .venv/bin/activate.fish

    Using uv (recommended if available):

    uv venv
    source .venv/bin/activate
  3. 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 --version and which python should point into .venv/.
    • macOS / Linux: use the system python3 if python is not available.
    • Alternative workflows: pipx or poetry can be used if preferred.

🧩 Extras

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]"

▶️ Usage

CLI / TUI

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 --help

asciicast asciicast

GUI

If installed, run the GUI via:

yoto gui

or:

gui

Otherwise, you can run from source using Python modules:

PYTHONPATH=src python -m yoto_up.gui

📜 License

MIT — see LICENSE for details.

About

Fabriquez et gérez les cartes audio du lecteur Yoto de votre enfant : domaine public, podcasts, YouTube, votre voix. Découpage en chapitres, abonnements, sauvegarde, télécommande. Les ajouts de ce fork ont été écrits par Claude (IA). Sans lien avec Yoto.

Topics

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages