Gear S3 Store — un CLI Python pour installer apps et cadrans automatiquement

Août 2025 · Lecture ∼7 min

Dans l'article précédent, j'expliquais comment installer des apps sur une Gear S3 via SDB après la fermeture du Galaxy Store. Mais la méthode manuelle — télécharger un .wgt, lancer sdb push, lancer pkgcmd — est répétitive et rebutante pour la plupart des utilisateurs.

J'ai donc décidé de construire quelque chose de plus abouti : un store en ligne associé à un script CLI qui automatise toute la chaîne, du choix du cadran à son installation sur la montre.


Le store : gearS3.jnk.ovh

Le point de départ, c'est 113 fichiers .wgt éparpillés sur mon disque : 23 apps Samsung et 90 cadrans, tous signés, tous compatibles avec la Gear S3 (SM-R770 sous Tizen 4.0). J'avais besoin d'une interface pour les parcourir.

J'ai monté un site statique en PHP (un seul fichier index.php, selon la convention des autres sites du serveur). La mécanique est simple : le PHP scanne les dossiers apps/ et watchfaces/, lit le tizen-manifest.xml de chaque .wgt pour en extraire le nom officiel, et affiche le tout dans une grille Bootstrap-like.

Chaque fiche contient : le nom, un badge (App Samsung / Cadran), la taille du fichier, une description, une preview extraite automatiquement du shared/res/*.png du package, et un bouton de téléchargement.

Les descriptions ? Je les ai écrites manuellement — 23 en français, puis 113 traduites en anglais. Un fichier PHP avec deux tableaux associatifs. Basique mais efficace.

Côté technique :


L'API JSON

Le store web est sympa, mais l'objectif était de permettre l'installation automatique. J'ai donc ajouté une api.php qui expose les 113 items en JSON structuré avec l'URL directe de chaque fichier :

GET https://gearS3.jnk.ovh/api.php

{
  "items": [
    {
      "name": "Pixel",
      "type": "watchface",
      "size": 402000,
      "desc": "Cadran Pixel art...",
      "url": "https://gearS3.jnk.ovh/watchfaces/Pixel.wgt"
    }
  ],
  "total": 113
}

Cette API est le pont entre le store et le script CLI.


Le script CLI : gearS3.py

Le vrai morceau. Je voulais un outil que n'importe qui puisse lancer — Windows, Linux ou Mac — sans avoir à installer des dépendances, sans compiler, sans pip.

Le choix s'est porté sur Python 3. Tout le code utilise uniquement la bibliothèque standard : urllib pour le réseau, subprocess pour les appels SDB, json pour l'API, pathlib pour les chemins. Zéro dépendance externe.

Fonctionnement

  1. Le script vérifie si SDB (Samsung Debug Bridge) est présent. Si non, il le télécharge automatiquement depuis le store — Linux ou Windows, détecté via platform.system().
  2. Il interroge l'API et affiche une interface interactive paginée avec navigation, filtres (apps / watch faces), et recherche textuelle.
  3. L'utilisateur tape le numéro d'un item → le script demande l'IP de la montre (mémorisée pour la session) → connecte SDB → télécharge le .wgt → le push sur la montre → lance pkgcmd -w -i -t wgt -p.
  4. Les sorties de SDB sont streamées en temps réel. L'utilisateur voit le push progresser puis l'installation se dérouler.

Détails techniques notables


Hébergement de SDB

Pour éviter aux utilisateurs d'installer le Tizen Studio (plusieurs Go), j'héberge directement les binaires SDB sur le store :

Le script les télécharge automatiquement dans le dossier courant. L'utilisateur n'a rien à installer à la main.


Le rôle de l'IA

Ce projet a été développé avec OpenCode (Deepseek V4 Flash), orchestrant plusieurs agents spécialisés :

L'IA a permis de passer de l'idée au produit fonctionnel en une session de travail, là où un développement manuel aurait pris plusieurs jours — surtout sur la partie extraction des métadonnées et la rédaction des descriptions.


Liens


Conclusion

Ce projet était intéressant à plusieurs niveaux. Technique d'abord : manipuler des packages Tizen, comprendre SDB, construire une API, écrire un CLI multiplateforme. Mais aussi produit : le store répond à un vrai besoin — la communauté Gear S3 est active et cherche des solutions de sideloading depuis la fermeture du Galaxy Store.

Pour un recruteur, ce projet démontre : capacité à livrer un produit complet (frontend + API + CLI + infra), maîtrise de Python et PHP, conscience des contraintes multiplateformes, et autonomie sur toute la chaîne — du scan du filesystem au déploiement Apache.

Le code source du site et du script est accessible en direct : pas de repo privé, pas de démo factice. Ce qui est décrit ici tourne sur un vrai serveur, avec de vrais utilisateurs.

← Retour au blog