🇬🇧 Readme in English 🇬🇧
Une application Python QT pour gérer sa fabrique à histoires (fah) Lunii et Flam, avec les opérations de organisation / importation / exportation / téléchargement du firmware
pour Windows / Linux / MacOs 11
(compatible avec les archives STUdio, avec support de la conversion audio)
- Fah v1 et v2 (support complet)
- Fah v3 (l'export requiert les clés de la Fah)
- Flam (support partiel, tri des histoires et sauvegarde du firmware)
- L'application n'autorise plus d'exporter les histoires officielles.
- Le transcodage audio nécessite la présence de FFMPEG v6
- Lunii.QT
- Liens / Dépôts similaires
-
La barre de menu. Elle vous informera lorsqu'une mise à jour de l'application est disponible
(il suffit d'aller dans Menu About/Update to v2.X.X) -
L'emplacement de votre Lunii/Flam lorsqu'elle est connectée.
Le bouton à gauche relance la détection automatique. -
Actualisation de la base de données Officielle : Met à jour la liste des histoires et leurs descriptions depuis le Luniistore. Utilisez ce bouton lorsque certaines histoires officielles ne sont pas reconnues.
-
La liste de vos histoires avec l'UUID et le type d'histoire (DB).
L'UUID : Un identifiant unique permettant de lier les histoires à leur dossier sur la Lunii/Flam. Les huit derniers caractères de l'UUID composent le nom du dossier de l'histoire.DB signifie Base de données. Cette application prend en charge deux bases de données différentes
- O - Base de données Officielle de Lunii
(Toutes les métadonnées proviennent des serveurs de Lunii). - T - base de données Tierce, également connue sous Non officielles ou Custom
(Ces métadonnées ne peuvent pas être récupérées, elles sont complétées lors de l'importation de l'histoire)
- O - Base de données Officielle de Lunii
-
Dans la barre d'état, vous trouverez
- Votre SNU (numéro de série),
- La version du firmware de votre Lunii/Flam
- L'espace disponible sur la SD
- Le nombre d'histoires
-
Histoires cachées (les entrées grisées dans la liste) sont toujours physiquement présente dans l'appareil, mais ne seront pas visible par l'application Luniistore. De la sorte, les histoires non officielles ne seront pas supprimées lors de la synchronisation. N'oubliez pas de bien "cacher" vos histoires avant de cliquer sur "synchroniser" !
Keys | Actions |
---|---|
Ctrl+Up |
Déplace la ou les sélection(s) en première position |
Alt+Up |
Déplace la ou les sélection(s) vers le haut |
Alt+Down |
Déplace la ou les sélection(s) vers le bas |
Ctrl+Down |
Déplace la ou les sélection(s) en dernière position |
Ctrl+I |
Importe une nouvelle histoire |
Ctrl+S |
Exporte la sélection |
Ctrl+Shift+S |
Exporte toutes les histoires |
Ctrl+H |
Masquer/Démasquer les histoires sélectionnées |
Delete |
Supprime les histoires sélectionnées |
Ctrl+O |
Ouvre le dossier d'une Lunii/Flamm |
Ctrl+L |
Ouvre la fenêtre de debug |
F1 |
À propos de l'application |
F5 |
Réactualise les appareils |
- Détection automatique des Mises à jour
- Import / Export / Suppression des histoires
- Support des archives au format STUdio, et importez la base d'histoire de STUdio
- Réorganisez vos histoires dans votre ordre préféré
- Cachez les histoires
Dans le but de ne pas subir une suppression forcée des histoires non officielles durant la synchronisation avec l'application Luniistore, vous pouvez désormais "cacher" temporairement certaines histoires
(tous les fichiers sont conservés sur l'appareil) - Histoires perdues
Trois nouveaux outils sont proposés pour gérer vos histoires perdues.
(souvent suite à un crash d'une autre application 😜)
Vous pouvez :- les lister
(l'application tentera de réparer les histoires, en particulier les fichiers sur les Lunii v1/v2) - les récupérer (si elles sont saines)
- les supprimer (attention, les fichiers seront supprimés)
- les lister
- Récupération du Firmware pour votre appareil (cf. cette section)
Certaines histoires tierces utilisent des fichiers non MP3. Ils ne peuvent donc pas être installés tels quels sur Lunii. Cela nécessite une étape de transcodage. Ce processus supplémentaire est réalisé à l'aide de l'outil FFMPEG disponible ici
ATTENTION : le transcodage est très long, il faut être patient. C'est pourquoi vous devriez préférer le format .plain.pk qui utilise un format audio compatible.
NOTE : Désormais, et par défaut, FFMPEG 6.1.1 sera inclus dans les éditions portables et MSI de l'application sous Windows
Procedure:
- récupérez votre version de ffmpeg ici
- renommez là en
ffmpeg.exe
- copiez le fichier à côté de lunii-qt.exe
- |- lunii-qt.exe |- ffmpeg.exe
- redémarrez luni-qt
Méthode alternative (préférée):
- ouvrir un terminal powershell
- exécutez les commandes suivantes pour installer le Scoop Package manager
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression
- installez ffmpeg avec
scoop install ffmpeg
- redémarrez luni-qt
- ouvrir un terminal
- exécutez la commande suivante :
sudo apt-get install ffmpeg
- redémarrez luni-qt
Afin de simplifier l'installation de ffmpeg, il est recommandé d'utiliser Bew, https://brew.sh/
- ouvrir un terminal
- exécutez la commande suivante
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- à la fin de l'installation, installez ffmpeg avec:
brew install ffmpeg
- redémarrez luni-qt
Dans l'application, le menu Tools
affiche l'état de la détection.
Lunii.QT vous offre la possibilité de sauvegarder et de mettre à jour votre Firmware sans vous connecter au LuniiStore (vous ne perdrez pas vos histoires chargées non officielles). Cette procédure est expérimentale mais jusqu'à présent personne n'a rencontré de problèmes.
NOTE 1: Pensez à garder une sauvegarde de votre firmware pour Lunii v3 et FLAMs, dans le cas d'une mise à jour qui casserait l'astuce des histoires tierces. Vous serez en mesure de rétrograder.
NOTE 2: Vous ne pouvez pas choisir la version du firmware. Vous n'obtiendrez que la dernière version disponible sur les serveurs de Lunii.
- Sélectionnez une Lunii
- Menu Tools/Get FW Update
- Vous serez invité à vous connecter
- Entrez vos identifiants Luniistore (ils ne sont pas sauvegardés pour des raisons de sécurité).
Vous pouvez vérifier ce point ici
Lines 468 to 475 in a8bd30e
- Choisissez un emplacement où sauvegarder votre firmware (deux fichiers pour une Lunii v1)
- Copiez-la dans le répertoire racine de votre lunii
- Renommez-le en
fa.bin
(et aussifu.bin
pour les Lunii v1)
-
|- .contents
|- .md
|- .pi
|- fa.bin
|- ... (other files)
- Éteindre, rallumer, attendre : TADA
(si vous reconnectez votre lunii sur votre pc, lefa.bin
devrait avoir été supprimé)
- Sélectionnez une Lunii
- Menu Tools/Get FW Update
- Vous serez invité à vous connecter
- Entrez vos identifiants Luniistore (ils ne sont pas sauvegardés pour des raisons de sécurité).
Vous pouvez vérifier ce point ici
Lines 468 to 475 in a8bd30e
- Choisissez un emplacement où sauvegarder vos firmwares (
update-main.enc
andupdate-comm.enc
) - Copiez-les dans le répertoire racine de votre Flam
-
|- etc/
|- str/
|- .mdf
|- update-main.enc
|- update-comm.enc
|- ... (other files)
- Éteindre, rallumer, attendre : TADA
(si vous reconnectez votre lunii sur votre pc, les*.enc
devraient avoir été supprimés)
NOTE : Les histoires Flam ne sont pas encore supportées
Filename : story_name.8B_UUID.plain.pk
Ciphering : None / Plain
Structure :
uuid.bin
ni
li.plain
ri.plain
si.plain
rf/000/XXYYXXYY.bmp
sf/000/XXYYXXYY.mp3
Filename :
LONG_UUID.v2.pk
LONG_UUID.v2.pk
LONG_UUID.pk
Ciphering : Generic Key
Structure :
00000000000000000000000000000000/ni
00000000000000000000000000000000/li
00000000000000000000000000000000/ri
00000000000000000000000000000000/si
00000000000000000000000000000000/rf/000/XXYYXXYY
00000000000000000000000000000000/sf/000/XXYYXXYY
Filename : 8B_UUID - story_name.zip
Ciphering : Generic Key
Structure :
uuid.bin
ni
li
ri
si
rf/000/XXYYXXYY
sf/000/XXYYXXYY
Filename : AGE+] story_title DASHED_UUID.zip
Ciphering : Generic Key
Structure : (same as .v1.pk / .v2.pk)
00000000-0000-0000-0000-000000000000/ni
00000000-0000-0000-0000-000000000000/li
00000000-0000-0000-0000-000000000000/ri
00000000-0000-0000-0000-000000000000/si
00000000-0000-0000-0000-000000000000/rf/000/XXYYXXYY
00000000-0000-0000-0000-000000000000/sf/000/XXYYXXYY
Filename : AGE+] story_title DASHED_UUID.7z
Ciphering : Generic Key
Structure :
00000000-0000-0000-0000-000000000000/ni
00000000-0000-0000-0000-000000000000/li
00000000-0000-0000-0000-000000000000/ri
00000000-0000-0000-0000-000000000000/si
00000000-0000-0000-0000-000000000000/rf/000/XXYYXXYY
00000000-0000-0000-0000-000000000000/sf/000/XXYYXXYY
Filename : AGE+] story_title DASHED_UUID.zip .7z
Ciphering : None
Structure :
assets/
stroy.json
thumbnail.png
- Fichier de configuration pour sauvegarder la configuration du menu (tailles / détails)
- Ajout d'une image à la liste des arbres ?
Commencer par cloner le dépot.
Préparer l'environnement virtuel pour le projet et installer les dépendances.
$ python3 -m venv venv
Passez à votre venv
- sous Linux
source venv/bin/activate
- sous Windows
.\venv\Scripts\activate.bat
Installer les dépendances
$ pip install -r requirements.txt
Linux a besoin d'une dépendance supplémentaire.
$ apt install libxcb-cursor0
$ pyside6-uic pkg/ui/main.ui -o pkg/ui/main_ui.py
$ pyside6-rcc resources.qrc -o resources_rc.py
$ python lunii-qt.py
NOTE : PyInstaller by its design generates executables that are flagged by AntiViruses. Those are false positives. cx_Freeze is an alternative that allows to avoid such false positives.
$ pip install pyinstaller
$ pyinstaller lunii-qt.spec
...
$ dist\lunii-qt
$ pip install cx_Freeze
$ python setup.py build_exe
...
$ build/exe.win-amd64/lunii-qt
- Double cliquez sur le fichier
lunii-qt
. - Vous devez voir apparaître le message d'erreur suivant :
Cliquez sur "OK" - Allez dans Préférences du système > Sécurité et confidentialité et cliquez sur l'onglet Général.
- En bas de la fenêtre, vous trouverez un message indiquant que
lunii-qt
est bloqué. Cliquez sur "Ouvrir quand même".
Si vous ne voyez pas ce message sur l'onglet Général, double cliquez de nouveau surlunii-qt
.
NOTE : Il est possible que vous deviez en premier cliquer sur le bouton "unlock" puis entrer votre nom d'utilisateur / mot de passe pour pouvoir cliquer sur "Ouvrir quand même". - Une nouvelle popup apparait
Cliquez sur "Ouvrir".
Si vous n'avez pas eu cette popup, retournez juste double cliquer sur le fichier. - Pour finir, un dernier message vous informera de la sorte
Cliquez sur "Ouvrir", et vous n'aurez plus ces avertissements à l'avenir.
Lors de l'utilisation de cette application, vous allez peut-être constater des hisoires marquées Unknown story (maybe a User created story)...
.
Il s'agit certainement d'une histoire tierce qui a été chargé par une autre application. Lunii.QT n'a donc
pas connaissance des métadonnées associées (Titre, Description, Image).
Il est possible de pallier ce problème de deux manières (au choix) :
- en important la base d'histoires de STUdio avec le menu
File/Import STUdio DB
- en glissant déposant l'archive de l'histoire dans l'application, comme pour la charger. Cette dernière étant déjà présente, Lunii.Qt ne va faire qu'analyser les métadonnées et les ajouter dans la base interne, en prenant soin de ne pas recharger l'histoire.
Cette application téléchargera une fois pour toutes la base de données des histoires officielles et toutes les images demandées dans le dossier dédié à l'application.
$HOME/.lunii-qt/official.db
$HOME/.lunii-qt/cache/*
En cas de problème, il suffit de supprimer ce fichier et ce répertoire pour forcer le rafraîchissement.
Afin de supporter l'exportation d'histoires depuis une Luniis v3, vous devez placer vos clés de périphérique ici :
%HOME%\.lunii-qt\v3.keys
$HOME/.lunii-qt/v3.keys
Il s'agit d'un fichier binaire avec 0x10 octets pour la clé et 0x10 octets pour l'IV.
magick convert logo.png -define icon:auto-resize="256,128,96,64,48,32,16" logo.ico
Merci à :
- olup pour l'aide sur le format des archives STUdio
- sniperflo pour le support de la v1 & debug
- McFlyPartages pour le debug sous Linux et ses contributions
- ceux que j'oublie.... 👍
- Lunii v3 - Reverse Engineering
- Lunii CLI tool
- STUdio - Story Teller Unleashed
- (GitHub) STUdio, Story Teller Unleashed
- Lunii Admin (Une alternative en Go de STUdio)
- Lunii Admin Web (même chose que précédemment, mais à partir d'un navigateur)
- Astuce de l'icone dans le workflow avec rcedit