Tavotto
AI drew your research figure. Tavotto makes it publication-ready: edit matplotlib figures on a canvas, lay out in mm, check journal rules. Free, open source.
Une application web interactive et rapide permettant de rechercher, filtrer et télécharger des poses Bitmoji (Solo et Duo) en haute définition.
Translation pending
DesignJavaScript · HTMLGitHub @Kenny3231OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗🇫🇷 Français | 🇬🇧 English
Une application web interactive et rapide permettant de rechercher, filtrer et télécharger des poses Bitmoji (Solo et Duo) en haute définition.
.zip depuis l'interface web (limité par le navigateur).Cette fonctionnalité permet de télécharger automatiquement l'intégralité des poses et les fichiers de métadonnées directement dans votre stockage Home Assistant sans intervention manuelle.
Exécutez cette commande dans votre terminal Home Assistant (Add-on "Terminal & SSH") :
curl -sL "https://avatar-explorer.pages.dev/api/export?id1=VOTRE_ID&name1=Kenny&mode=solo&dir=bitmojis" | bash
[!NOTE] Le script généré ne contient que des URLs validées côté serveur. Chaque image doit provenir de
https://sdk.bitmoji.com/avec un jeu de caractères restreint : ni guillemet, ni$, ni backtick, ni\, ni espace. Chaque destination doit rester sous/config/www/. Une pose dont l'URL ne respecte pas ces règles est ignorée, et signalée en tête du script ainsi que dans l'en-tête HTTPX-Skipped-Items. Comme pour toutcurl | bash, vous pouvez d'abord inspecter le script en remplaçant| bashpar> script.sh.
| Paramètre | Description | Valeurs possibles |
|---|---|---|
id1 | (Requis) ID Bitmoji principal | Ex: 103719... |
id2 | ID Bitmoji ami (requis pour duo) | Ex: 284610... |
name1 | Dossier/Préfixe utilisateur 1 | Défaut: Utilisateur1 |
name2 | Dossier/Préfixe utilisateur 2 | Défaut: Utilisateur2 |
mode | Type de poses à récupérer | solo ou duo |
scale | Qualité de l'image (1x, 2x, 4x) | 1, 2, 4 |
dir | Dossier dans /config/www/ (sous-dossiers possibles avec /) | Défaut: bitmojis, ex: media/bitmojis |
lang | Langue du catalogue de poses | Défaut: fr. Voir langues disponibles |
| Code | Langue |
|---|---|
fr | Français (défaut) |
en | Anglais |
es | Espagnol |
fr-ca | Français (Canada) |
de | Allemand |
ja | Japonais |
ko | Coréen |
it | Italien |
pt | Portugais |
zh | Chinois |
tr | Turc |
pl | Polonais |
ro | Roumain |
el | Grec |
[!NOTE] Cette liste peut s'étendre avec le temps (cf.
SUPPORTED_LANGSdans functions/api/export.js). Chaque langue suppose l'existence d'un fichierpublic/templates_<lang>.json, généré par public/get_templates.js. Pour les langues à alphabet non-latin (ja,ko,zh,el), un champslugFallback(tag anglais correspondant) garantit que les noms de fichiers générés restent lisibles même quand le tag natif ne contient aucun caractère latin.
[!IMPORTANT] Pré-requis : Avant de lancer la commande, assurez-vous de créer manuellement vos dossiers de destination dans
/config/www/(ex:/config/www/bitmojis/Kenny/). Le script nécessite que les dossiers existent pour y déposer les fichiers.pnget.json.
aide.json)Le fichier aide.json est servi statiquement à la racine du site et expose entre autres la date du dernier import du catalogue. Utile pour qu'une application tierce (ex: Avatar Explorer HA) sache si elle doit relancer un import.
GET https://avatar-explorer.pages.dev/aide.json
{
"date_maj": "19 juillet 2026",
"last_updated_iso": "2026-07-19T10:10:28.730Z",
"stats": {
"fr": { "solo": 1261, "duo": 614 },
"en": { "solo": 1975, "duo": 1050 },
"es": { "solo": 1278, "duo": 607 },
"...": { "solo": "...", "duo": "..." }
},
"guide": {
"fr": "Bienvenue dans la Forge Bitmoji ! ...",
"en": "Welcome to the Bitmoji Forge! ...",
"es": "¡Bienvenido a la Forja Bitmoji! ...",
"...": "..."
}
}
| Champ | Type | Description |
|---|---|---|
date_maj | string | Date du dernier import, formatée en français (affichage uniquement, ne pas parser). |
last_updated_iso | string (ISO 8601) | Date du dernier import, à utiliser pour toute comparaison programmatique. |
stats.<lang> | { solo: number, duo: number } | Nombre de poses disponibles pour la langue <lang> (un des 14 codes ci-dessus), par mode. |
guide.<lang> | string (Markdown) | Texte affiché dans le centre d'aide de l'application, traduit pour la langue <lang>. |
const { last_updated_iso } = await fetch('https://avatar-explorer.pages.dev/aide.json').then(r => r.json());
const remoteDate = new Date(last_updated_iso);
if (remoteDate > localLastImportDate) {
// déclencher un nouvel import
}
[!NOTE] Le catalogue est recollecté chaque lundi (cron GitHub Actions), à chaque déclenchement manuel du workflow
update_data.ymlet à chaque push qui modifie le script de collecte.last_updated_isoetdate_majn'avancent que si le contenu d'au moins untemplates_<lang>.jsona réellement changé (empreinte SHA-256 comparée avant et après). Une collecte qui ne ramène rien de nouveau ne déclenche donc aucune resynchronisation chez les consommateurs. Un simple réordonnancement des poses par Bitmoji compte comme un changement, car il peut décaler les suffixes_2,_3des noms de fichiers.
git clone https://github.com/Kenny3231/Avatar_Explorer.git
cd Avatar_Explorer
index.html dans votre navigateur.npm run collect recollecte les templates_*.json, npm run collect:dry fait la même chose sans rien écrire, et npm run check valide hors ligne les fichiers déjà présents.