Hello There, Guest! Register
Enjoy our site and services? You may donate to help fund server and domain costs. Donate Here for special benefits. You have donated $

Thread Rating:
  • 2 Vote(s) - 4.5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[WIP] AUTODB DELUXE
#1
Salut à tous,

Je me propose de continuer à améliorer le script initié par Yoshi, j'ai pas mal d'idées. Mais je serai étonné que personne n'ai déjà fait quelque chose à ce sujet !

Voici ce que je souhaite faire :

- on ajoute des fichiers .bin sous CARTS (dans un premier puis ensuite avec les BOOKS)
- on lance un update autodb
- tous les jeux sont exécutables (uniteid), possèdent une icone, etc.

Ce que j'ai déjà fait :

- mise à jour automatique de l'uniteid

Ce que je suis en train de faire :

- création d'une base CARTS dans un fichier db_carts (carts_id, name_id carts_label, carts_desc, icon_file) où name_id=filename.bin + *.ico sous LLN/ICONS
- le script scan les fichiers sous CARTS puis, pour chacun de ces fichiers calcul la clé MD5. Avec la clé MD5, il cherche si un jeu correspond dans le fichier db_carts
- s'il trouve un jeu, il l'ajoute en mettant les informations et ajoute l'icone
- sinon il utilise le nom du fichier (qu'il faudra renommer pour coller avec les données du fichier)

Du coup, l'utilisateur garde la main sur le fichier pour modifier les icones ou les noms si ça ne lui convient pas.

Savez-vous s'il est possible de chopper l'icone d'une cartouche ? Histoire que le pack que je suis en train de construire soit identique. Là je compte sur la communauté pour me fournir un max d'info, le mieux pour démarrer serait un copie d'écran de l'icone des jeux cartouches (pour voir le titre et positionner exactement le même).

Je ne sais pas encore si cela est possible car je n'ai pas encore pu regarder dans les entrailles de la bête notamment si les commandes que j'appelle fonctionne. Je vais commencer par chopper toute l'arborescence et je verrai bien.

Je vais voir aussi pour supprimer l'installation de hijack qui semble superflu. Pour le coup ça laisse libre un bouton (puisque le bouton camera n'est pas disponible).

Dans l'idéal il faudrait faire un firmware modifié qui intégré autodb et cette base avec un addon possible sous forme de fichier sur la carte SD.

Voilà, je ne donne aucune date pour le moment ne sachant pas quand j'aurai le temps de m'y consacrer calmement.

je donnerai des infos au fur et a mesure.
Reply
#2
+1000 pour le projet.
Merci pour l'initiative
Reply
#3
I had been thinking about making a windows app that will scan the SD card and auto build the databases. Mick has done one, but has a few bugs. I had also thought about making an online icon repository where people can upload icons to and the the app will auto download the icons and use them when building the databases. Or possibly even scrape the official innotab site for the icons and use those.
Reply
#4
Ce message pour vous signaler que j'ai peaufiné la v0.3. La version sera testée ce soir et si tout va bien, je vais la publier.

Idéalement, il faudrait que des contributeurs disposant d'une Storio/Innotab 3s fassent des tests de leur coté puis me remontent les problèmes rencontrés.

Sinon, je vais aussi tester la v0.4 qui integre la mise à jour uniteid des Games, je suis un peu moins serein mais on ne sait jamais ! Smile
Reply
#5
Ben écoute bon courage à toi, moi j'ai du temps libre asser souvent mais je maitrise pas encore tout, je lit les différents poste j'applique parfois ça marche parfois ça marche pas mais je suis chaud pour te donner un coup de main mais il faut me dire ce que tu as besion et je suis prêt à te rendre service car je n'ai pas pu participer aux dons pour que je c pas qui puisse acheter la storio 3s et qu'il la flash car c'était déjà finis quand j'ai trouvé ce forum
Tiens moi au jus
Reply
#6
Grace au pack de dav, j'ai pu tester hier soir le script en V3 et corrigé quelques oublis Smile

Par contre, je me retrouve coincé et là je vais avoir besoin de contacter des utilisateurs qui ont déjà fait du dev sur la storio.

Dans le script j'appelle une commande de base du systeme unix, le grep

C'est une commande fondamentale pour le fonctionnement du script puisque une fois la clé MD5 calculée, le script récupère la valeur de cette clé puis fait une recherche dans le fichier pour récupérer la ligne correspondante. (grep md5 db_carts.txt)

une fois la ligne récupérée, on affecte chacun des champs : champ 2 = nom du fichier, champ3 = titre etc. Ces éléments sont ensuite poussés dans la base de donnée pour ajouter le jeu.

