RETROBAT Official Board
Would you like to react to this message? Create an account in a few clicks or log in to continue.

LocalStore (batch+powershell)

2 posters

Go down

LocalStore (batch+powershell) Empty LocalStore (batch+powershell)

Post by Aynshe 07/02/23, 07:50 pm

Salut,

Je ne suis absolument pas dev, ce que j'ai fait n'est absolument pas fiable et réalisé avec du vieux batch et du powershell XD... j'ai du faire appel à ChatGPT pour dépatouiller les scripts, il devrait fonctionner si la base gamelist.xml est propres et cohérant avec le nom de dossier des jeux qui doit être équivalent au nom de la balise <name>.

Le batch et le PowerShell ne sont pas clean de certaines commandes testées et avec des erreurs..et je ne pourrais probablement pas corriger/résoudre certains problèmes.

J'ai aussi fonctionné un peu l'envers et la misérable interface que j'ai faite aurait tu être travaillée dès le départ pour en faire un lien direct et non pas pour faire de l'exclusion des dossiers...càd il faut sélectionner les jeux à ne pas compacter, ce qu'il va placer une exception non lu par le script..., l'inverse serait mieux (à voir, car je pense qu'il est possible de le faire...mais je met en pause la recherche).

Pour les utilisateurs avertis qui n'ont pas peur de tester Smile, je vous propose si vous souhaitez de jouer avec ou voir en faire quelques chose de plus efficace/propre.
Si vous souhaitez tester/vérifier j'éditerais le post pour ajouter un lien.

Il y a un dossier "Build-Packages" et un fichier "StartFirst.bat" à coller à la racine du dossier Retrobat (pour le test il y a dans l'archive un dossier fake de rom avec des jeux fictif et dossier emulationstation avec l'exemplaire du fichier batocera-store.cfg qui permet de pointer vers store.xml sur un serveur http).
Et un exécutable LocalStore.exe (nommé initialement web.exe) source : https://github.com/maditnerd/WinSimpleHTTP , il permet de créer en un clic un serveur http local sur le port 8000 non accessible par défaut en extérieur si vous n'ouvrez pas les ports de votre réseau. (pour test, donc aucun idée de son comportement à charge constante).


Ce que vont faire les scripts :

1ere étape
- exécuter StartFirst.bat qui va exécuter SelectApp.ps1, le .bat vous demandera de bypass l'exécution non autorisée par défaut sous windows (ce n'est qu'une simple commande, normalement devrait fonctionner, sinon il faut donner les droits https://www.it-connect.fr/powershell-get-executionpolicy-et-set-executionpolicy).
- Aller dans le dossier cible depuis l'interface, marquer les dossiers jeux à ne pas compresser (sans sélectionner images, vidéos, manuals)
- cliquer cliquer sur "Executer Build-Packages"
- choisir le systeme de jeu
- Le script liste les dossiers jeux du system sélectionné (en l'état pour windows .pc .win et teknoparrot .teknoparrot .game)
- Le script liste les dossiers images, vidéos, manuels
- Le script compacte les jeux dans une archive individuel pour chaque jeu avec leurs médias et leurs dossiers, le tout dans l'arborescence roms\nomdusystem\    (le nom des médias doit correspondre au jeu, avant le - du marqueur du type)
- Un dossier "Compressed" est créer, les noms d'archives ayant un ou des espaces (logiquement) sont comblés par underscrore (_), les archives y sont déplacées avec les fichiers pour la création du store.xml.

Ceci fait, le dossier Compressed s'ouvre.

2ème étape
- exécuter Run_build_bypass.bat qui lui même exécutera Batocera-Store_xml_build.ps1, le .bat vous demandera de bypass l'exécution non autorisée par défaut sous windows (ce n'est qu'une simple commande, normalement devrait fonctionner, sinon il faut donner les droits https://www.it-connect.fr/powershell-get-executionpolicy-et-set-executionpolicy).
- taper le nom du système et le groupe, ici windows et windows ou teknoparrot et teknoparrot (important de pas faire d'erreur de nom)
- Corriger le xml selon erreur...à voir, si ca bloque qu'il ne s'agit pas d'un caractère, bah je sais pas il faut chercher Smile
- à la fin le fichier store.xml est créé.
- placer dans votre serveur http les jeux compressée avec le fichier store.xml à la racine, éditer le fichier \emulationstation\batocera-store.cfg avec l'ip et la dir vers le xml, ouvrez le store de téléchargement et vos fichiers devraient apparaitre dans une nouvelle catégorie.

Si vous avez des crainte sur mes script (compréhensible) sous windows 11 >> Go "Windows Sandbox" >> copier/coller...lisez les scripts, exécutez, vérifiez les fichiers en toute sérénité Smile.


nota :
- je ne l'ai pas encore mis en application, seulement vérifié la bonne lecture depuis le store dans téléchargement, il faudrait à minima faire un nouveau retrobat vierge pour y placer des jeux de test....
- Erreur avec le script qui génère le store.xml si il y a un caractère & dans le nom d'un jeu dans le gamelist (je n'ai pas testé d'autre).
- la compression est seulement en mx0, je n'ai pas pu trouver une solution pour récupérer le poids du dossiers complet de l'archive avant compression pour l'intégrer au store.xml...donc en l'état le poids archive est quasiment équivalent aux fichiers initial (j'aimerais trouver une solution, pour compresser plus fort)
- à vérifier le comportement de la création du store.xml si le nom du jeu apparait plusieurs fois dans le gamelist.
- à vérifier....Autres XD


Aynshe
Aynshe

Messages : 335
Date d'inscription : 2022-03-18

Lorenzolamas likes this post

Back to top Go down

LocalStore (batch+powershell) Empty Re: LocalStore (batch+powershell)

Post by Lorenzolamas 07/02/23, 10:41 pm

pirate !
Lorenzolamas
Lorenzolamas
Admin

Messages : 2538
Date d'inscription : 2019-07-28

Aynshe likes this post

Back to top Go down

Back to top

- Similar topics

 
Permissions in this forum:
You cannot reply to topics in this forum