Tout ça pour dire que le script ne fonctionne pas et que j'ai testé pas mal de truc sans y arriver. C'est peut-être tout con mais je ne connais pas assez la storio pour m'en sortir seul.

Je fais donc appelle à un ami (même anglophone, je me débrouillerai).
Reply
#7
le plus habilité à te répondre sera isomick, tu le trouveras sur l'irc quasi tout le temps par contre c'est un english.

sinon essaye d'envoyer un mail à yoshi57 , c'est lui qui a créé autodb à la base
Reply
#8
pour le mail à yoshi57 j'ai déjà essayé de le contacter il y a environ 1 semaine...mais pas de réponse
Mais ça vaut le coup de réessayé
Reply
#9
Wink 
Hello à tous.
Ravi de voir que mon petit script est maintenant bien utilisé avec des projet d'amélioration! Heart

davbarr: désolé, je n'ais pas du voir ton mail. MP par ici alors Wink

Sinon j'avais également l'intention d'apporter quelque petites améliorations. Du coup je vous les donnent ici:

  1. Détection du model pour avoir le même script sur toute les Innotab/Storio. Cool
    De ce que j'ai vu, seul le fichier de la base de donnée change. Correct?
    PHP Code:
    dbpath="/vp_mnt/sd/LLN/Innopad_sd.db"
    dbpath_IT3S="/vp_mnt/sd/LLN/Innopad_wf.db"

    getModel(){
        
    IOPIN_D26=$(readio ch=D pin=26)
        
    IOPIN_D27=$(readio ch=D pin=27)

        if [ 
    "${IOPIN_D27}${IOPIN_D26}"01" ]; then
            
    #IT2011 (1268) InnoTab
            
    model "InnoTab(R)"
        
    elif "${IOPIN_D27}${IOPIN_D26}"10" ]; then
            
    #IT2013 (1578,1588)
            
    if expr "$vtechBootPara'.*@WIFI,.*' > /dev/null then
                model
    ="InnoTab3S(R)"
                
    dbpath $dbpath_IT3S
            elif expr 
    "$vtechBootPara'.*@BBNEW,.*' > /dev/null then
                model
    ="InnoTab3(R) Baby"
            
    else
                
    model="InnoTab3(R)"
            
    fi
        
    else
            
    #IT2012 (1368,1468,1568)
            
    if expr "$vtechBootPara'.*BB,.*' > /dev/null then
                model
    ="InnoTab2(R) Baby"
            
    elif expr "$vtechBootPara'.*@WIFI,.*' > /dev/null then
                model
    ="InnoTab2S(R)"
            
    else
                
    model="InnoTab2(R)"
            
    fi
        fi
    }
    getModel
    # et dans showmenu, pour afficher le résultat
        
    echo "Running on $model">/testfifo 
  2. Récupération automatique du UnitEID sur la tablette.
    Uniquement tester sur Storio2.
    Utilité toute relative face à la solution qui à déjà été mise en place car il faut tout de même déjà l'avoir pour installer/lancer autodb Undecided
    PHP Code:
    uppers=ABCDEFGHIJKLMNOPQRSTUVWXYZ
    lowers
    =abcdefghijklmnopqrstuvwxyz
    uc
    (){ #usage: uc "some string" -> "SOME STRING"
        
    i=0
        
    while ([ $i -lt ${#1} ]) do
            
    CUR=${1:$i:1}
            case 
    $lowers in
                
    *$CUR*)CUR=${lowers%$CUR*};OUTPUT="${OUTPUT}${uppers:${#CUR}:1}";;
                
    *)OUTPUT="${OUTPUT}$CUR";;
            
    esac
            i
    =$((i+1))
        
    done
        
    echo "${OUTPUT}"
    }
    getEID(){
        if [ ! -
    /vp_mnt/sd/uniteid.md5 ]; then
            dd bs
    =1 skip=17494528 count=28 if=/dev/sdcarda3 of=/vp_mnt/sd/uniteid
            uniteid
    ="`md5sum /vp_mnt/sd/eid | head -c 32`"
            
    #uniteid=${uniteid^^} # not working :(
            
    uc $uniteid > /vp_mnt/sd/uniteid.md5
        fi
        uniteid
    ="`cat /vp_mnt/sd/eid.md5 | head -1`"
    }
    getEID 

davbarr: (EDIT: je corrige! c'est pas à moi mais à b0bba que tu t'adresses! C'est lui qui a les compétences de programmation)
Concernant ton problème de grep, je ne l'ai pas utilisé. En regardant rapidement nos amis de Vtech, 2 petites utilisations:
PHP Code:
eval `tr -s ' \t' '\n' < /proc/cmdline | grep '^vtech.*=*'`
swapsize=`grep "^$BOOTDEV_PART_SWAP" /proc/swaps | awk '{print $3;}'

Après, le bash utilisé n'est pas des plus récent, et est donc très "tatillons".
Le plus emmerdant pour choper l'EID à été de le passer en majuscule!
En fait je récupère le "vrai" EID sur la tablette. Et ensuite on calcul son md5, c'est celui-ci qu'il faut mettre dans la bdd.
Sauf que md5sum me sort des minuscules. Donc normalement un petit ${uniteid^^} doit le sortir en majuscule, du moins en Bash4. Par contre, cette ligne suffit pour tout bloquer sur la storio (Bad substitution).Angry
Donc il faut ruser, d'ou la fonction uc Undecided

En premier, assure toi bien d'avoir cerner la commande précise qui bloque.

Sinon, pour ma part, j'essaye de travailler sur une très grosse surprise (la base est la mais il manque tout le reste).
Et une deuxième, pour faciliter encore plus la vie, surtout pour les nouveaux, mais je cherche à avoir au final un truc tout simple/tout auto qui prend beaucoup de temps de recherche.
Et malheuresement, j'ai très peu de temps de libre
Reply
#10
(01-22-2014, 04:10 PM)yoshi Wrote: Hello à tous.
Ravi de voir que mon petit script est maintenant bien utilisé avec des projet d'amélioration! Heart

Mes compétences en programmation sont loin d'égaler les tiennes, je ne suis qu'un amateur mais j'arrive à produire des choses qui fonctionnent Smile

(01-22-2014, 04:10 PM)yoshi Wrote: [*]Détection du model pour avoir le même script sur toute les Innotab/Storio. Cool
De ce que j'ai vu, seul le fichier de la base de donnée change. Correct?

Oui le nom du fichier db change mais aussi la casse de la structure des dossiers :

LLN
-APPS
--Books
--Games
--Other
-MOVIE
-MUSIC
-PHOTO

(01-22-2014, 04:10 PM)yoshi Wrote: [*]Récupération automatique du UnitEID sur la tablette.
Uniquement tester sur Storio2.
Utilité toute relative face à la solution qui à déjà été mise en place car il faut tout de même déjà l'avoir pour installer/lancer autodb Undecided

C'est important pour ensuite l’insérer lors de l'ajout des jeux. Dans la solution que j'ai proposé, on utilise soit le uniteid d'un mp3 poussé via explorapark soit dans un fichier texte.
Du coup, tu me donnes une nouvelle idée, utiliser le uniteid de autodb plutot que du mp3.

(01-22-2014, 04:10 PM)yoshi Wrote: Concernant ton problème de grep, je ne l'ai pas utilisé. En regardant rapidement nos amis de Vtech, 2 petites utilisations:
PHP Code:
eval `tr -s ' \t' '\n' < /proc/cmdline | grep '^vtech.*=*'`
swapsize=`grep "^$BOOTDEV_PART_SWAP" /proc/swaps | awk '{print $3;}'

Je vais tester avec cette syntaxe, de mémoire la clé MD5 dans mon grep n'est pas entre quote (puis ça tombe dans l'exemple il y a aussi un awk)
C'est exactement ce qu'il me fallait.

Ca devrait être un truc du genre :

PHP Code:
title=`grep "^$CHECKSUM$db_file | awk -F"," '{print $3;}'

(01-22-2014, 04:10 PM)yoshi Wrote: Après, le bash utilisé n'est pas des plus récent, et est donc très "tatillons".

Ce qui me fait perdre est mon temps est que je ne peux pas tester les commandes en live. Je dois à chaque fois redemarrer la console, relancer autodb...

(01-22-2014, 04:10 PM)yoshi Wrote: Le plus emmerdant pour choper l'EID à été de le passer en majuscule!
En fait je récupère le "vrai" EID sur la tablette. Et ensuite on calcul son md5, c'est celui-ci qu'il faut mettre dans la bdd.
Sauf que md5sum me sort des minuscules. Donc normalement un petit ${uniteid^^} doit le sortir en majuscule, du moins en Bash4. Par contre, cette ligne suffit pour tout bloquer sur la storio (Bad substitution).Angry
Donc il faut ruser, d'ou la fonction uc Undecided

J'ai eu le même problème pour le calcul de la clé des jeux mais du coup j'utilise l'option -i de grep

(01-22-2014, 04:10 PM)yoshi Wrote: En premier, assure toi bien d'avoir cerner la commande précise qui bloque.

Je pense maintenant que ce n'est pas la commande grep qui pose réellement problème mais plutôt la syntaxe accepté par le bash de la storio.

Merci pour tout, j’espère que ce sera la solution.
Reply


Forum Jump: