diff --git a/README.md b/README.md index bae399b..c9d663b 100644 --- a/README.md +++ b/README.md @@ -327,3 +327,17 @@ Le calcul lit `data/intermediate/minifigs_by_set.csv`, `data/raw/parts.csv` et ` - `data/intermediate/minifig_head_faces_by_character.csv` : volume et part par personnage. Les visuels `figures/step30/minifig_head_faces_timeline.png`, `figures/step30/minifig_head_faces_top_sets.png` et `figures/step30/minifig_head_faces_characters.png` montrent respectivement la trajectoire annuelle, le top des sets concernés et les personnages dotés de têtes dual-face. + +### Étape 31 : téléchargement des ressources visuelles (sets, minifigs, têtes) + +1. Renseigner `REBRICKABLE_TOKEN` dans `.env` (clé API Rebrickable). +2. `source .venv/bin/activate` +3. `python -m scripts.download_resources` + +Le script lit `data/intermediate/sets_enriched.csv`, `data/intermediate/minifigs_by_set.csv` et `data/raw/minifigs.csv`. Il récupère les URLs d'images de têtes via l’API Rebrickable `/api/v3/lego/parts/{part_num}/`, ajoute la colonne `part_img_url` à `data/intermediate/minifigs_by_set.csv`, puis télécharge : + +- `resources/{set_id}/set.jpg` : visuel du set (img_url). +- `resources/{set_id}/{known_character}/minifig.jpg` : visuel de la minifig complète. +- `resources/{set_id}/{known_character}/head.jpg` : visuel de la tête correspondante. + +Les requêtes API sont dédoublonnées, espacées (fair-use) et mises en cache dans `data/intermediate/part_img_cache.csv` pour reprise en cas d’interruption. Les images déjà téléchargées sont réutilisées localement pour éviter les requêtes répétées. diff --git a/figures/rebrickable/10756/set.jpg b/figures/rebrickable/10756/set.jpg new file mode 100644 index 0000000..3ea5c8c Binary files /dev/null and b/figures/rebrickable/10756/set.jpg differ diff --git a/figures/rebrickable/10757/Owen_Grady/head.jpg b/figures/rebrickable/10757/Owen_Grady/head.jpg new file mode 100644 index 0000000..e2259e3 Binary files /dev/null and b/figures/rebrickable/10757/Owen_Grady/head.jpg differ diff --git a/figures/rebrickable/10757/Owen_Grady/minifig.jpg b/figures/rebrickable/10757/Owen_Grady/minifig.jpg new file mode 100644 index 0000000..d5f0ec8 Binary files /dev/null and b/figures/rebrickable/10757/Owen_Grady/minifig.jpg differ diff --git a/figures/rebrickable/10757/set.jpg b/figures/rebrickable/10757/set.jpg new file mode 100644 index 0000000..980034a Binary files /dev/null and b/figures/rebrickable/10757/set.jpg differ diff --git a/figures/rebrickable/10758/Claire_Dearing/head.jpg b/figures/rebrickable/10758/Claire_Dearing/head.jpg new file mode 100644 index 0000000..55fc04f Binary files /dev/null and b/figures/rebrickable/10758/Claire_Dearing/head.jpg differ diff --git a/figures/rebrickable/10758/Claire_Dearing/minifig.jpg b/figures/rebrickable/10758/Claire_Dearing/minifig.jpg new file mode 100644 index 0000000..962e97c Binary files /dev/null and b/figures/rebrickable/10758/Claire_Dearing/minifig.jpg differ diff --git a/figures/rebrickable/10758/set.jpg b/figures/rebrickable/10758/set.jpg new file mode 100644 index 0000000..13c782e Binary files /dev/null and b/figures/rebrickable/10758/set.jpg differ diff --git a/figures/rebrickable/121801/set.jpg b/figures/rebrickable/121801/set.jpg new file mode 100644 index 0000000..6896395 Binary files /dev/null and b/figures/rebrickable/121801/set.jpg differ diff --git a/figures/rebrickable/121802/Owen_Grady/head.jpg b/figures/rebrickable/121802/Owen_Grady/head.jpg new file mode 100644 index 0000000..e2259e3 Binary files /dev/null and b/figures/rebrickable/121802/Owen_Grady/head.jpg differ diff --git a/figures/rebrickable/121802/Owen_Grady/minifig.jpg b/figures/rebrickable/121802/Owen_Grady/minifig.jpg new file mode 100644 index 0000000..d5f0ec8 Binary files /dev/null and b/figures/rebrickable/121802/Owen_Grady/minifig.jpg differ diff --git a/figures/rebrickable/121802/set.jpg b/figures/rebrickable/121802/set.jpg new file mode 100644 index 0000000..56132de Binary files /dev/null and b/figures/rebrickable/121802/set.jpg differ diff --git a/figures/rebrickable/121903/set.jpg b/figures/rebrickable/121903/set.jpg new file mode 100644 index 0000000..23f2f8b Binary files /dev/null and b/figures/rebrickable/121903/set.jpg differ diff --git a/figures/rebrickable/121904/Owen_Grady/head.jpg b/figures/rebrickable/121904/Owen_Grady/head.jpg new file mode 100644 index 0000000..e2259e3 Binary files /dev/null and b/figures/rebrickable/121904/Owen_Grady/head.jpg differ diff --git a/figures/rebrickable/121904/Owen_Grady/minifig.jpg b/figures/rebrickable/121904/Owen_Grady/minifig.jpg new file mode 100644 index 0000000..d5f0ec8 Binary files /dev/null and b/figures/rebrickable/121904/Owen_Grady/minifig.jpg differ diff --git a/figures/rebrickable/121904/set.jpg b/figures/rebrickable/121904/set.jpg new file mode 100644 index 0000000..eed898e Binary files /dev/null and b/figures/rebrickable/121904/set.jpg differ diff --git a/figures/rebrickable/122005/set.jpg b/figures/rebrickable/122005/set.jpg new file mode 100644 index 0000000..867597e Binary files /dev/null and b/figures/rebrickable/122005/set.jpg differ diff --git a/figures/rebrickable/122006/set.jpg b/figures/rebrickable/122006/set.jpg new file mode 100644 index 0000000..37ccb17 Binary files /dev/null and b/figures/rebrickable/122006/set.jpg differ diff --git a/figures/rebrickable/122007/Owen_Grady/head.jpg b/figures/rebrickable/122007/Owen_Grady/head.jpg new file mode 100644 index 0000000..e2259e3 Binary files /dev/null and b/figures/rebrickable/122007/Owen_Grady/head.jpg differ diff --git a/figures/rebrickable/122007/Owen_Grady/minifig.jpg b/figures/rebrickable/122007/Owen_Grady/minifig.jpg new file mode 100644 index 0000000..63be9ba Binary files /dev/null and b/figures/rebrickable/122007/Owen_Grady/minifig.jpg differ diff --git a/figures/rebrickable/122007/set.jpg b/figures/rebrickable/122007/set.jpg new file mode 100644 index 0000000..4ce92f7 Binary files /dev/null and b/figures/rebrickable/122007/set.jpg differ diff --git a/figures/rebrickable/122008/set.jpg b/figures/rebrickable/122008/set.jpg new file mode 100644 index 0000000..5d7eaf1 Binary files /dev/null and b/figures/rebrickable/122008/set.jpg differ diff --git a/figures/rebrickable/122009/Vic_Hoskins/head.jpg b/figures/rebrickable/122009/Vic_Hoskins/head.jpg new file mode 100644 index 0000000..b72ecb2 Binary files /dev/null and b/figures/rebrickable/122009/Vic_Hoskins/head.jpg differ diff --git a/figures/rebrickable/122009/Vic_Hoskins/minifig.jpg b/figures/rebrickable/122009/Vic_Hoskins/minifig.jpg new file mode 100644 index 0000000..83a444b Binary files /dev/null and b/figures/rebrickable/122009/Vic_Hoskins/minifig.jpg differ diff --git a/figures/rebrickable/122009/set.jpg b/figures/rebrickable/122009/set.jpg new file mode 100644 index 0000000..d56eb41 Binary files /dev/null and b/figures/rebrickable/122009/set.jpg differ diff --git a/figures/rebrickable/122010/set.jpg b/figures/rebrickable/122010/set.jpg new file mode 100644 index 0000000..2b12282 Binary files /dev/null and b/figures/rebrickable/122010/set.jpg differ diff --git a/figures/rebrickable/122111/set.jpg b/figures/rebrickable/122111/set.jpg new file mode 100644 index 0000000..a8905f6 Binary files /dev/null and b/figures/rebrickable/122111/set.jpg differ diff --git a/figures/rebrickable/122112/Henry_Wu/head.jpg b/figures/rebrickable/122112/Henry_Wu/head.jpg new file mode 100644 index 0000000..f62992e Binary files /dev/null and b/figures/rebrickable/122112/Henry_Wu/head.jpg differ diff --git a/figures/rebrickable/122112/Henry_Wu/minifig.jpg b/figures/rebrickable/122112/Henry_Wu/minifig.jpg new file mode 100644 index 0000000..fcf568b Binary files /dev/null and b/figures/rebrickable/122112/Henry_Wu/minifig.jpg differ diff --git a/figures/rebrickable/122112/set.jpg b/figures/rebrickable/122112/set.jpg new file mode 100644 index 0000000..ccfb80c Binary files /dev/null and b/figures/rebrickable/122112/set.jpg differ diff --git a/figures/rebrickable/122113/Owen_Grady/head.jpg b/figures/rebrickable/122113/Owen_Grady/head.jpg new file mode 100644 index 0000000..e2259e3 Binary files /dev/null and b/figures/rebrickable/122113/Owen_Grady/head.jpg differ diff --git a/figures/rebrickable/122113/Owen_Grady/minifig.jpg b/figures/rebrickable/122113/Owen_Grady/minifig.jpg new file mode 100644 index 0000000..d5f0ec8 Binary files /dev/null and b/figures/rebrickable/122113/Owen_Grady/minifig.jpg differ diff --git a/figures/rebrickable/122113/set.jpg b/figures/rebrickable/122113/set.jpg new file mode 100644 index 0000000..b7ac7fd Binary files /dev/null and b/figures/rebrickable/122113/set.jpg differ diff --git a/figures/rebrickable/122114/Owen_Grady/head.jpg b/figures/rebrickable/122114/Owen_Grady/head.jpg new file mode 100644 index 0000000..e2259e3 Binary files /dev/null and b/figures/rebrickable/122114/Owen_Grady/head.jpg differ diff --git a/figures/rebrickable/122114/Owen_Grady/minifig.jpg b/figures/rebrickable/122114/Owen_Grady/minifig.jpg new file mode 100644 index 0000000..7604db6 Binary files /dev/null and b/figures/rebrickable/122114/Owen_Grady/minifig.jpg differ diff --git a/figures/rebrickable/122114/set.jpg b/figures/rebrickable/122114/set.jpg new file mode 100644 index 0000000..e57885a Binary files /dev/null and b/figures/rebrickable/122114/set.jpg differ diff --git a/figures/rebrickable/122115/set.jpg b/figures/rebrickable/122115/set.jpg new file mode 100644 index 0000000..9550bf1 Binary files /dev/null and b/figures/rebrickable/122115/set.jpg differ diff --git a/figures/rebrickable/122116/Sinjin_Prescott/head.jpg b/figures/rebrickable/122116/Sinjin_Prescott/head.jpg new file mode 100644 index 0000000..9ad5849 Binary files /dev/null and b/figures/rebrickable/122116/Sinjin_Prescott/head.jpg differ diff --git a/figures/rebrickable/122116/Sinjin_Prescott/minifig.jpg b/figures/rebrickable/122116/Sinjin_Prescott/minifig.jpg new file mode 100644 index 0000000..216b9c0 Binary files /dev/null and b/figures/rebrickable/122116/Sinjin_Prescott/minifig.jpg differ diff --git a/figures/rebrickable/122116/set.jpg b/figures/rebrickable/122116/set.jpg new file mode 100644 index 0000000..14abfc1 Binary files /dev/null and b/figures/rebrickable/122116/set.jpg differ diff --git a/figures/rebrickable/122217/set.jpg b/figures/rebrickable/122217/set.jpg new file mode 100644 index 0000000..426fbfa Binary files /dev/null and b/figures/rebrickable/122217/set.jpg differ diff --git a/figures/rebrickable/122218/set.jpg b/figures/rebrickable/122218/set.jpg new file mode 100644 index 0000000..e20dc27 Binary files /dev/null and b/figures/rebrickable/122218/set.jpg differ diff --git a/figures/rebrickable/122219/set.jpg b/figures/rebrickable/122219/set.jpg new file mode 100644 index 0000000..459595a Binary files /dev/null and b/figures/rebrickable/122219/set.jpg differ diff --git a/figures/rebrickable/122220/Owen_Grady/head.jpg b/figures/rebrickable/122220/Owen_Grady/head.jpg new file mode 100644 index 0000000..e2259e3 Binary files /dev/null and b/figures/rebrickable/122220/Owen_Grady/head.jpg differ diff --git a/figures/rebrickable/122220/Owen_Grady/minifig.jpg b/figures/rebrickable/122220/Owen_Grady/minifig.jpg new file mode 100644 index 0000000..d5f0ec8 Binary files /dev/null and b/figures/rebrickable/122220/Owen_Grady/minifig.jpg differ diff --git a/figures/rebrickable/122220/set.jpg b/figures/rebrickable/122220/set.jpg new file mode 100644 index 0000000..fc6fb6b Binary files /dev/null and b/figures/rebrickable/122220/set.jpg differ diff --git a/figures/rebrickable/122221/set.jpg b/figures/rebrickable/122221/set.jpg new file mode 100644 index 0000000..3a56b03 Binary files /dev/null and b/figures/rebrickable/122221/set.jpg differ diff --git a/figures/rebrickable/122222/set.jpg b/figures/rebrickable/122222/set.jpg new file mode 100644 index 0000000..7cb66c9 Binary files /dev/null and b/figures/rebrickable/122222/set.jpg differ diff --git a/figures/rebrickable/122223/Owen_Grady/head.jpg b/figures/rebrickable/122223/Owen_Grady/head.jpg new file mode 100644 index 0000000..e2259e3 Binary files /dev/null and b/figures/rebrickable/122223/Owen_Grady/head.jpg differ diff --git a/figures/rebrickable/122223/Owen_Grady/minifig.jpg b/figures/rebrickable/122223/Owen_Grady/minifig.jpg new file mode 100644 index 0000000..63be9ba Binary files /dev/null and b/figures/rebrickable/122223/Owen_Grady/minifig.jpg differ diff --git a/figures/rebrickable/122223/set.jpg b/figures/rebrickable/122223/set.jpg new file mode 100644 index 0000000..a15c166 Binary files /dev/null and b/figures/rebrickable/122223/set.jpg differ diff --git a/figures/rebrickable/122224/Rainn_DeLaCourt/head.jpg b/figures/rebrickable/122224/Rainn_DeLaCourt/head.jpg new file mode 100644 index 0000000..34452d1 Binary files /dev/null and b/figures/rebrickable/122224/Rainn_DeLaCourt/head.jpg differ diff --git a/figures/rebrickable/122224/Rainn_DeLaCourt/minifig.jpg b/figures/rebrickable/122224/Rainn_DeLaCourt/minifig.jpg new file mode 100644 index 0000000..4ea4e96 Binary files /dev/null and b/figures/rebrickable/122224/Rainn_DeLaCourt/minifig.jpg differ diff --git a/figures/rebrickable/122224/set.jpg b/figures/rebrickable/122224/set.jpg new file mode 100644 index 0000000..6588356 Binary files /dev/null and b/figures/rebrickable/122224/set.jpg differ diff --git a/figures/rebrickable/122225/set.jpg b/figures/rebrickable/122225/set.jpg new file mode 100644 index 0000000..8a3add8 Binary files /dev/null and b/figures/rebrickable/122225/set.jpg differ diff --git a/figures/rebrickable/122326/set.jpg b/figures/rebrickable/122326/set.jpg new file mode 100644 index 0000000..8ab60df Binary files /dev/null and b/figures/rebrickable/122326/set.jpg differ diff --git a/figures/rebrickable/122327/set.jpg b/figures/rebrickable/122327/set.jpg new file mode 100644 index 0000000..5377078 Binary files /dev/null and b/figures/rebrickable/122327/set.jpg differ diff --git a/figures/rebrickable/122328/Owen_Grady/head.jpg b/figures/rebrickable/122328/Owen_Grady/head.jpg new file mode 100644 index 0000000..e2259e3 Binary files /dev/null and b/figures/rebrickable/122328/Owen_Grady/head.jpg differ diff --git a/figures/rebrickable/122328/Owen_Grady/minifig.jpg b/figures/rebrickable/122328/Owen_Grady/minifig.jpg new file mode 100644 index 0000000..2410094 Binary files /dev/null and b/figures/rebrickable/122328/Owen_Grady/minifig.jpg differ diff --git a/figures/rebrickable/122328/set.jpg b/figures/rebrickable/122328/set.jpg new file mode 100644 index 0000000..55f5555 Binary files /dev/null and b/figures/rebrickable/122328/set.jpg differ diff --git a/figures/rebrickable/122329/set.jpg b/figures/rebrickable/122329/set.jpg new file mode 100644 index 0000000..20b859b Binary files /dev/null and b/figures/rebrickable/122329/set.jpg differ diff --git a/figures/rebrickable/122330/set.jpg b/figures/rebrickable/122330/set.jpg new file mode 100644 index 0000000..c883b36 Binary files /dev/null and b/figures/rebrickable/122330/set.jpg differ diff --git a/figures/rebrickable/122331/Owen_Grady/head.jpg b/figures/rebrickable/122331/Owen_Grady/head.jpg new file mode 100644 index 0000000..e2259e3 Binary files /dev/null and b/figures/rebrickable/122331/Owen_Grady/head.jpg differ diff --git a/figures/rebrickable/122331/Owen_Grady/minifig.jpg b/figures/rebrickable/122331/Owen_Grady/minifig.jpg new file mode 100644 index 0000000..63be9ba Binary files /dev/null and b/figures/rebrickable/122331/Owen_Grady/minifig.jpg differ diff --git a/figures/rebrickable/122331/set.jpg b/figures/rebrickable/122331/set.jpg new file mode 100644 index 0000000..82356bd Binary files /dev/null and b/figures/rebrickable/122331/set.jpg differ diff --git a/figures/rebrickable/122332/set.jpg b/figures/rebrickable/122332/set.jpg new file mode 100644 index 0000000..efd8631 Binary files /dev/null and b/figures/rebrickable/122332/set.jpg differ diff --git a/figures/rebrickable/122333/Owen_Grady/head.jpg b/figures/rebrickable/122333/Owen_Grady/head.jpg new file mode 100644 index 0000000..e2259e3 Binary files /dev/null and b/figures/rebrickable/122333/Owen_Grady/head.jpg differ diff --git a/figures/rebrickable/122333/Owen_Grady/minifig.jpg b/figures/rebrickable/122333/Owen_Grady/minifig.jpg new file mode 100644 index 0000000..63be9ba Binary files /dev/null and b/figures/rebrickable/122333/Owen_Grady/minifig.jpg differ diff --git a/figures/rebrickable/122333/set.jpg b/figures/rebrickable/122333/set.jpg new file mode 100644 index 0000000..eafd7d5 Binary files /dev/null and b/figures/rebrickable/122333/set.jpg differ diff --git a/figures/rebrickable/122334/Alan_Grant/head.jpg b/figures/rebrickable/122334/Alan_Grant/head.jpg new file mode 100644 index 0000000..39bd122 Binary files /dev/null and b/figures/rebrickable/122334/Alan_Grant/head.jpg differ diff --git a/figures/rebrickable/122334/Alan_Grant/minifig.jpg b/figures/rebrickable/122334/Alan_Grant/minifig.jpg new file mode 100644 index 0000000..e657445 Binary files /dev/null and b/figures/rebrickable/122334/Alan_Grant/minifig.jpg differ diff --git a/figures/rebrickable/122334/set.jpg b/figures/rebrickable/122334/set.jpg new file mode 100644 index 0000000..c7cca79 Binary files /dev/null and b/figures/rebrickable/122334/set.jpg differ diff --git a/figures/rebrickable/122401/set.jpg b/figures/rebrickable/122401/set.jpg new file mode 100644 index 0000000..4514408 Binary files /dev/null and b/figures/rebrickable/122401/set.jpg differ diff --git a/figures/rebrickable/122402/set.jpg b/figures/rebrickable/122402/set.jpg new file mode 100644 index 0000000..e3ee1bf Binary files /dev/null and b/figures/rebrickable/122402/set.jpg differ diff --git a/figures/rebrickable/122403/Owen_Grady/head.jpg b/figures/rebrickable/122403/Owen_Grady/head.jpg new file mode 100644 index 0000000..e2259e3 Binary files /dev/null and b/figures/rebrickable/122403/Owen_Grady/head.jpg differ diff --git a/figures/rebrickable/122403/Owen_Grady/minifig.jpg b/figures/rebrickable/122403/Owen_Grady/minifig.jpg new file mode 100644 index 0000000..63be9ba Binary files /dev/null and b/figures/rebrickable/122403/Owen_Grady/minifig.jpg differ diff --git a/figures/rebrickable/122403/set.jpg b/figures/rebrickable/122403/set.jpg new file mode 100644 index 0000000..3f41a0e Binary files /dev/null and b/figures/rebrickable/122403/set.jpg differ diff --git a/figures/rebrickable/122404/set.jpg b/figures/rebrickable/122404/set.jpg new file mode 100644 index 0000000..d3a884e Binary files /dev/null and b/figures/rebrickable/122404/set.jpg differ diff --git a/figures/rebrickable/122405/set.jpg b/figures/rebrickable/122405/set.jpg new file mode 100644 index 0000000..dde45e2 Binary files /dev/null and b/figures/rebrickable/122405/set.jpg differ diff --git a/figures/rebrickable/122406/set.jpg b/figures/rebrickable/122406/set.jpg new file mode 100644 index 0000000..f37545f Binary files /dev/null and b/figures/rebrickable/122406/set.jpg differ diff --git a/figures/rebrickable/122407/set.jpg b/figures/rebrickable/122407/set.jpg new file mode 100644 index 0000000..bec6cae Binary files /dev/null and b/figures/rebrickable/122407/set.jpg differ diff --git a/figures/rebrickable/122408/set.jpg b/figures/rebrickable/122408/set.jpg new file mode 100644 index 0000000..90fee6b Binary files /dev/null and b/figures/rebrickable/122408/set.jpg differ diff --git a/figures/rebrickable/122409/set.jpg b/figures/rebrickable/122409/set.jpg new file mode 100644 index 0000000..069cdd6 Binary files /dev/null and b/figures/rebrickable/122409/set.jpg differ diff --git a/figures/rebrickable/122501/set.jpg b/figures/rebrickable/122501/set.jpg new file mode 100644 index 0000000..aac1139 Binary files /dev/null and b/figures/rebrickable/122501/set.jpg differ diff --git a/figures/rebrickable/122502/set.jpg b/figures/rebrickable/122502/set.jpg new file mode 100644 index 0000000..5f3fc8b Binary files /dev/null and b/figures/rebrickable/122502/set.jpg differ diff --git a/figures/rebrickable/122503/Owen_Grady/head.jpg b/figures/rebrickable/122503/Owen_Grady/head.jpg new file mode 100644 index 0000000..e2259e3 Binary files /dev/null and b/figures/rebrickable/122503/Owen_Grady/head.jpg differ diff --git a/figures/rebrickable/122503/Owen_Grady/minifig.jpg b/figures/rebrickable/122503/Owen_Grady/minifig.jpg new file mode 100644 index 0000000..63be9ba Binary files /dev/null and b/figures/rebrickable/122503/Owen_Grady/minifig.jpg differ diff --git a/figures/rebrickable/122503/set.jpg b/figures/rebrickable/122503/set.jpg new file mode 100644 index 0000000..cbaad1a Binary files /dev/null and b/figures/rebrickable/122503/set.jpg differ diff --git a/figures/rebrickable/122504/set.jpg b/figures/rebrickable/122504/set.jpg new file mode 100644 index 0000000..c4b23ab Binary files /dev/null and b/figures/rebrickable/122504/set.jpg differ diff --git a/figures/rebrickable/122505/set.jpg b/figures/rebrickable/122505/set.jpg new file mode 100644 index 0000000..8ca7ca1 Binary files /dev/null and b/figures/rebrickable/122505/set.jpg differ diff --git a/figures/rebrickable/122508/Alan_Grant/head.jpg b/figures/rebrickable/122508/Alan_Grant/head.jpg new file mode 100644 index 0000000..71a577c Binary files /dev/null and b/figures/rebrickable/122508/Alan_Grant/head.jpg differ diff --git a/figures/rebrickable/122508/Alan_Grant/minifig.jpg b/figures/rebrickable/122508/Alan_Grant/minifig.jpg new file mode 100644 index 0000000..2f32411 Binary files /dev/null and b/figures/rebrickable/122508/Alan_Grant/minifig.jpg differ diff --git a/figures/rebrickable/122508/set.jpg b/figures/rebrickable/122508/set.jpg new file mode 100644 index 0000000..32962ce Binary files /dev/null and b/figures/rebrickable/122508/set.jpg differ diff --git a/figures/rebrickable/1370/set.jpg b/figures/rebrickable/1370/set.jpg new file mode 100644 index 0000000..c13f3eb Binary files /dev/null and b/figures/rebrickable/1370/set.jpg differ diff --git a/figures/rebrickable/1371/set.jpg b/figures/rebrickable/1371/set.jpg new file mode 100644 index 0000000..8c53a2d Binary files /dev/null and b/figures/rebrickable/1371/set.jpg differ diff --git a/figures/rebrickable/30320/set.jpg b/figures/rebrickable/30320/set.jpg new file mode 100644 index 0000000..d2bd8a1 Binary files /dev/null and b/figures/rebrickable/30320/set.jpg differ diff --git a/figures/rebrickable/30382/set.jpg b/figures/rebrickable/30382/set.jpg new file mode 100644 index 0000000..ba6a291 Binary files /dev/null and b/figures/rebrickable/30382/set.jpg differ diff --git a/figures/rebrickable/30390/set.jpg b/figures/rebrickable/30390/set.jpg new file mode 100644 index 0000000..e95f141 Binary files /dev/null and b/figures/rebrickable/30390/set.jpg differ diff --git a/figures/rebrickable/4000031/set.jpg b/figures/rebrickable/4000031/set.jpg new file mode 100644 index 0000000..c99603d Binary files /dev/null and b/figures/rebrickable/4000031/set.jpg differ diff --git a/figures/rebrickable/5000193818/Henry_Wu/head.jpg b/figures/rebrickable/5000193818/Henry_Wu/head.jpg new file mode 100644 index 0000000..3123211 Binary files /dev/null and b/figures/rebrickable/5000193818/Henry_Wu/head.jpg differ diff --git a/figures/rebrickable/5000193818/Henry_Wu/minifig.jpg b/figures/rebrickable/5000193818/Henry_Wu/minifig.jpg new file mode 100644 index 0000000..842ea60 Binary files /dev/null and b/figures/rebrickable/5000193818/Henry_Wu/minifig.jpg differ diff --git a/figures/rebrickable/5000193818/set.jpg b/figures/rebrickable/5000193818/set.jpg new file mode 100644 index 0000000..6bbf5c3 Binary files /dev/null and b/figures/rebrickable/5000193818/set.jpg differ diff --git a/figures/rebrickable/5008022/set.jpg b/figures/rebrickable/5008022/set.jpg new file mode 100644 index 0000000..12a5e44 Binary files /dev/null and b/figures/rebrickable/5008022/set.jpg differ diff --git a/figures/rebrickable/75915/Simon_Masrani/head.jpg b/figures/rebrickable/75915/Simon_Masrani/head.jpg new file mode 100644 index 0000000..78c6afe Binary files /dev/null and b/figures/rebrickable/75915/Simon_Masrani/head.jpg differ diff --git a/figures/rebrickable/75915/Simon_Masrani/minifig.jpg b/figures/rebrickable/75915/Simon_Masrani/minifig.jpg new file mode 100644 index 0000000..5ae0f4c Binary files /dev/null and b/figures/rebrickable/75915/Simon_Masrani/minifig.jpg differ diff --git a/figures/rebrickable/75915/set.jpg b/figures/rebrickable/75915/set.jpg new file mode 100644 index 0000000..d4f64d5 Binary files /dev/null and b/figures/rebrickable/75915/set.jpg differ diff --git a/figures/rebrickable/75916/Gray_Mitchell/head.jpg b/figures/rebrickable/75916/Gray_Mitchell/head.jpg new file mode 100644 index 0000000..3581b8d Binary files /dev/null and b/figures/rebrickable/75916/Gray_Mitchell/head.jpg differ diff --git a/figures/rebrickable/75916/Gray_Mitchell/minifig.jpg b/figures/rebrickable/75916/Gray_Mitchell/minifig.jpg new file mode 100644 index 0000000..8a753a5 Binary files /dev/null and b/figures/rebrickable/75916/Gray_Mitchell/minifig.jpg differ diff --git a/figures/rebrickable/75916/set.jpg b/figures/rebrickable/75916/set.jpg new file mode 100644 index 0000000..dda0b3c Binary files /dev/null and b/figures/rebrickable/75916/set.jpg differ diff --git a/figures/rebrickable/75917/Claire_Dearing/head.jpg b/figures/rebrickable/75917/Claire_Dearing/head.jpg new file mode 100644 index 0000000..c9bb592 Binary files /dev/null and b/figures/rebrickable/75917/Claire_Dearing/head.jpg differ diff --git a/figures/rebrickable/75917/Claire_Dearing/minifig.jpg b/figures/rebrickable/75917/Claire_Dearing/minifig.jpg new file mode 100644 index 0000000..e7864b0 Binary files /dev/null and b/figures/rebrickable/75917/Claire_Dearing/minifig.jpg differ diff --git a/figures/rebrickable/75917/Owen_Grady/head.jpg b/figures/rebrickable/75917/Owen_Grady/head.jpg new file mode 100644 index 0000000..54364c4 Binary files /dev/null and b/figures/rebrickable/75917/Owen_Grady/head.jpg differ diff --git a/figures/rebrickable/75917/Owen_Grady/minifig.jpg b/figures/rebrickable/75917/Owen_Grady/minifig.jpg new file mode 100644 index 0000000..34270c8 Binary files /dev/null and b/figures/rebrickable/75917/Owen_Grady/minifig.jpg differ diff --git a/figures/rebrickable/75917/set.jpg b/figures/rebrickable/75917/set.jpg new file mode 100644 index 0000000..569ecfa Binary files /dev/null and b/figures/rebrickable/75917/set.jpg differ diff --git a/figures/rebrickable/75918/Vic_Hoskins/head.jpg b/figures/rebrickable/75918/Vic_Hoskins/head.jpg new file mode 100644 index 0000000..b7e8bcf Binary files /dev/null and b/figures/rebrickable/75918/Vic_Hoskins/head.jpg differ diff --git a/figures/rebrickable/75918/Vic_Hoskins/minifig.jpg b/figures/rebrickable/75918/Vic_Hoskins/minifig.jpg new file mode 100644 index 0000000..d8d45a1 Binary files /dev/null and b/figures/rebrickable/75918/Vic_Hoskins/minifig.jpg differ diff --git a/figures/rebrickable/75918/set.jpg b/figures/rebrickable/75918/set.jpg new file mode 100644 index 0000000..eae198e Binary files /dev/null and b/figures/rebrickable/75918/set.jpg differ diff --git a/figures/rebrickable/75919/Henry_Wu/head.jpg b/figures/rebrickable/75919/Henry_Wu/head.jpg new file mode 100644 index 0000000..3123211 Binary files /dev/null and b/figures/rebrickable/75919/Henry_Wu/head.jpg differ diff --git a/figures/rebrickable/75919/Henry_Wu/minifig.jpg b/figures/rebrickable/75919/Henry_Wu/minifig.jpg new file mode 100644 index 0000000..842ea60 Binary files /dev/null and b/figures/rebrickable/75919/Henry_Wu/minifig.jpg differ diff --git a/figures/rebrickable/75919/Zach_Mitchell/head.jpg b/figures/rebrickable/75919/Zach_Mitchell/head.jpg new file mode 100644 index 0000000..9cc118c Binary files /dev/null and b/figures/rebrickable/75919/Zach_Mitchell/head.jpg differ diff --git a/figures/rebrickable/75919/Zach_Mitchell/minifig.jpg b/figures/rebrickable/75919/Zach_Mitchell/minifig.jpg new file mode 100644 index 0000000..0837ff0 Binary files /dev/null and b/figures/rebrickable/75919/Zach_Mitchell/minifig.jpg differ diff --git a/figures/rebrickable/75919/set.jpg b/figures/rebrickable/75919/set.jpg new file mode 100644 index 0000000..f9be143 Binary files /dev/null and b/figures/rebrickable/75919/set.jpg differ diff --git a/figures/rebrickable/75920/Barry/head.jpg b/figures/rebrickable/75920/Barry/head.jpg new file mode 100644 index 0000000..c399178 Binary files /dev/null and b/figures/rebrickable/75920/Barry/head.jpg differ diff --git a/figures/rebrickable/75920/Barry/minifig.jpg b/figures/rebrickable/75920/Barry/minifig.jpg new file mode 100644 index 0000000..fdca45f Binary files /dev/null and b/figures/rebrickable/75920/Barry/minifig.jpg differ diff --git a/figures/rebrickable/75920/set.jpg b/figures/rebrickable/75920/set.jpg new file mode 100644 index 0000000..0d69992 Binary files /dev/null and b/figures/rebrickable/75920/set.jpg differ diff --git a/figures/rebrickable/75926/Owen_Grady/head.jpg b/figures/rebrickable/75926/Owen_Grady/head.jpg new file mode 100644 index 0000000..e2259e3 Binary files /dev/null and b/figures/rebrickable/75926/Owen_Grady/head.jpg differ diff --git a/figures/rebrickable/75926/Owen_Grady/minifig.jpg b/figures/rebrickable/75926/Owen_Grady/minifig.jpg new file mode 100644 index 0000000..d5f0ec8 Binary files /dev/null and b/figures/rebrickable/75926/Owen_Grady/minifig.jpg differ diff --git a/figures/rebrickable/75926/set.jpg b/figures/rebrickable/75926/set.jpg new file mode 100644 index 0000000..efa3ba9 Binary files /dev/null and b/figures/rebrickable/75926/set.jpg differ diff --git a/figures/rebrickable/75927/Henry_Wu/head.jpg b/figures/rebrickable/75927/Henry_Wu/head.jpg new file mode 100644 index 0000000..2b7abbf Binary files /dev/null and b/figures/rebrickable/75927/Henry_Wu/head.jpg differ diff --git a/figures/rebrickable/75927/Henry_Wu/minifig.jpg b/figures/rebrickable/75927/Henry_Wu/minifig.jpg new file mode 100644 index 0000000..7afccf6 Binary files /dev/null and b/figures/rebrickable/75927/Henry_Wu/minifig.jpg differ diff --git a/figures/rebrickable/75927/set.jpg b/figures/rebrickable/75927/set.jpg new file mode 100644 index 0000000..a4508d7 Binary files /dev/null and b/figures/rebrickable/75927/set.jpg differ diff --git a/figures/rebrickable/75928/Ken_Wheatley/head.jpg b/figures/rebrickable/75928/Ken_Wheatley/head.jpg new file mode 100644 index 0000000..3ed38be Binary files /dev/null and b/figures/rebrickable/75928/Ken_Wheatley/head.jpg differ diff --git a/figures/rebrickable/75928/Ken_Wheatley/minifig.jpg b/figures/rebrickable/75928/Ken_Wheatley/minifig.jpg new file mode 100644 index 0000000..5dd31e6 Binary files /dev/null and b/figures/rebrickable/75928/Ken_Wheatley/minifig.jpg differ diff --git a/figures/rebrickable/75928/Owen_Grady/head.jpg b/figures/rebrickable/75928/Owen_Grady/head.jpg new file mode 100644 index 0000000..e2259e3 Binary files /dev/null and b/figures/rebrickable/75928/Owen_Grady/head.jpg differ diff --git a/figures/rebrickable/75928/Owen_Grady/minifig.jpg b/figures/rebrickable/75928/Owen_Grady/minifig.jpg new file mode 100644 index 0000000..c9d6d89 Binary files /dev/null and b/figures/rebrickable/75928/Owen_Grady/minifig.jpg differ diff --git a/figures/rebrickable/75928/set.jpg b/figures/rebrickable/75928/set.jpg new file mode 100644 index 0000000..ba27ea1 Binary files /dev/null and b/figures/rebrickable/75928/set.jpg differ diff --git a/figures/rebrickable/75929/Claire_Dearing/head.jpg b/figures/rebrickable/75929/Claire_Dearing/head.jpg new file mode 100644 index 0000000..55fc04f Binary files /dev/null and b/figures/rebrickable/75929/Claire_Dearing/head.jpg differ diff --git a/figures/rebrickable/75929/Claire_Dearing/minifig.jpg b/figures/rebrickable/75929/Claire_Dearing/minifig.jpg new file mode 100644 index 0000000..962e97c Binary files /dev/null and b/figures/rebrickable/75929/Claire_Dearing/minifig.jpg differ diff --git a/figures/rebrickable/75929/Franklin_Webb/head.jpg b/figures/rebrickable/75929/Franklin_Webb/head.jpg new file mode 100644 index 0000000..89cdb9a Binary files /dev/null and b/figures/rebrickable/75929/Franklin_Webb/head.jpg differ diff --git a/figures/rebrickable/75929/Franklin_Webb/minifig.jpg b/figures/rebrickable/75929/Franklin_Webb/minifig.jpg new file mode 100644 index 0000000..e9806e0 Binary files /dev/null and b/figures/rebrickable/75929/Franklin_Webb/minifig.jpg differ diff --git a/figures/rebrickable/75929/Owen_Grady/head.jpg b/figures/rebrickable/75929/Owen_Grady/head.jpg new file mode 100644 index 0000000..e2259e3 Binary files /dev/null and b/figures/rebrickable/75929/Owen_Grady/head.jpg differ diff --git a/figures/rebrickable/75929/Owen_Grady/minifig.jpg b/figures/rebrickable/75929/Owen_Grady/minifig.jpg new file mode 100644 index 0000000..3107388 Binary files /dev/null and b/figures/rebrickable/75929/Owen_Grady/minifig.jpg differ diff --git a/figures/rebrickable/75929/set.jpg b/figures/rebrickable/75929/set.jpg new file mode 100644 index 0000000..e816285 Binary files /dev/null and b/figures/rebrickable/75929/set.jpg differ diff --git a/figures/rebrickable/75930/Claire_Dearing/head.jpg b/figures/rebrickable/75930/Claire_Dearing/head.jpg new file mode 100644 index 0000000..55fc04f Binary files /dev/null and b/figures/rebrickable/75930/Claire_Dearing/head.jpg differ diff --git a/figures/rebrickable/75930/Claire_Dearing/minifig.jpg b/figures/rebrickable/75930/Claire_Dearing/minifig.jpg new file mode 100644 index 0000000..962e97c Binary files /dev/null and b/figures/rebrickable/75930/Claire_Dearing/minifig.jpg differ diff --git a/figures/rebrickable/75930/Eli_Mills/head.jpg b/figures/rebrickable/75930/Eli_Mills/head.jpg new file mode 100644 index 0000000..99ef63e Binary files /dev/null and b/figures/rebrickable/75930/Eli_Mills/head.jpg differ diff --git a/figures/rebrickable/75930/Eli_Mills/minifig.jpg b/figures/rebrickable/75930/Eli_Mills/minifig.jpg new file mode 100644 index 0000000..0ef075b Binary files /dev/null and b/figures/rebrickable/75930/Eli_Mills/minifig.jpg differ diff --git a/figures/rebrickable/75930/Gunnar_Eversol/head.jpg b/figures/rebrickable/75930/Gunnar_Eversol/head.jpg new file mode 100644 index 0000000..93fe9a6 Binary files /dev/null and b/figures/rebrickable/75930/Gunnar_Eversol/head.jpg differ diff --git a/figures/rebrickable/75930/Gunnar_Eversol/minifig.jpg b/figures/rebrickable/75930/Gunnar_Eversol/minifig.jpg new file mode 100644 index 0000000..1230bd4 Binary files /dev/null and b/figures/rebrickable/75930/Gunnar_Eversol/minifig.jpg differ diff --git a/figures/rebrickable/75930/Ken_Wheatley/head.jpg b/figures/rebrickable/75930/Ken_Wheatley/head.jpg new file mode 100644 index 0000000..3ed38be Binary files /dev/null and b/figures/rebrickable/75930/Ken_Wheatley/head.jpg differ diff --git a/figures/rebrickable/75930/Ken_Wheatley/minifig.jpg b/figures/rebrickable/75930/Ken_Wheatley/minifig.jpg new file mode 100644 index 0000000..5dd31e6 Binary files /dev/null and b/figures/rebrickable/75930/Ken_Wheatley/minifig.jpg differ diff --git a/figures/rebrickable/75930/Maisie_Lockwood/head.jpg b/figures/rebrickable/75930/Maisie_Lockwood/head.jpg new file mode 100644 index 0000000..ba51ebc Binary files /dev/null and b/figures/rebrickable/75930/Maisie_Lockwood/head.jpg differ diff --git a/figures/rebrickable/75930/Maisie_Lockwood/minifig.jpg b/figures/rebrickable/75930/Maisie_Lockwood/minifig.jpg new file mode 100644 index 0000000..65e6d89 Binary files /dev/null and b/figures/rebrickable/75930/Maisie_Lockwood/minifig.jpg differ diff --git a/figures/rebrickable/75930/Owen_Grady/head.jpg b/figures/rebrickable/75930/Owen_Grady/head.jpg new file mode 100644 index 0000000..e2259e3 Binary files /dev/null and b/figures/rebrickable/75930/Owen_Grady/head.jpg differ diff --git a/figures/rebrickable/75930/Owen_Grady/minifig.jpg b/figures/rebrickable/75930/Owen_Grady/minifig.jpg new file mode 100644 index 0000000..d5f0ec8 Binary files /dev/null and b/figures/rebrickable/75930/Owen_Grady/minifig.jpg differ diff --git a/figures/rebrickable/75930/set.jpg b/figures/rebrickable/75930/set.jpg new file mode 100644 index 0000000..4d874db Binary files /dev/null and b/figures/rebrickable/75930/set.jpg differ diff --git a/figures/rebrickable/75931/set.jpg b/figures/rebrickable/75931/set.jpg new file mode 100644 index 0000000..fdd8b15 Binary files /dev/null and b/figures/rebrickable/75931/set.jpg differ diff --git a/figures/rebrickable/75932/Alan_Grant/head.jpg b/figures/rebrickable/75932/Alan_Grant/head.jpg new file mode 100644 index 0000000..efa855f Binary files /dev/null and b/figures/rebrickable/75932/Alan_Grant/head.jpg differ diff --git a/figures/rebrickable/75932/Alan_Grant/minifig.jpg b/figures/rebrickable/75932/Alan_Grant/minifig.jpg new file mode 100644 index 0000000..e443db2 Binary files /dev/null and b/figures/rebrickable/75932/Alan_Grant/minifig.jpg differ diff --git a/figures/rebrickable/75932/Ellie_Sattler/head.jpg b/figures/rebrickable/75932/Ellie_Sattler/head.jpg new file mode 100644 index 0000000..fc9ef50 Binary files /dev/null and b/figures/rebrickable/75932/Ellie_Sattler/head.jpg differ diff --git a/figures/rebrickable/75932/Ellie_Sattler/minifig.jpg b/figures/rebrickable/75932/Ellie_Sattler/minifig.jpg new file mode 100644 index 0000000..8f6636a Binary files /dev/null and b/figures/rebrickable/75932/Ellie_Sattler/minifig.jpg differ diff --git a/figures/rebrickable/75932/Lex_Murphy/head.jpg b/figures/rebrickable/75932/Lex_Murphy/head.jpg new file mode 100644 index 0000000..ba51ebc Binary files /dev/null and b/figures/rebrickable/75932/Lex_Murphy/head.jpg differ diff --git a/figures/rebrickable/75932/Lex_Murphy/minifig.jpg b/figures/rebrickable/75932/Lex_Murphy/minifig.jpg new file mode 100644 index 0000000..2c639fb Binary files /dev/null and b/figures/rebrickable/75932/Lex_Murphy/minifig.jpg differ diff --git a/figures/rebrickable/75932/Tim_Murphy/head.jpg b/figures/rebrickable/75932/Tim_Murphy/head.jpg new file mode 100644 index 0000000..58c63a0 Binary files /dev/null and b/figures/rebrickable/75932/Tim_Murphy/head.jpg differ diff --git a/figures/rebrickable/75932/Tim_Murphy/minifig.jpg b/figures/rebrickable/75932/Tim_Murphy/minifig.jpg new file mode 100644 index 0000000..bdde87a Binary files /dev/null and b/figures/rebrickable/75932/Tim_Murphy/minifig.jpg differ diff --git a/figures/rebrickable/75932/set.jpg b/figures/rebrickable/75932/set.jpg new file mode 100644 index 0000000..99a5af0 Binary files /dev/null and b/figures/rebrickable/75932/set.jpg differ diff --git a/figures/rebrickable/75933/Zia_Rodriguez/head.jpg b/figures/rebrickable/75933/Zia_Rodriguez/head.jpg new file mode 100644 index 0000000..3ffa890 Binary files /dev/null and b/figures/rebrickable/75933/Zia_Rodriguez/head.jpg differ diff --git a/figures/rebrickable/75933/Zia_Rodriguez/minifig.jpg b/figures/rebrickable/75933/Zia_Rodriguez/minifig.jpg new file mode 100644 index 0000000..89713a0 Binary files /dev/null and b/figures/rebrickable/75933/Zia_Rodriguez/minifig.jpg differ diff --git a/figures/rebrickable/75933/set.jpg b/figures/rebrickable/75933/set.jpg new file mode 100644 index 0000000..92e38f4 Binary files /dev/null and b/figures/rebrickable/75933/set.jpg differ diff --git a/figures/rebrickable/75934/Hudson_Harper/head.jpg b/figures/rebrickable/75934/Hudson_Harper/head.jpg new file mode 100644 index 0000000..a920da5 Binary files /dev/null and b/figures/rebrickable/75934/Hudson_Harper/head.jpg differ diff --git a/figures/rebrickable/75934/Hudson_Harper/minifig.jpg b/figures/rebrickable/75934/Hudson_Harper/minifig.jpg new file mode 100644 index 0000000..8644ebc Binary files /dev/null and b/figures/rebrickable/75934/Hudson_Harper/minifig.jpg differ diff --git a/figures/rebrickable/75934/Owen_Grady/head.jpg b/figures/rebrickable/75934/Owen_Grady/head.jpg new file mode 100644 index 0000000..e2259e3 Binary files /dev/null and b/figures/rebrickable/75934/Owen_Grady/head.jpg differ diff --git a/figures/rebrickable/75934/Owen_Grady/minifig.jpg b/figures/rebrickable/75934/Owen_Grady/minifig.jpg new file mode 100644 index 0000000..d5f0ec8 Binary files /dev/null and b/figures/rebrickable/75934/Owen_Grady/minifig.jpg differ diff --git a/figures/rebrickable/75934/set.jpg b/figures/rebrickable/75934/set.jpg new file mode 100644 index 0000000..d199ccb Binary files /dev/null and b/figures/rebrickable/75934/set.jpg differ diff --git a/figures/rebrickable/75935/Claire_Dearing/head.jpg b/figures/rebrickable/75935/Claire_Dearing/head.jpg new file mode 100644 index 0000000..55fc04f Binary files /dev/null and b/figures/rebrickable/75935/Claire_Dearing/head.jpg differ diff --git a/figures/rebrickable/75935/Claire_Dearing/minifig.jpg b/figures/rebrickable/75935/Claire_Dearing/minifig.jpg new file mode 100644 index 0000000..962e97c Binary files /dev/null and b/figures/rebrickable/75935/Claire_Dearing/minifig.jpg differ diff --git a/figures/rebrickable/75935/Danny_Nedermeyer/head.jpg b/figures/rebrickable/75935/Danny_Nedermeyer/head.jpg new file mode 100644 index 0000000..2e3e743 Binary files /dev/null and b/figures/rebrickable/75935/Danny_Nedermeyer/head.jpg differ diff --git a/figures/rebrickable/75935/Danny_Nedermeyer/minifig.jpg b/figures/rebrickable/75935/Danny_Nedermeyer/minifig.jpg new file mode 100644 index 0000000..b2e19db Binary files /dev/null and b/figures/rebrickable/75935/Danny_Nedermeyer/minifig.jpg differ diff --git a/figures/rebrickable/75935/Owen_Grady/head.jpg b/figures/rebrickable/75935/Owen_Grady/head.jpg new file mode 100644 index 0000000..e2259e3 Binary files /dev/null and b/figures/rebrickable/75935/Owen_Grady/head.jpg differ diff --git a/figures/rebrickable/75935/Owen_Grady/minifig.jpg b/figures/rebrickable/75935/Owen_Grady/minifig.jpg new file mode 100644 index 0000000..d5f0ec8 Binary files /dev/null and b/figures/rebrickable/75935/Owen_Grady/minifig.jpg differ diff --git a/figures/rebrickable/75935/Sinjin_Prescott/head.jpg b/figures/rebrickable/75935/Sinjin_Prescott/head.jpg new file mode 100644 index 0000000..9ad5849 Binary files /dev/null and b/figures/rebrickable/75935/Sinjin_Prescott/head.jpg differ diff --git a/figures/rebrickable/75935/Sinjin_Prescott/minifig.jpg b/figures/rebrickable/75935/Sinjin_Prescott/minifig.jpg new file mode 100644 index 0000000..cbfca3f Binary files /dev/null and b/figures/rebrickable/75935/Sinjin_Prescott/minifig.jpg differ diff --git a/figures/rebrickable/75935/set.jpg b/figures/rebrickable/75935/set.jpg new file mode 100644 index 0000000..c674f21 Binary files /dev/null and b/figures/rebrickable/75935/set.jpg differ diff --git a/figures/rebrickable/75936/Alan_Grant/head.jpg b/figures/rebrickable/75936/Alan_Grant/head.jpg new file mode 100644 index 0000000..efa855f Binary files /dev/null and b/figures/rebrickable/75936/Alan_Grant/head.jpg differ diff --git a/figures/rebrickable/75936/Alan_Grant/minifig.jpg b/figures/rebrickable/75936/Alan_Grant/minifig.jpg new file mode 100644 index 0000000..e443db2 Binary files /dev/null and b/figures/rebrickable/75936/Alan_Grant/minifig.jpg differ diff --git a/figures/rebrickable/75936/Dennis_Nedry/head.jpg b/figures/rebrickable/75936/Dennis_Nedry/head.jpg new file mode 100644 index 0000000..e9eb4a7 Binary files /dev/null and b/figures/rebrickable/75936/Dennis_Nedry/head.jpg differ diff --git a/figures/rebrickable/75936/Dennis_Nedry/minifig.jpg b/figures/rebrickable/75936/Dennis_Nedry/minifig.jpg new file mode 100644 index 0000000..e96a2f7 Binary files /dev/null and b/figures/rebrickable/75936/Dennis_Nedry/minifig.jpg differ diff --git a/figures/rebrickable/75936/Ellie_Sattler/head.jpg b/figures/rebrickable/75936/Ellie_Sattler/head.jpg new file mode 100644 index 0000000..fc9ef50 Binary files /dev/null and b/figures/rebrickable/75936/Ellie_Sattler/head.jpg differ diff --git a/figures/rebrickable/75936/Ellie_Sattler/minifig.jpg b/figures/rebrickable/75936/Ellie_Sattler/minifig.jpg new file mode 100644 index 0000000..808ec44 Binary files /dev/null and b/figures/rebrickable/75936/Ellie_Sattler/minifig.jpg differ diff --git a/figures/rebrickable/75936/Ian_Malcolm/head.jpg b/figures/rebrickable/75936/Ian_Malcolm/head.jpg new file mode 100644 index 0000000..ac39841 Binary files /dev/null and b/figures/rebrickable/75936/Ian_Malcolm/head.jpg differ diff --git a/figures/rebrickable/75936/Ian_Malcolm/minifig.jpg b/figures/rebrickable/75936/Ian_Malcolm/minifig.jpg new file mode 100644 index 0000000..dd39f8a Binary files /dev/null and b/figures/rebrickable/75936/Ian_Malcolm/minifig.jpg differ diff --git a/figures/rebrickable/75936/John_Hammond/head.jpg b/figures/rebrickable/75936/John_Hammond/head.jpg new file mode 100644 index 0000000..b860c6e Binary files /dev/null and b/figures/rebrickable/75936/John_Hammond/head.jpg differ diff --git a/figures/rebrickable/75936/John_Hammond/minifig.jpg b/figures/rebrickable/75936/John_Hammond/minifig.jpg new file mode 100644 index 0000000..ff7dfbc Binary files /dev/null and b/figures/rebrickable/75936/John_Hammond/minifig.jpg differ diff --git a/figures/rebrickable/75936/Ray_Arnold/head.jpg b/figures/rebrickable/75936/Ray_Arnold/head.jpg new file mode 100644 index 0000000..fa5f5f8 Binary files /dev/null and b/figures/rebrickable/75936/Ray_Arnold/head.jpg differ diff --git a/figures/rebrickable/75936/Ray_Arnold/minifig.jpg b/figures/rebrickable/75936/Ray_Arnold/minifig.jpg new file mode 100644 index 0000000..cd0607a Binary files /dev/null and b/figures/rebrickable/75936/Ray_Arnold/minifig.jpg differ diff --git a/figures/rebrickable/75936/set.jpg b/figures/rebrickable/75936/set.jpg new file mode 100644 index 0000000..44bdfd0 Binary files /dev/null and b/figures/rebrickable/75936/set.jpg differ diff --git a/figures/rebrickable/75937/Allison_Miles/head.jpg b/figures/rebrickable/75937/Allison_Miles/head.jpg new file mode 100644 index 0000000..1186af5 Binary files /dev/null and b/figures/rebrickable/75937/Allison_Miles/head.jpg differ diff --git a/figures/rebrickable/75937/Allison_Miles/minifig.jpg b/figures/rebrickable/75937/Allison_Miles/minifig.jpg new file mode 100644 index 0000000..3061e89 Binary files /dev/null and b/figures/rebrickable/75937/Allison_Miles/minifig.jpg differ diff --git a/figures/rebrickable/75937/Owen_Grady/head.jpg b/figures/rebrickable/75937/Owen_Grady/head.jpg new file mode 100644 index 0000000..e2259e3 Binary files /dev/null and b/figures/rebrickable/75937/Owen_Grady/head.jpg differ diff --git a/figures/rebrickable/75937/Owen_Grady/minifig.jpg b/figures/rebrickable/75937/Owen_Grady/minifig.jpg new file mode 100644 index 0000000..63be9ba Binary files /dev/null and b/figures/rebrickable/75937/Owen_Grady/minifig.jpg differ diff --git a/figures/rebrickable/75937/Simon_Masrani/head.jpg b/figures/rebrickable/75937/Simon_Masrani/head.jpg new file mode 100644 index 0000000..3d842e3 Binary files /dev/null and b/figures/rebrickable/75937/Simon_Masrani/head.jpg differ diff --git a/figures/rebrickable/75937/Simon_Masrani/minifig.jpg b/figures/rebrickable/75937/Simon_Masrani/minifig.jpg new file mode 100644 index 0000000..2c13df1 Binary files /dev/null and b/figures/rebrickable/75937/Simon_Masrani/minifig.jpg differ diff --git a/figures/rebrickable/75937/set.jpg b/figures/rebrickable/75937/set.jpg new file mode 100644 index 0000000..18bcebc Binary files /dev/null and b/figures/rebrickable/75937/set.jpg differ diff --git a/figures/rebrickable/75938/Claire_Dearing/head.jpg b/figures/rebrickable/75938/Claire_Dearing/head.jpg new file mode 100644 index 0000000..55fc04f Binary files /dev/null and b/figures/rebrickable/75938/Claire_Dearing/head.jpg differ diff --git a/figures/rebrickable/75938/Danny_Nedermeyer/head.jpg b/figures/rebrickable/75938/Danny_Nedermeyer/head.jpg new file mode 100644 index 0000000..2e3e743 Binary files /dev/null and b/figures/rebrickable/75938/Danny_Nedermeyer/head.jpg differ diff --git a/figures/rebrickable/75938/Owen_Grady/head.jpg b/figures/rebrickable/75938/Owen_Grady/head.jpg new file mode 100644 index 0000000..e2259e3 Binary files /dev/null and b/figures/rebrickable/75938/Owen_Grady/head.jpg differ diff --git a/figures/rebrickable/75938/Owen_Grady/minifig.jpg b/figures/rebrickable/75938/Owen_Grady/minifig.jpg new file mode 100644 index 0000000..63be9ba Binary files /dev/null and b/figures/rebrickable/75938/Owen_Grady/minifig.jpg differ diff --git a/figures/rebrickable/75938/Vic_Hoskins/head.jpg b/figures/rebrickable/75938/Vic_Hoskins/head.jpg new file mode 100644 index 0000000..b72ecb2 Binary files /dev/null and b/figures/rebrickable/75938/Vic_Hoskins/head.jpg differ diff --git a/figures/rebrickable/75938/Vic_Hoskins/minifig.jpg b/figures/rebrickable/75938/Vic_Hoskins/minifig.jpg new file mode 100644 index 0000000..83a444b Binary files /dev/null and b/figures/rebrickable/75938/Vic_Hoskins/minifig.jpg differ diff --git a/figures/rebrickable/75938/set.jpg b/figures/rebrickable/75938/set.jpg new file mode 100644 index 0000000..08187b3 Binary files /dev/null and b/figures/rebrickable/75938/set.jpg differ diff --git a/figures/rebrickable/75939/Henry_Wu/head.jpg b/figures/rebrickable/75939/Henry_Wu/head.jpg new file mode 100644 index 0000000..f62992e Binary files /dev/null and b/figures/rebrickable/75939/Henry_Wu/head.jpg differ diff --git a/figures/rebrickable/75939/Henry_Wu/minifig.jpg b/figures/rebrickable/75939/Henry_Wu/minifig.jpg new file mode 100644 index 0000000..fcf568b Binary files /dev/null and b/figures/rebrickable/75939/Henry_Wu/minifig.jpg differ diff --git a/figures/rebrickable/75939/Owen_Grady/head.jpg b/figures/rebrickable/75939/Owen_Grady/head.jpg new file mode 100644 index 0000000..e2259e3 Binary files /dev/null and b/figures/rebrickable/75939/Owen_Grady/head.jpg differ diff --git a/figures/rebrickable/75939/Owen_Grady/minifig.jpg b/figures/rebrickable/75939/Owen_Grady/minifig.jpg new file mode 100644 index 0000000..7604db6 Binary files /dev/null and b/figures/rebrickable/75939/Owen_Grady/minifig.jpg differ diff --git a/figures/rebrickable/75939/set.jpg b/figures/rebrickable/75939/set.jpg new file mode 100644 index 0000000..706d2d6 Binary files /dev/null and b/figures/rebrickable/75939/set.jpg differ diff --git a/figures/rebrickable/75940/Claire_Dearing/head.jpg b/figures/rebrickable/75940/Claire_Dearing/head.jpg new file mode 100644 index 0000000..55fc04f Binary files /dev/null and b/figures/rebrickable/75940/Claire_Dearing/head.jpg differ diff --git a/figures/rebrickable/75940/Claire_Dearing/minifig.jpg b/figures/rebrickable/75940/Claire_Dearing/minifig.jpg new file mode 100644 index 0000000..962e97c Binary files /dev/null and b/figures/rebrickable/75940/Claire_Dearing/minifig.jpg differ diff --git a/figures/rebrickable/75940/Owen_Grady/head.jpg b/figures/rebrickable/75940/Owen_Grady/head.jpg new file mode 100644 index 0000000..e2259e3 Binary files /dev/null and b/figures/rebrickable/75940/Owen_Grady/head.jpg differ diff --git a/figures/rebrickable/75940/Owen_Grady/minifig.jpg b/figures/rebrickable/75940/Owen_Grady/minifig.jpg new file mode 100644 index 0000000..7604db6 Binary files /dev/null and b/figures/rebrickable/75940/Owen_Grady/minifig.jpg differ diff --git a/figures/rebrickable/75940/set.jpg b/figures/rebrickable/75940/set.jpg new file mode 100644 index 0000000..a7717d8 Binary files /dev/null and b/figures/rebrickable/75940/set.jpg differ diff --git a/figures/rebrickable/75941/Claire_Dearing/head.jpg b/figures/rebrickable/75941/Claire_Dearing/head.jpg new file mode 100644 index 0000000..55fc04f Binary files /dev/null and b/figures/rebrickable/75941/Claire_Dearing/head.jpg differ diff --git a/figures/rebrickable/75941/Claire_Dearing/minifig.jpg b/figures/rebrickable/75941/Claire_Dearing/minifig.jpg new file mode 100644 index 0000000..065a219 Binary files /dev/null and b/figures/rebrickable/75941/Claire_Dearing/minifig.jpg differ diff --git a/figures/rebrickable/75941/Gray_Mitchell/head.jpg b/figures/rebrickable/75941/Gray_Mitchell/head.jpg new file mode 100644 index 0000000..20eaf4f Binary files /dev/null and b/figures/rebrickable/75941/Gray_Mitchell/head.jpg differ diff --git a/figures/rebrickable/75941/Gray_Mitchell/minifig.jpg b/figures/rebrickable/75941/Gray_Mitchell/minifig.jpg new file mode 100644 index 0000000..e6a2a5c Binary files /dev/null and b/figures/rebrickable/75941/Gray_Mitchell/minifig.jpg differ diff --git a/figures/rebrickable/75941/Owen_Grady/head.jpg b/figures/rebrickable/75941/Owen_Grady/head.jpg new file mode 100644 index 0000000..e2259e3 Binary files /dev/null and b/figures/rebrickable/75941/Owen_Grady/head.jpg differ diff --git a/figures/rebrickable/75941/Owen_Grady/minifig.jpg b/figures/rebrickable/75941/Owen_Grady/minifig.jpg new file mode 100644 index 0000000..d5f0ec8 Binary files /dev/null and b/figures/rebrickable/75941/Owen_Grady/minifig.jpg differ diff --git a/figures/rebrickable/75941/Zach_Mitchell/head.jpg b/figures/rebrickable/75941/Zach_Mitchell/head.jpg new file mode 100644 index 0000000..32783a9 Binary files /dev/null and b/figures/rebrickable/75941/Zach_Mitchell/head.jpg differ diff --git a/figures/rebrickable/75941/Zach_Mitchell/minifig.jpg b/figures/rebrickable/75941/Zach_Mitchell/minifig.jpg new file mode 100644 index 0000000..443dda9 Binary files /dev/null and b/figures/rebrickable/75941/Zach_Mitchell/minifig.jpg differ diff --git a/figures/rebrickable/75941/set.jpg b/figures/rebrickable/75941/set.jpg new file mode 100644 index 0000000..4aed426 Binary files /dev/null and b/figures/rebrickable/75941/set.jpg differ diff --git a/figures/rebrickable/75942/Owen_Grady/head.jpg b/figures/rebrickable/75942/Owen_Grady/head.jpg new file mode 100644 index 0000000..e2259e3 Binary files /dev/null and b/figures/rebrickable/75942/Owen_Grady/head.jpg differ diff --git a/figures/rebrickable/75942/Owen_Grady/minifig.jpg b/figures/rebrickable/75942/Owen_Grady/minifig.jpg new file mode 100644 index 0000000..7604db6 Binary files /dev/null and b/figures/rebrickable/75942/Owen_Grady/minifig.jpg differ diff --git a/figures/rebrickable/75942/Sinjin_Prescott/head.jpg b/figures/rebrickable/75942/Sinjin_Prescott/head.jpg new file mode 100644 index 0000000..9ad5849 Binary files /dev/null and b/figures/rebrickable/75942/Sinjin_Prescott/head.jpg differ diff --git a/figures/rebrickable/75942/Sinjin_Prescott/minifig.jpg b/figures/rebrickable/75942/Sinjin_Prescott/minifig.jpg new file mode 100644 index 0000000..cbfca3f Binary files /dev/null and b/figures/rebrickable/75942/Sinjin_Prescott/minifig.jpg differ diff --git a/figures/rebrickable/75942/set.jpg b/figures/rebrickable/75942/set.jpg new file mode 100644 index 0000000..0d02be4 Binary files /dev/null and b/figures/rebrickable/75942/set.jpg differ diff --git a/figures/rebrickable/76939/Ben/head.jpg b/figures/rebrickable/76939/Ben/head.jpg new file mode 100644 index 0000000..a938674 Binary files /dev/null and b/figures/rebrickable/76939/Ben/head.jpg differ diff --git a/figures/rebrickable/76939/Ben/minifig.jpg b/figures/rebrickable/76939/Ben/minifig.jpg new file mode 100644 index 0000000..80b0222 Binary files /dev/null and b/figures/rebrickable/76939/Ben/minifig.jpg differ diff --git a/figures/rebrickable/76939/Brooklynn/head.jpg b/figures/rebrickable/76939/Brooklynn/head.jpg new file mode 100644 index 0000000..6eb587f Binary files /dev/null and b/figures/rebrickable/76939/Brooklynn/head.jpg differ diff --git a/figures/rebrickable/76939/Brooklynn/minifig.jpg b/figures/rebrickable/76939/Brooklynn/minifig.jpg new file mode 100644 index 0000000..6e1df37 Binary files /dev/null and b/figures/rebrickable/76939/Brooklynn/minifig.jpg differ diff --git a/figures/rebrickable/76939/Claire_Dearing/head.jpg b/figures/rebrickable/76939/Claire_Dearing/head.jpg new file mode 100644 index 0000000..55fc04f Binary files /dev/null and b/figures/rebrickable/76939/Claire_Dearing/head.jpg differ diff --git a/figures/rebrickable/76939/Claire_Dearing/minifig.jpg b/figures/rebrickable/76939/Claire_Dearing/minifig.jpg new file mode 100644 index 0000000..962e97c Binary files /dev/null and b/figures/rebrickable/76939/Claire_Dearing/minifig.jpg differ diff --git a/figures/rebrickable/76939/set.jpg b/figures/rebrickable/76939/set.jpg new file mode 100644 index 0000000..4442140 Binary files /dev/null and b/figures/rebrickable/76939/set.jpg differ diff --git a/figures/rebrickable/76940/Darius/head.jpg b/figures/rebrickable/76940/Darius/head.jpg new file mode 100644 index 0000000..806704c Binary files /dev/null and b/figures/rebrickable/76940/Darius/head.jpg differ diff --git a/figures/rebrickable/76940/Darius/minifig.jpg b/figures/rebrickable/76940/Darius/minifig.jpg new file mode 100644 index 0000000..c3500bd Binary files /dev/null and b/figures/rebrickable/76940/Darius/minifig.jpg differ diff --git a/figures/rebrickable/76940/Owen_Grady/head.jpg b/figures/rebrickable/76940/Owen_Grady/head.jpg new file mode 100644 index 0000000..e2259e3 Binary files /dev/null and b/figures/rebrickable/76940/Owen_Grady/head.jpg differ diff --git a/figures/rebrickable/76940/Owen_Grady/minifig.jpg b/figures/rebrickable/76940/Owen_Grady/minifig.jpg new file mode 100644 index 0000000..d5f0ec8 Binary files /dev/null and b/figures/rebrickable/76940/Owen_Grady/minifig.jpg differ diff --git a/figures/rebrickable/76940/set.jpg b/figures/rebrickable/76940/set.jpg new file mode 100644 index 0000000..24947a8 Binary files /dev/null and b/figures/rebrickable/76940/set.jpg differ diff --git a/figures/rebrickable/76941/Kenji/head.jpg b/figures/rebrickable/76941/Kenji/head.jpg new file mode 100644 index 0000000..eed7da6 Binary files /dev/null and b/figures/rebrickable/76941/Kenji/head.jpg differ diff --git a/figures/rebrickable/76941/Kenji/minifig.jpg b/figures/rebrickable/76941/Kenji/minifig.jpg new file mode 100644 index 0000000..39dde27 Binary files /dev/null and b/figures/rebrickable/76941/Kenji/minifig.jpg differ diff --git a/figures/rebrickable/76941/Owen_Grady/head.jpg b/figures/rebrickable/76941/Owen_Grady/head.jpg new file mode 100644 index 0000000..e2259e3 Binary files /dev/null and b/figures/rebrickable/76941/Owen_Grady/head.jpg differ diff --git a/figures/rebrickable/76941/Owen_Grady/minifig.jpg b/figures/rebrickable/76941/Owen_Grady/minifig.jpg new file mode 100644 index 0000000..d5f0ec8 Binary files /dev/null and b/figures/rebrickable/76941/Owen_Grady/minifig.jpg differ diff --git a/figures/rebrickable/76941/Sammy/head.jpg b/figures/rebrickable/76941/Sammy/head.jpg new file mode 100644 index 0000000..06a9667 Binary files /dev/null and b/figures/rebrickable/76941/Sammy/head.jpg differ diff --git a/figures/rebrickable/76941/Sammy/minifig.jpg b/figures/rebrickable/76941/Sammy/minifig.jpg new file mode 100644 index 0000000..43dcbe0 Binary files /dev/null and b/figures/rebrickable/76941/Sammy/minifig.jpg differ diff --git a/figures/rebrickable/76941/set.jpg b/figures/rebrickable/76941/set.jpg new file mode 100644 index 0000000..f95e354 Binary files /dev/null and b/figures/rebrickable/76941/set.jpg differ diff --git a/figures/rebrickable/76942/Darius/head.jpg b/figures/rebrickable/76942/Darius/head.jpg new file mode 100644 index 0000000..806704c Binary files /dev/null and b/figures/rebrickable/76942/Darius/head.jpg differ diff --git a/figures/rebrickable/76942/Darius/minifig.jpg b/figures/rebrickable/76942/Darius/minifig.jpg new file mode 100644 index 0000000..aca51e6 Binary files /dev/null and b/figures/rebrickable/76942/Darius/minifig.jpg differ diff --git a/figures/rebrickable/76942/Owen_Grady/head.jpg b/figures/rebrickable/76942/Owen_Grady/head.jpg new file mode 100644 index 0000000..e2259e3 Binary files /dev/null and b/figures/rebrickable/76942/Owen_Grady/head.jpg differ diff --git a/figures/rebrickable/76942/Owen_Grady/minifig.jpg b/figures/rebrickable/76942/Owen_Grady/minifig.jpg new file mode 100644 index 0000000..d5f0ec8 Binary files /dev/null and b/figures/rebrickable/76942/Owen_Grady/minifig.jpg differ diff --git a/figures/rebrickable/76942/Yaz/head.jpg b/figures/rebrickable/76942/Yaz/head.jpg new file mode 100644 index 0000000..67b9c52 Binary files /dev/null and b/figures/rebrickable/76942/Yaz/head.jpg differ diff --git a/figures/rebrickable/76942/Yaz/minifig.jpg b/figures/rebrickable/76942/Yaz/minifig.jpg new file mode 100644 index 0000000..e3e4d1b Binary files /dev/null and b/figures/rebrickable/76942/Yaz/minifig.jpg differ diff --git a/figures/rebrickable/76942/set.jpg b/figures/rebrickable/76942/set.jpg new file mode 100644 index 0000000..9b0eb11 Binary files /dev/null and b/figures/rebrickable/76942/set.jpg differ diff --git a/figures/rebrickable/76943/Maisie_Lockwood/head.jpg b/figures/rebrickable/76943/Maisie_Lockwood/head.jpg new file mode 100644 index 0000000..1dbf6e1 Binary files /dev/null and b/figures/rebrickable/76943/Maisie_Lockwood/head.jpg differ diff --git a/figures/rebrickable/76943/Maisie_Lockwood/minifig.jpg b/figures/rebrickable/76943/Maisie_Lockwood/minifig.jpg new file mode 100644 index 0000000..921c134 Binary files /dev/null and b/figures/rebrickable/76943/Maisie_Lockwood/minifig.jpg differ diff --git a/figures/rebrickable/76943/Owen_Grady/head.jpg b/figures/rebrickable/76943/Owen_Grady/head.jpg new file mode 100644 index 0000000..e2259e3 Binary files /dev/null and b/figures/rebrickable/76943/Owen_Grady/head.jpg differ diff --git a/figures/rebrickable/76943/Owen_Grady/minifig.jpg b/figures/rebrickable/76943/Owen_Grady/minifig.jpg new file mode 100644 index 0000000..8f53656 Binary files /dev/null and b/figures/rebrickable/76943/Owen_Grady/minifig.jpg differ diff --git a/figures/rebrickable/76943/set.jpg b/figures/rebrickable/76943/set.jpg new file mode 100644 index 0000000..8842119 Binary files /dev/null and b/figures/rebrickable/76943/set.jpg differ diff --git a/figures/rebrickable/76944/Owen_Grady/head.jpg b/figures/rebrickable/76944/Owen_Grady/head.jpg new file mode 100644 index 0000000..e2259e3 Binary files /dev/null and b/figures/rebrickable/76944/Owen_Grady/head.jpg differ diff --git a/figures/rebrickable/76944/Owen_Grady/minifig.jpg b/figures/rebrickable/76944/Owen_Grady/minifig.jpg new file mode 100644 index 0000000..39f71e6 Binary files /dev/null and b/figures/rebrickable/76944/Owen_Grady/minifig.jpg differ diff --git a/figures/rebrickable/76944/Zia_Rodriguez/head.jpg b/figures/rebrickable/76944/Zia_Rodriguez/head.jpg new file mode 100644 index 0000000..f22fd82 Binary files /dev/null and b/figures/rebrickable/76944/Zia_Rodriguez/head.jpg differ diff --git a/figures/rebrickable/76944/Zia_Rodriguez/minifig.jpg b/figures/rebrickable/76944/Zia_Rodriguez/minifig.jpg new file mode 100644 index 0000000..b041ac5 Binary files /dev/null and b/figures/rebrickable/76944/Zia_Rodriguez/minifig.jpg differ diff --git a/figures/rebrickable/76944/set.jpg b/figures/rebrickable/76944/set.jpg new file mode 100644 index 0000000..e258dcd Binary files /dev/null and b/figures/rebrickable/76944/set.jpg differ diff --git a/figures/rebrickable/76945/Owen_Grady/head.jpg b/figures/rebrickable/76945/Owen_Grady/head.jpg new file mode 100644 index 0000000..e2259e3 Binary files /dev/null and b/figures/rebrickable/76945/Owen_Grady/head.jpg differ diff --git a/figures/rebrickable/76945/Owen_Grady/minifig.jpg b/figures/rebrickable/76945/Owen_Grady/minifig.jpg new file mode 100644 index 0000000..63be9ba Binary files /dev/null and b/figures/rebrickable/76945/Owen_Grady/minifig.jpg differ diff --git a/figures/rebrickable/76945/Rainn_DeLaCourt/head.jpg b/figures/rebrickable/76945/Rainn_DeLaCourt/head.jpg new file mode 100644 index 0000000..34452d1 Binary files /dev/null and b/figures/rebrickable/76945/Rainn_DeLaCourt/head.jpg differ diff --git a/figures/rebrickable/76945/Rainn_DeLaCourt/minifig.jpg b/figures/rebrickable/76945/Rainn_DeLaCourt/minifig.jpg new file mode 100644 index 0000000..4ea4e96 Binary files /dev/null and b/figures/rebrickable/76945/Rainn_DeLaCourt/minifig.jpg differ diff --git a/figures/rebrickable/76945/set.jpg b/figures/rebrickable/76945/set.jpg new file mode 100644 index 0000000..683a356 Binary files /dev/null and b/figures/rebrickable/76945/set.jpg differ diff --git a/figures/rebrickable/76946/Maisie_Lockwood/head.jpg b/figures/rebrickable/76946/Maisie_Lockwood/head.jpg new file mode 100644 index 0000000..1dbf6e1 Binary files /dev/null and b/figures/rebrickable/76946/Maisie_Lockwood/head.jpg differ diff --git a/figures/rebrickable/76946/Maisie_Lockwood/minifig.jpg b/figures/rebrickable/76946/Maisie_Lockwood/minifig.jpg new file mode 100644 index 0000000..9c5fa0b Binary files /dev/null and b/figures/rebrickable/76946/Maisie_Lockwood/minifig.jpg differ diff --git a/figures/rebrickable/76946/Rainn_DeLaCourt/head.jpg b/figures/rebrickable/76946/Rainn_DeLaCourt/head.jpg new file mode 100644 index 0000000..34452d1 Binary files /dev/null and b/figures/rebrickable/76946/Rainn_DeLaCourt/head.jpg differ diff --git a/figures/rebrickable/76946/Rainn_DeLaCourt/minifig.jpg b/figures/rebrickable/76946/Rainn_DeLaCourt/minifig.jpg new file mode 100644 index 0000000..5d6e7c0 Binary files /dev/null and b/figures/rebrickable/76946/Rainn_DeLaCourt/minifig.jpg differ diff --git a/figures/rebrickable/76946/set.jpg b/figures/rebrickable/76946/set.jpg new file mode 100644 index 0000000..23f6c2d Binary files /dev/null and b/figures/rebrickable/76946/set.jpg differ diff --git a/figures/rebrickable/76947/Claire_Dearing/head.jpg b/figures/rebrickable/76947/Claire_Dearing/head.jpg new file mode 100644 index 0000000..55fc04f Binary files /dev/null and b/figures/rebrickable/76947/Claire_Dearing/head.jpg differ diff --git a/figures/rebrickable/76947/Claire_Dearing/minifig.jpg b/figures/rebrickable/76947/Claire_Dearing/minifig.jpg new file mode 100644 index 0000000..85ad7cf Binary files /dev/null and b/figures/rebrickable/76947/Claire_Dearing/minifig.jpg differ diff --git a/figures/rebrickable/76947/Kayla_Watts/head.jpg b/figures/rebrickable/76947/Kayla_Watts/head.jpg new file mode 100644 index 0000000..26a5bd5 Binary files /dev/null and b/figures/rebrickable/76947/Kayla_Watts/head.jpg differ diff --git a/figures/rebrickable/76947/Kayla_Watts/minifig.jpg b/figures/rebrickable/76947/Kayla_Watts/minifig.jpg new file mode 100644 index 0000000..9d6bcb9 Binary files /dev/null and b/figures/rebrickable/76947/Kayla_Watts/minifig.jpg differ diff --git a/figures/rebrickable/76947/Owen_Grady/head.jpg b/figures/rebrickable/76947/Owen_Grady/head.jpg new file mode 100644 index 0000000..e2259e3 Binary files /dev/null and b/figures/rebrickable/76947/Owen_Grady/head.jpg differ diff --git a/figures/rebrickable/76947/Owen_Grady/minifig.jpg b/figures/rebrickable/76947/Owen_Grady/minifig.jpg new file mode 100644 index 0000000..63be9ba Binary files /dev/null and b/figures/rebrickable/76947/Owen_Grady/minifig.jpg differ diff --git a/figures/rebrickable/76947/set.jpg b/figures/rebrickable/76947/set.jpg new file mode 100644 index 0000000..8909120 Binary files /dev/null and b/figures/rebrickable/76947/set.jpg differ diff --git a/figures/rebrickable/76948/Claire_Dearing/head.jpg b/figures/rebrickable/76948/Claire_Dearing/head.jpg new file mode 100644 index 0000000..55fc04f Binary files /dev/null and b/figures/rebrickable/76948/Claire_Dearing/head.jpg differ diff --git a/figures/rebrickable/76948/Claire_Dearing/minifig.jpg b/figures/rebrickable/76948/Claire_Dearing/minifig.jpg new file mode 100644 index 0000000..85ad7cf Binary files /dev/null and b/figures/rebrickable/76948/Claire_Dearing/minifig.jpg differ diff --git a/figures/rebrickable/76948/Owen_Grady/head.jpg b/figures/rebrickable/76948/Owen_Grady/head.jpg new file mode 100644 index 0000000..e2259e3 Binary files /dev/null and b/figures/rebrickable/76948/Owen_Grady/head.jpg differ diff --git a/figures/rebrickable/76948/Owen_Grady/minifig.jpg b/figures/rebrickable/76948/Owen_Grady/minifig.jpg new file mode 100644 index 0000000..63be9ba Binary files /dev/null and b/figures/rebrickable/76948/Owen_Grady/minifig.jpg differ diff --git a/figures/rebrickable/76948/Rainn_DeLaCourt/head.jpg b/figures/rebrickable/76948/Rainn_DeLaCourt/head.jpg new file mode 100644 index 0000000..34452d1 Binary files /dev/null and b/figures/rebrickable/76948/Rainn_DeLaCourt/head.jpg differ diff --git a/figures/rebrickable/76948/Rainn_DeLaCourt/minifig.jpg b/figures/rebrickable/76948/Rainn_DeLaCourt/minifig.jpg new file mode 100644 index 0000000..4ea4e96 Binary files /dev/null and b/figures/rebrickable/76948/Rainn_DeLaCourt/minifig.jpg differ diff --git a/figures/rebrickable/76948/Soyona_Santos/head.jpg b/figures/rebrickable/76948/Soyona_Santos/head.jpg new file mode 100644 index 0000000..05f49d8 Binary files /dev/null and b/figures/rebrickable/76948/Soyona_Santos/head.jpg differ diff --git a/figures/rebrickable/76948/Soyona_Santos/minifig.jpg b/figures/rebrickable/76948/Soyona_Santos/minifig.jpg new file mode 100644 index 0000000..933d9d7 Binary files /dev/null and b/figures/rebrickable/76948/Soyona_Santos/minifig.jpg differ diff --git a/figures/rebrickable/76948/set.jpg b/figures/rebrickable/76948/set.jpg new file mode 100644 index 0000000..4777808 Binary files /dev/null and b/figures/rebrickable/76948/set.jpg differ diff --git a/figures/rebrickable/76949/Alan_Grant/head.jpg b/figures/rebrickable/76949/Alan_Grant/head.jpg new file mode 100644 index 0000000..39bd122 Binary files /dev/null and b/figures/rebrickable/76949/Alan_Grant/head.jpg differ diff --git a/figures/rebrickable/76949/Alan_Grant/minifig.jpg b/figures/rebrickable/76949/Alan_Grant/minifig.jpg new file mode 100644 index 0000000..e657445 Binary files /dev/null and b/figures/rebrickable/76949/Alan_Grant/minifig.jpg differ diff --git a/figures/rebrickable/76949/Claire_Dearing/head.jpg b/figures/rebrickable/76949/Claire_Dearing/head.jpg new file mode 100644 index 0000000..55fc04f Binary files /dev/null and b/figures/rebrickable/76949/Claire_Dearing/head.jpg differ diff --git a/figures/rebrickable/76949/Claire_Dearing/minifig.jpg b/figures/rebrickable/76949/Claire_Dearing/minifig.jpg new file mode 100644 index 0000000..85ad7cf Binary files /dev/null and b/figures/rebrickable/76949/Claire_Dearing/minifig.jpg differ diff --git a/figures/rebrickable/76949/Ellie_Sattler/head.jpg b/figures/rebrickable/76949/Ellie_Sattler/head.jpg new file mode 100644 index 0000000..4c8f435 Binary files /dev/null and b/figures/rebrickable/76949/Ellie_Sattler/head.jpg differ diff --git a/figures/rebrickable/76949/Ellie_Sattler/minifig.jpg b/figures/rebrickable/76949/Ellie_Sattler/minifig.jpg new file mode 100644 index 0000000..53c0185 Binary files /dev/null and b/figures/rebrickable/76949/Ellie_Sattler/minifig.jpg differ diff --git a/figures/rebrickable/76949/Henry_Wu/head.jpg b/figures/rebrickable/76949/Henry_Wu/head.jpg new file mode 100644 index 0000000..5c7f7af Binary files /dev/null and b/figures/rebrickable/76949/Henry_Wu/head.jpg differ diff --git a/figures/rebrickable/76949/Henry_Wu/minifig.jpg b/figures/rebrickable/76949/Henry_Wu/minifig.jpg new file mode 100644 index 0000000..b15304b Binary files /dev/null and b/figures/rebrickable/76949/Henry_Wu/minifig.jpg differ diff --git a/figures/rebrickable/76949/Kayla_Watts/head.jpg b/figures/rebrickable/76949/Kayla_Watts/head.jpg new file mode 100644 index 0000000..26a5bd5 Binary files /dev/null and b/figures/rebrickable/76949/Kayla_Watts/head.jpg differ diff --git a/figures/rebrickable/76949/Kayla_Watts/minifig.jpg b/figures/rebrickable/76949/Kayla_Watts/minifig.jpg new file mode 100644 index 0000000..9d6bcb9 Binary files /dev/null and b/figures/rebrickable/76949/Kayla_Watts/minifig.jpg differ diff --git a/figures/rebrickable/76949/Owen_Grady/head.jpg b/figures/rebrickable/76949/Owen_Grady/head.jpg new file mode 100644 index 0000000..e2259e3 Binary files /dev/null and b/figures/rebrickable/76949/Owen_Grady/head.jpg differ diff --git a/figures/rebrickable/76949/Owen_Grady/minifig.jpg b/figures/rebrickable/76949/Owen_Grady/minifig.jpg new file mode 100644 index 0000000..63be9ba Binary files /dev/null and b/figures/rebrickable/76949/Owen_Grady/minifig.jpg differ diff --git a/figures/rebrickable/76949/set.jpg b/figures/rebrickable/76949/set.jpg new file mode 100644 index 0000000..4794ba0 Binary files /dev/null and b/figures/rebrickable/76949/set.jpg differ diff --git a/figures/rebrickable/76950/Claire_Dearing/head.jpg b/figures/rebrickable/76950/Claire_Dearing/head.jpg new file mode 100644 index 0000000..55fc04f Binary files /dev/null and b/figures/rebrickable/76950/Claire_Dearing/head.jpg differ diff --git a/figures/rebrickable/76950/Claire_Dearing/minifig.jpg b/figures/rebrickable/76950/Claire_Dearing/minifig.jpg new file mode 100644 index 0000000..b4a4c5e Binary files /dev/null and b/figures/rebrickable/76950/Claire_Dearing/minifig.jpg differ diff --git a/figures/rebrickable/76950/Franklin_Web/head.jpg b/figures/rebrickable/76950/Franklin_Web/head.jpg new file mode 100644 index 0000000..e2eacdc Binary files /dev/null and b/figures/rebrickable/76950/Franklin_Web/head.jpg differ diff --git a/figures/rebrickable/76950/Franklin_Web/minifig.jpg b/figures/rebrickable/76950/Franklin_Web/minifig.jpg new file mode 100644 index 0000000..dd74bbf Binary files /dev/null and b/figures/rebrickable/76950/Franklin_Web/minifig.jpg differ diff --git a/figures/rebrickable/76950/set.jpg b/figures/rebrickable/76950/set.jpg new file mode 100644 index 0000000..f26c25d Binary files /dev/null and b/figures/rebrickable/76950/set.jpg differ diff --git a/figures/rebrickable/76951/Ellie_Sattler/head.jpg b/figures/rebrickable/76951/Ellie_Sattler/head.jpg new file mode 100644 index 0000000..4c8f435 Binary files /dev/null and b/figures/rebrickable/76951/Ellie_Sattler/head.jpg differ diff --git a/figures/rebrickable/76951/Ellie_Sattler/minifig.jpg b/figures/rebrickable/76951/Ellie_Sattler/minifig.jpg new file mode 100644 index 0000000..53c0185 Binary files /dev/null and b/figures/rebrickable/76951/Ellie_Sattler/minifig.jpg differ diff --git a/figures/rebrickable/76951/Ian_Malcolm/head.jpg b/figures/rebrickable/76951/Ian_Malcolm/head.jpg new file mode 100644 index 0000000..257247a Binary files /dev/null and b/figures/rebrickable/76951/Ian_Malcolm/head.jpg differ diff --git a/figures/rebrickable/76951/Ian_Malcolm/minifig.jpg b/figures/rebrickable/76951/Ian_Malcolm/minifig.jpg new file mode 100644 index 0000000..19dab1a Binary files /dev/null and b/figures/rebrickable/76951/Ian_Malcolm/minifig.jpg differ diff --git a/figures/rebrickable/76951/set.jpg b/figures/rebrickable/76951/set.jpg new file mode 100644 index 0000000..e48c017 Binary files /dev/null and b/figures/rebrickable/76951/set.jpg differ diff --git a/figures/rebrickable/76956/Alan_Grant/head.jpg b/figures/rebrickable/76956/Alan_Grant/head.jpg new file mode 100644 index 0000000..8e80c4c Binary files /dev/null and b/figures/rebrickable/76956/Alan_Grant/head.jpg differ diff --git a/figures/rebrickable/76956/Alan_Grant/minifig.jpg b/figures/rebrickable/76956/Alan_Grant/minifig.jpg new file mode 100644 index 0000000..0679a46 Binary files /dev/null and b/figures/rebrickable/76956/Alan_Grant/minifig.jpg differ diff --git a/figures/rebrickable/76956/Ian_Malcolm/head.jpg b/figures/rebrickable/76956/Ian_Malcolm/head.jpg new file mode 100644 index 0000000..a114dcf Binary files /dev/null and b/figures/rebrickable/76956/Ian_Malcolm/head.jpg differ diff --git a/figures/rebrickable/76956/Ian_Malcolm/minifig.jpg b/figures/rebrickable/76956/Ian_Malcolm/minifig.jpg new file mode 100644 index 0000000..81271b5 Binary files /dev/null and b/figures/rebrickable/76956/Ian_Malcolm/minifig.jpg differ diff --git a/figures/rebrickable/76956/Lex_Murphy/head.jpg b/figures/rebrickable/76956/Lex_Murphy/head.jpg new file mode 100644 index 0000000..8df04cf Binary files /dev/null and b/figures/rebrickable/76956/Lex_Murphy/head.jpg differ diff --git a/figures/rebrickable/76956/Lex_Murphy/minifig.jpg b/figures/rebrickable/76956/Lex_Murphy/minifig.jpg new file mode 100644 index 0000000..d2cb4b3 Binary files /dev/null and b/figures/rebrickable/76956/Lex_Murphy/minifig.jpg differ diff --git a/figures/rebrickable/76956/Tim_Murphy/head.jpg b/figures/rebrickable/76956/Tim_Murphy/head.jpg new file mode 100644 index 0000000..b76d812 Binary files /dev/null and b/figures/rebrickable/76956/Tim_Murphy/head.jpg differ diff --git a/figures/rebrickable/76956/Tim_Murphy/minifig.jpg b/figures/rebrickable/76956/Tim_Murphy/minifig.jpg new file mode 100644 index 0000000..bf33a0b Binary files /dev/null and b/figures/rebrickable/76956/Tim_Murphy/minifig.jpg differ diff --git a/figures/rebrickable/76956/set.jpg b/figures/rebrickable/76956/set.jpg new file mode 100644 index 0000000..a5c44cd Binary files /dev/null and b/figures/rebrickable/76956/set.jpg differ diff --git a/figures/rebrickable/76957/Ellie_Sattler/head.jpg b/figures/rebrickable/76957/Ellie_Sattler/head.jpg new file mode 100644 index 0000000..0ec8aa4 Binary files /dev/null and b/figures/rebrickable/76957/Ellie_Sattler/head.jpg differ diff --git a/figures/rebrickable/76957/Ellie_Sattler/minifig.jpg b/figures/rebrickable/76957/Ellie_Sattler/minifig.jpg new file mode 100644 index 0000000..5850ad3 Binary files /dev/null and b/figures/rebrickable/76957/Ellie_Sattler/minifig.jpg differ diff --git a/figures/rebrickable/76957/Robert_Muldoon/head.jpg b/figures/rebrickable/76957/Robert_Muldoon/head.jpg new file mode 100644 index 0000000..65d32f7 Binary files /dev/null and b/figures/rebrickable/76957/Robert_Muldoon/head.jpg differ diff --git a/figures/rebrickable/76957/Robert_Muldoon/minifig.jpg b/figures/rebrickable/76957/Robert_Muldoon/minifig.jpg new file mode 100644 index 0000000..4c376d1 Binary files /dev/null and b/figures/rebrickable/76957/Robert_Muldoon/minifig.jpg differ diff --git a/figures/rebrickable/76957/set.jpg b/figures/rebrickable/76957/set.jpg new file mode 100644 index 0000000..6e58f59 Binary files /dev/null and b/figures/rebrickable/76957/set.jpg differ diff --git a/figures/rebrickable/76958/Dennis_Nedry/head.jpg b/figures/rebrickable/76958/Dennis_Nedry/head.jpg new file mode 100644 index 0000000..e32e6de Binary files /dev/null and b/figures/rebrickable/76958/Dennis_Nedry/head.jpg differ diff --git a/figures/rebrickable/76958/Dennis_Nedry/minifig.jpg b/figures/rebrickable/76958/Dennis_Nedry/minifig.jpg new file mode 100644 index 0000000..a17832c Binary files /dev/null and b/figures/rebrickable/76958/Dennis_Nedry/minifig.jpg differ diff --git a/figures/rebrickable/76958/set.jpg b/figures/rebrickable/76958/set.jpg new file mode 100644 index 0000000..346124b Binary files /dev/null and b/figures/rebrickable/76958/set.jpg differ diff --git a/figures/rebrickable/76959/Ellie_Sattler/head.jpg b/figures/rebrickable/76959/Ellie_Sattler/head.jpg new file mode 100644 index 0000000..fc9ef50 Binary files /dev/null and b/figures/rebrickable/76959/Ellie_Sattler/head.jpg differ diff --git a/figures/rebrickable/76959/Ellie_Sattler/minifig.jpg b/figures/rebrickable/76959/Ellie_Sattler/minifig.jpg new file mode 100644 index 0000000..1ce1173 Binary files /dev/null and b/figures/rebrickable/76959/Ellie_Sattler/minifig.jpg differ diff --git a/figures/rebrickable/76959/Ian_Malcolm/head.jpg b/figures/rebrickable/76959/Ian_Malcolm/head.jpg new file mode 100644 index 0000000..a8c8f19 Binary files /dev/null and b/figures/rebrickable/76959/Ian_Malcolm/head.jpg differ diff --git a/figures/rebrickable/76959/Ian_Malcolm/minifig.jpg b/figures/rebrickable/76959/Ian_Malcolm/minifig.jpg new file mode 100644 index 0000000..7d53909 Binary files /dev/null and b/figures/rebrickable/76959/Ian_Malcolm/minifig.jpg differ diff --git a/figures/rebrickable/76959/set.jpg b/figures/rebrickable/76959/set.jpg new file mode 100644 index 0000000..cbf03aa Binary files /dev/null and b/figures/rebrickable/76959/set.jpg differ diff --git a/figures/rebrickable/76960/Alan_Grant/head.jpg b/figures/rebrickable/76960/Alan_Grant/head.jpg new file mode 100644 index 0000000..71a577c Binary files /dev/null and b/figures/rebrickable/76960/Alan_Grant/head.jpg differ diff --git a/figures/rebrickable/76960/Alan_Grant/minifig.jpg b/figures/rebrickable/76960/Alan_Grant/minifig.jpg new file mode 100644 index 0000000..2f32411 Binary files /dev/null and b/figures/rebrickable/76960/Alan_Grant/minifig.jpg differ diff --git a/figures/rebrickable/76960/Ellie_Sattler/head.jpg b/figures/rebrickable/76960/Ellie_Sattler/head.jpg new file mode 100644 index 0000000..6eb587f Binary files /dev/null and b/figures/rebrickable/76960/Ellie_Sattler/head.jpg differ diff --git a/figures/rebrickable/76960/Ellie_Sattler/minifig.jpg b/figures/rebrickable/76960/Ellie_Sattler/minifig.jpg new file mode 100644 index 0000000..d36381b Binary files /dev/null and b/figures/rebrickable/76960/Ellie_Sattler/minifig.jpg differ diff --git a/figures/rebrickable/76960/John_Hammond/head.jpg b/figures/rebrickable/76960/John_Hammond/head.jpg new file mode 100644 index 0000000..319e191 Binary files /dev/null and b/figures/rebrickable/76960/John_Hammond/head.jpg differ diff --git a/figures/rebrickable/76960/John_Hammond/minifig.jpg b/figures/rebrickable/76960/John_Hammond/minifig.jpg new file mode 100644 index 0000000..46522fb Binary files /dev/null and b/figures/rebrickable/76960/John_Hammond/minifig.jpg differ diff --git a/figures/rebrickable/76960/set.jpg b/figures/rebrickable/76960/set.jpg new file mode 100644 index 0000000..457397b Binary files /dev/null and b/figures/rebrickable/76960/set.jpg differ diff --git a/figures/rebrickable/76961/Alan_Grant/head.jpg b/figures/rebrickable/76961/Alan_Grant/head.jpg new file mode 100644 index 0000000..71a577c Binary files /dev/null and b/figures/rebrickable/76961/Alan_Grant/head.jpg differ diff --git a/figures/rebrickable/76961/Alan_Grant/minifig.jpg b/figures/rebrickable/76961/Alan_Grant/minifig.jpg new file mode 100644 index 0000000..c5f9811 Binary files /dev/null and b/figures/rebrickable/76961/Alan_Grant/minifig.jpg differ diff --git a/figures/rebrickable/76961/Ellie_Sattler/head.jpg b/figures/rebrickable/76961/Ellie_Sattler/head.jpg new file mode 100644 index 0000000..fc9ef50 Binary files /dev/null and b/figures/rebrickable/76961/Ellie_Sattler/head.jpg differ diff --git a/figures/rebrickable/76961/Ellie_Sattler/minifig.jpg b/figures/rebrickable/76961/Ellie_Sattler/minifig.jpg new file mode 100644 index 0000000..d4f4a9b Binary files /dev/null and b/figures/rebrickable/76961/Ellie_Sattler/minifig.jpg differ diff --git a/figures/rebrickable/76961/Henry_Wu/head.jpg b/figures/rebrickable/76961/Henry_Wu/head.jpg new file mode 100644 index 0000000..89080ed Binary files /dev/null and b/figures/rebrickable/76961/Henry_Wu/head.jpg differ diff --git a/figures/rebrickable/76961/Henry_Wu/minifig.jpg b/figures/rebrickable/76961/Henry_Wu/minifig.jpg new file mode 100644 index 0000000..84f1c99 Binary files /dev/null and b/figures/rebrickable/76961/Henry_Wu/minifig.jpg differ diff --git a/figures/rebrickable/76961/Lex_Murphy/head.jpg b/figures/rebrickable/76961/Lex_Murphy/head.jpg new file mode 100644 index 0000000..ba51ebc Binary files /dev/null and b/figures/rebrickable/76961/Lex_Murphy/head.jpg differ diff --git a/figures/rebrickable/76961/Lex_Murphy/minifig.jpg b/figures/rebrickable/76961/Lex_Murphy/minifig.jpg new file mode 100644 index 0000000..3e0c41e Binary files /dev/null and b/figures/rebrickable/76961/Lex_Murphy/minifig.jpg differ diff --git a/figures/rebrickable/76961/Ray_Arnold/head.jpg b/figures/rebrickable/76961/Ray_Arnold/head.jpg new file mode 100644 index 0000000..a77c5f3 Binary files /dev/null and b/figures/rebrickable/76961/Ray_Arnold/head.jpg differ diff --git a/figures/rebrickable/76961/Ray_Arnold/minifig.jpg b/figures/rebrickable/76961/Ray_Arnold/minifig.jpg new file mode 100644 index 0000000..ef5151b Binary files /dev/null and b/figures/rebrickable/76961/Ray_Arnold/minifig.jpg differ diff --git a/figures/rebrickable/76961/Tim_Murphy/head.jpg b/figures/rebrickable/76961/Tim_Murphy/head.jpg new file mode 100644 index 0000000..58c63a0 Binary files /dev/null and b/figures/rebrickable/76961/Tim_Murphy/head.jpg differ diff --git a/figures/rebrickable/76961/Tim_Murphy/minifig.jpg b/figures/rebrickable/76961/Tim_Murphy/minifig.jpg new file mode 100644 index 0000000..ac19796 Binary files /dev/null and b/figures/rebrickable/76961/Tim_Murphy/minifig.jpg differ diff --git a/figures/rebrickable/76961/set.jpg b/figures/rebrickable/76961/set.jpg new file mode 100644 index 0000000..d5daffc Binary files /dev/null and b/figures/rebrickable/76961/set.jpg differ diff --git a/figures/rebrickable/76962/set.jpg b/figures/rebrickable/76962/set.jpg new file mode 100644 index 0000000..5a7bafe Binary files /dev/null and b/figures/rebrickable/76962/set.jpg differ diff --git a/figures/rebrickable/76963/Darius/head.jpg b/figures/rebrickable/76963/Darius/head.jpg new file mode 100644 index 0000000..806704c Binary files /dev/null and b/figures/rebrickable/76963/Darius/head.jpg differ diff --git a/figures/rebrickable/76963/Sammy/head.jpg b/figures/rebrickable/76963/Sammy/head.jpg new file mode 100644 index 0000000..a7efd1c Binary files /dev/null and b/figures/rebrickable/76963/Sammy/head.jpg differ diff --git a/figures/rebrickable/76963/set.jpg b/figures/rebrickable/76963/set.jpg new file mode 100644 index 0000000..6b284e1 Binary files /dev/null and b/figures/rebrickable/76963/set.jpg differ diff --git a/figures/rebrickable/76964/set.jpg b/figures/rebrickable/76964/set.jpg new file mode 100644 index 0000000..b763745 Binary files /dev/null and b/figures/rebrickable/76964/set.jpg differ diff --git a/figures/rebrickable/76965/Ben/head.jpg b/figures/rebrickable/76965/Ben/head.jpg new file mode 100644 index 0000000..a938674 Binary files /dev/null and b/figures/rebrickable/76965/Ben/head.jpg differ diff --git a/figures/rebrickable/76965/Ben/minifig.jpg b/figures/rebrickable/76965/Ben/minifig.jpg new file mode 100644 index 0000000..6264ef4 Binary files /dev/null and b/figures/rebrickable/76965/Ben/minifig.jpg differ diff --git a/figures/rebrickable/76965/Sammy/head.jpg b/figures/rebrickable/76965/Sammy/head.jpg new file mode 100644 index 0000000..a7efd1c Binary files /dev/null and b/figures/rebrickable/76965/Sammy/head.jpg differ diff --git a/figures/rebrickable/76965/set.jpg b/figures/rebrickable/76965/set.jpg new file mode 100644 index 0000000..7dbf2fc Binary files /dev/null and b/figures/rebrickable/76965/set.jpg differ diff --git a/figures/rebrickable/76966/Darius/head.jpg b/figures/rebrickable/76966/Darius/head.jpg new file mode 100644 index 0000000..fc58840 Binary files /dev/null and b/figures/rebrickable/76966/Darius/head.jpg differ diff --git a/figures/rebrickable/76966/Kenji/head.jpg b/figures/rebrickable/76966/Kenji/head.jpg new file mode 100644 index 0000000..da6c32d Binary files /dev/null and b/figures/rebrickable/76966/Kenji/head.jpg differ diff --git a/figures/rebrickable/76966/Yaz/head.jpg b/figures/rebrickable/76966/Yaz/head.jpg new file mode 100644 index 0000000..67b9c52 Binary files /dev/null and b/figures/rebrickable/76966/Yaz/head.jpg differ diff --git a/figures/rebrickable/76966/set.jpg b/figures/rebrickable/76966/set.jpg new file mode 100644 index 0000000..9cf8506 Binary files /dev/null and b/figures/rebrickable/76966/set.jpg differ diff --git a/figures/rebrickable/76967/set.jpg b/figures/rebrickable/76967/set.jpg new file mode 100644 index 0000000..d05cea6 Binary files /dev/null and b/figures/rebrickable/76967/set.jpg differ diff --git a/figures/rebrickable/76968/Alan_Grant/head.jpg b/figures/rebrickable/76968/Alan_Grant/head.jpg new file mode 100644 index 0000000..3a8e190 Binary files /dev/null and b/figures/rebrickable/76968/Alan_Grant/head.jpg differ diff --git a/figures/rebrickable/76968/Alan_Grant/minifig.jpg b/figures/rebrickable/76968/Alan_Grant/minifig.jpg new file mode 100644 index 0000000..c0bbe6e Binary files /dev/null and b/figures/rebrickable/76968/Alan_Grant/minifig.jpg differ diff --git a/figures/rebrickable/76968/Ellie_Sattler/head.jpg b/figures/rebrickable/76968/Ellie_Sattler/head.jpg new file mode 100644 index 0000000..bcd5cf7 Binary files /dev/null and b/figures/rebrickable/76968/Ellie_Sattler/head.jpg differ diff --git a/figures/rebrickable/76968/Ellie_Sattler/minifig.jpg b/figures/rebrickable/76968/Ellie_Sattler/minifig.jpg new file mode 100644 index 0000000..e0618b2 Binary files /dev/null and b/figures/rebrickable/76968/Ellie_Sattler/minifig.jpg differ diff --git a/figures/rebrickable/76968/set.jpg b/figures/rebrickable/76968/set.jpg new file mode 100644 index 0000000..0673488 Binary files /dev/null and b/figures/rebrickable/76968/set.jpg differ diff --git a/figures/rebrickable/76969/set.jpg b/figures/rebrickable/76969/set.jpg new file mode 100644 index 0000000..1107dd6 Binary files /dev/null and b/figures/rebrickable/76969/set.jpg differ diff --git a/figures/rebrickable/76970/set.jpg b/figures/rebrickable/76970/set.jpg new file mode 100644 index 0000000..5b8124f Binary files /dev/null and b/figures/rebrickable/76970/set.jpg differ diff --git a/figures/rebrickable/76972/Isabella_Delgado/head.jpg b/figures/rebrickable/76972/Isabella_Delgado/head.jpg new file mode 100644 index 0000000..fd5a509 Binary files /dev/null and b/figures/rebrickable/76972/Isabella_Delgado/head.jpg differ diff --git a/figures/rebrickable/76972/Reuben_Delgado/head.jpg b/figures/rebrickable/76972/Reuben_Delgado/head.jpg new file mode 100644 index 0000000..5fc0858 Binary files /dev/null and b/figures/rebrickable/76972/Reuben_Delgado/head.jpg differ diff --git a/figures/rebrickable/76972/set.jpg b/figures/rebrickable/76972/set.jpg new file mode 100644 index 0000000..aa9b3b2 Binary files /dev/null and b/figures/rebrickable/76972/set.jpg differ diff --git a/figures/rebrickable/76973/Henry_Loomis/head.jpg b/figures/rebrickable/76973/Henry_Loomis/head.jpg new file mode 100644 index 0000000..b650444 Binary files /dev/null and b/figures/rebrickable/76973/Henry_Loomis/head.jpg differ diff --git a/figures/rebrickable/76973/Martin_Krebs/head.jpg b/figures/rebrickable/76973/Martin_Krebs/head.jpg new file mode 100644 index 0000000..6c23ae8 Binary files /dev/null and b/figures/rebrickable/76973/Martin_Krebs/head.jpg differ diff --git a/figures/rebrickable/76973/Zora_Bennett/head.jpg b/figures/rebrickable/76973/Zora_Bennett/head.jpg new file mode 100644 index 0000000..a2b81d9 Binary files /dev/null and b/figures/rebrickable/76973/Zora_Bennett/head.jpg differ diff --git a/figures/rebrickable/76973/Zora_Bennett/minifig.jpg b/figures/rebrickable/76973/Zora_Bennett/minifig.jpg new file mode 100644 index 0000000..39ab62d Binary files /dev/null and b/figures/rebrickable/76973/Zora_Bennett/minifig.jpg differ diff --git a/figures/rebrickable/76973/set.jpg b/figures/rebrickable/76973/set.jpg new file mode 100644 index 0000000..7ef0dd9 Binary files /dev/null and b/figures/rebrickable/76973/set.jpg differ diff --git a/figures/rebrickable/76974/Atwater/head.jpg b/figures/rebrickable/76974/Atwater/head.jpg new file mode 100644 index 0000000..b77c861 Binary files /dev/null and b/figures/rebrickable/76974/Atwater/head.jpg differ diff --git a/figures/rebrickable/76974/Atwater/minifig.jpg b/figures/rebrickable/76974/Atwater/minifig.jpg new file mode 100644 index 0000000..4fee760 Binary files /dev/null and b/figures/rebrickable/76974/Atwater/minifig.jpg differ diff --git a/figures/rebrickable/76974/LeClerc/head.jpg b/figures/rebrickable/76974/LeClerc/head.jpg new file mode 100644 index 0000000..473c008 Binary files /dev/null and b/figures/rebrickable/76974/LeClerc/head.jpg differ diff --git a/figures/rebrickable/76974/LeClerc/minifig.jpg b/figures/rebrickable/76974/LeClerc/minifig.jpg new file mode 100644 index 0000000..cb8d5ae Binary files /dev/null and b/figures/rebrickable/76974/LeClerc/minifig.jpg differ diff --git a/figures/rebrickable/76974/set.jpg b/figures/rebrickable/76974/set.jpg new file mode 100644 index 0000000..e10bcdc Binary files /dev/null and b/figures/rebrickable/76974/set.jpg differ diff --git a/figures/rebrickable/76975/Teresa_Delgado/head.jpg b/figures/rebrickable/76975/Teresa_Delgado/head.jpg new file mode 100644 index 0000000..a7efd1c Binary files /dev/null and b/figures/rebrickable/76975/Teresa_Delgado/head.jpg differ diff --git a/figures/rebrickable/76975/Xavier_Dobbs/head.jpg b/figures/rebrickable/76975/Xavier_Dobbs/head.jpg new file mode 100644 index 0000000..faaecca Binary files /dev/null and b/figures/rebrickable/76975/Xavier_Dobbs/head.jpg differ diff --git a/figures/rebrickable/76975/set.jpg b/figures/rebrickable/76975/set.jpg new file mode 100644 index 0000000..04d7756 Binary files /dev/null and b/figures/rebrickable/76975/set.jpg differ diff --git a/figures/rebrickable/76976/Duncan_Kincaid/head.jpg b/figures/rebrickable/76976/Duncan_Kincaid/head.jpg new file mode 100644 index 0000000..7b46c45 Binary files /dev/null and b/figures/rebrickable/76976/Duncan_Kincaid/head.jpg differ diff --git a/figures/rebrickable/76976/Henry_Loomis/head.jpg b/figures/rebrickable/76976/Henry_Loomis/head.jpg new file mode 100644 index 0000000..b650444 Binary files /dev/null and b/figures/rebrickable/76976/Henry_Loomis/head.jpg differ diff --git a/figures/rebrickable/76976/Martin_Krebs/head.jpg b/figures/rebrickable/76976/Martin_Krebs/head.jpg new file mode 100644 index 0000000..6c23ae8 Binary files /dev/null and b/figures/rebrickable/76976/Martin_Krebs/head.jpg differ diff --git a/figures/rebrickable/76976/Zora_Bennett/head.jpg b/figures/rebrickable/76976/Zora_Bennett/head.jpg new file mode 100644 index 0000000..a2b81d9 Binary files /dev/null and b/figures/rebrickable/76976/Zora_Bennett/head.jpg differ diff --git a/figures/rebrickable/76976/Zora_Bennett/minifig.jpg b/figures/rebrickable/76976/Zora_Bennett/minifig.jpg new file mode 100644 index 0000000..39ab62d Binary files /dev/null and b/figures/rebrickable/76976/Zora_Bennett/minifig.jpg differ diff --git a/figures/rebrickable/76976/set.jpg b/figures/rebrickable/76976/set.jpg new file mode 100644 index 0000000..7e0b12c Binary files /dev/null and b/figures/rebrickable/76976/set.jpg differ diff --git a/figures/rebrickable/BLUE/set.jpg b/figures/rebrickable/BLUE/set.jpg new file mode 100644 index 0000000..8f6a7da Binary files /dev/null and b/figures/rebrickable/BLUE/set.jpg differ diff --git a/figures/rebrickable/TRUJEEP/set.jpg b/figures/rebrickable/TRUJEEP/set.jpg new file mode 100644 index 0000000..b5a935b Binary files /dev/null and b/figures/rebrickable/TRUJEEP/set.jpg differ diff --git a/figures/rebrickable/TRUJWGATE/set.jpg b/figures/rebrickable/TRUJWGATE/set.jpg new file mode 100644 index 0000000..c3855b4 Binary files /dev/null and b/figures/rebrickable/TRUJWGATE/set.jpg differ diff --git a/figures/rebrickable/TRUTRICERATOPS/set.jpg b/figures/rebrickable/TRUTRICERATOPS/set.jpg new file mode 100644 index 0000000..1566cc9 Binary files /dev/null and b/figures/rebrickable/TRUTRICERATOPS/set.jpg differ diff --git a/figures/rebrickable/TYRANNOSAURUS/set.jpg b/figures/rebrickable/TYRANNOSAURUS/set.jpg new file mode 100644 index 0000000..ef87545 Binary files /dev/null and b/figures/rebrickable/TYRANNOSAURUS/set.jpg differ diff --git a/lib/rebrickable/resources.py b/lib/rebrickable/resources.py new file mode 100644 index 0000000..5de4721 --- /dev/null +++ b/lib/rebrickable/resources.py @@ -0,0 +1,201 @@ +"""Téléchargement des ressources (sets, minifigs, têtes) et enrichissement des URLs.""" + +import os +import time +import re +import csv +import shutil +from pathlib import Path +from typing import Callable, Dict, Iterable, List, Sequence + +import requests + +from lib.filesystem import ensure_parent_dir +from lib.rebrickable.stats import read_rows + + +def load_sets_enriched(path: Path) -> List[dict]: + """Charge les sets enrichis pour accéder aux URLs d'images de set.""" + return read_rows(path) + + +def load_minifigs_by_set(path: Path) -> List[dict]: + """Charge minifigs_by_set.csv en mémoire.""" + return read_rows(path) + + +def load_minifigs_catalog(path: Path) -> Dict[str, dict]: + """Indexe les minifigs par identifiant.""" + catalog: Dict[str, dict] = {} + with path.open() as csv_file: + reader = csv.DictReader(csv_file) + for row in reader: + catalog[row["fig_num"]] = row + return catalog + + +def fetch_part_img_url(part_num: str, token: str, session: requests.Session) -> str: + """Récupère l'URL d'image d'une pièce via l'API Rebrickable.""" + retries = 0 + backoff = 2.0 + while True: + response = session.get(f"https://rebrickable.com/api/v3/lego/parts/{part_num}/", headers={"Authorization": f"key {token}"}) + if response.status_code == 429: + time.sleep(backoff) + retries += 1 + backoff = min(backoff * 1.5, 10.0) + if retries > 8: + response.raise_for_status() + continue + response.raise_for_status() + payload = response.json() + return payload["part_img_url"] + + +def load_part_img_cache(cache_path: Path) -> Dict[str, str]: + """Charge le cache des URLs de têtes s'il existe.""" + if not cache_path.exists(): + return {} + cache: Dict[str, str] = {} + with cache_path.open() as cache_file: + reader = csv.DictReader(cache_file) + for row in reader: + cache[row["part_num"]] = row["part_img_url"] + return cache + + +def persist_part_img_cache(cache_path: Path, cache: Dict[str, str]) -> None: + """Persist le cache des URLs pour reprise après interruption.""" + ensure_parent_dir(cache_path) + with cache_path.open("w", newline="") as cache_file: + writer = csv.DictWriter(cache_file, fieldnames=["part_num", "part_img_url"]) + writer.writeheader() + for part_num, url in sorted(cache.items()): + writer.writerow({"part_num": part_num, "part_img_url": url}) + + +def build_part_img_lookup( + part_numbers: Iterable[str], + fetcher: Callable[[str], str], + cache_path: Path | None = None, + existing_cache: Dict[str, str] | None = None, + delay_seconds: float = 1.6, +) -> Dict[str, str]: + """Construit un index part_num -> URL d'image en espaçant les requêtes.""" + cache = dict(existing_cache or {}) + unique_parts = sorted(set(part_numbers)) + for part_num in unique_parts: + if part_num in cache: + continue + cache[part_num] = fetcher(part_num) + if cache_path is not None: + persist_part_img_cache(cache_path, cache) + time.sleep(delay_seconds) + return cache + + +def add_part_img_urls(minifigs_rows: Iterable[dict], part_img_lookup: Dict[str, str]) -> List[dict]: + """Ajoute part_img_url aux lignes minifigs_by_set.""" + enriched: List[dict] = [] + for row in minifigs_rows: + existing = row.get("part_img_url", "").strip() + part_img_url = existing if existing != "" else part_img_lookup[row["part_num"]] + enriched.append( + { + "set_num": row["set_num"], + "part_num": row["part_num"], + "known_character": row["known_character"], + "fig_num": row["fig_num"], + "gender": row["gender"], + "part_img_url": part_img_url, + } + ) + return enriched + + +def write_minifigs_by_set_with_images(destination_path: Path, rows: Sequence[dict]) -> None: + """Réécrit le CSV minifigs_by_set avec la colonne part_img_url.""" + ensure_parent_dir(destination_path) + fieldnames = ["set_num", "part_num", "known_character", "fig_num", "gender", "part_img_url"] + with destination_path.open("w", newline="") as csv_file: + writer = csv.DictWriter(csv_file, fieldnames=fieldnames) + writer.writeheader() + for row in rows: + writer.writerow(row) + + +def sanitize_name(raw_name: str) -> str: + """Nettoie un nom pour construire un chemin de fichier sûr.""" + cleaned = re.sub(r"[^A-Za-z0-9]+", "_", raw_name).strip("_") + if cleaned == "": + return "Unknown" + return cleaned + + +def build_download_plan( + sets_rows: Iterable[dict], + minifigs_rows: Iterable[dict], + minifigs_catalog: Dict[str, dict], + base_dir: Path, +) -> List[dict]: + """Construit la liste des fichiers à télécharger (sets, minifigs, têtes).""" + plan: List[dict] = [] + sets_list = list(sets_rows) + set_ids: Dict[str, str] = {row["set_num"]: row["set_id"] for row in sets_list} + for set_row in sets_list: + set_dir = base_dir / set_row["set_id"] + plan.append({"url": set_row["img_url"], "path": set_dir / "set.jpg"}) + for row in minifigs_rows: + if (row.get("known_character") or "").strip().lower() == "figurant": + continue + set_dir = base_dir / set_ids[row["set_num"]] + character_dir = set_dir / sanitize_name(row["known_character"] or "Unknown") + minifig = minifigs_catalog[row["fig_num"]] + plan.append({"url": minifig["img_url"], "path": character_dir / "minifig.jpg"}) + plan.append({"url": row["part_img_url"], "path": character_dir / "head.jpg"}) + return plan + + +def download_binary(url: str, destination_path: Path, session: requests.Session) -> bool: + """Télécharge un binaire vers un chemin donné. Retourne False si 404.""" + ensure_parent_dir(destination_path) + response = session.get(url, stream=True) + if response.status_code == 404: + return False + response.raise_for_status() + with destination_path.open("wb") as target_file: + for chunk in response.iter_content(chunk_size=8192): + target_file.write(chunk) + return True + + +def download_resources( + plan: Iterable[dict], + downloader: Callable[[str, Path], bool], + delay_seconds: float = 0.35, + log_path: Path | None = None, +) -> None: + """Exécute les téléchargements en espaçant les requêtes et journalise les statuts.""" + cache: Dict[str, Path] = {} + log_rows: List[dict] = [] + for item in plan: + if item["path"].exists(): + time.sleep(delay_seconds) + continue + if item["url"] in cache and cache[item["url"]].exists(): + ensure_parent_dir(item["path"]) + shutil.copy2(cache[item["url"]], item["path"]) + else: + success = downloader(item["url"], item["path"]) + if success: + cache[item["url"]] = item["path"] + else: + log_rows.append({"url": item["url"], "path": str(item["path"]), "status": "missing"}) + time.sleep(delay_seconds) + if log_path is not None: + ensure_parent_dir(log_path) + with log_path.open("w", newline="") as csv_file: + writer = csv.DictWriter(csv_file, fieldnames=["url", "path", "status"]) + writer.writeheader() + for row in log_rows: + writer.writerow(row) diff --git a/scripts/download_resources.py b/scripts/download_resources.py new file mode 100644 index 0000000..fec8925 --- /dev/null +++ b/scripts/download_resources.py @@ -0,0 +1,72 @@ +"""Télécharge les ressources (sets, minifigs, têtes) pour les sets filtrés.""" + +import os +from pathlib import Path + +import requests +from dotenv import load_dotenv + +from lib.rebrickable.resources import ( + add_part_img_urls, + build_download_plan, + build_part_img_lookup, + download_binary, + download_resources, + fetch_part_img_url, + load_minifigs_by_set, + load_minifigs_catalog, + load_sets_enriched, + load_part_img_cache, + persist_part_img_cache, + write_minifigs_by_set_with_images, +) + + +SETS_PATH = Path("data/intermediate/sets_enriched.csv") +MINIFIGS_BY_SET_PATH = Path("data/intermediate/minifigs_by_set.csv") +MINIFIGS_CATALOG_PATH = Path("data/raw/minifigs.csv") +RESOURCES_DIR = Path("figures/rebrickable") +REQUEST_DELAY_SECONDS_IMAGES = 0.35 +PART_IMG_CACHE_PATH = Path("data/intermediate/part_img_cache.csv") +DOWNLOAD_LOG_PATH = Path("data/intermediate/resources_download_log.csv") + + +def main() -> None: + """Construit les URLs manquantes et télécharge les images associées.""" + load_dotenv() + token = os.environ["REBRICKABLE_TOKEN"] + session = requests.Session() + + sets = load_sets_enriched(SETS_PATH) + minifigs_by_set = load_minifigs_by_set(MINIFIGS_BY_SET_PATH) + minifigs_catalog = load_minifigs_catalog(MINIFIGS_CATALOG_PATH) + cache = load_part_img_cache(PART_IMG_CACHE_PATH) + + missing_part_numbers = { + row["part_num"] + for row in minifigs_by_set + if row.get("part_img_url", "").strip() == "" and row["part_num"] not in cache + } + part_img_lookup = build_part_img_lookup( + missing_part_numbers, + fetcher=lambda part_num: fetch_part_img_url(part_num, token, session), + cache_path=PART_IMG_CACHE_PATH, + existing_cache=cache, + ) + if cache: + part_img_lookup.update(cache) + persist_part_img_cache(PART_IMG_CACHE_PATH, part_img_lookup) + minifigs_with_imgs = add_part_img_urls(minifigs_by_set, part_img_lookup) + write_minifigs_by_set_with_images(MINIFIGS_BY_SET_PATH, minifigs_with_imgs) + + plan = build_download_plan(sets, minifigs_with_imgs, minifigs_catalog, RESOURCES_DIR) + download_resources( + plan, + downloader=lambda url, path: download_binary(url, path, session), + delay_seconds=REQUEST_DELAY_SECONDS_IMAGES, + log_path=DOWNLOAD_LOG_PATH, + ) + + +if __name__ == "__main__": + main() diff --git a/tests/test_resources.py b/tests/test_resources.py new file mode 100644 index 0000000..a6cda29 --- /dev/null +++ b/tests/test_resources.py @@ -0,0 +1,108 @@ +"""Tests des outils de téléchargement de ressources.""" + +from pathlib import Path + +from lib.rebrickable.resources import ( + add_part_img_urls, + build_download_plan, + build_part_img_lookup, + download_resources, + sanitize_name, + write_minifigs_by_set_with_images, +) +from lib.filesystem import ensure_parent_dir +from lib.rebrickable.stats import read_rows + + +def test_build_part_img_lookup_calls_fetcher_once_per_part() -> None: + """Construit un index en appelant le fetcher sur les références uniques.""" + calls: list[str] = [] + + def fetcher(part_num: str) -> str: + calls.append(part_num) + return f"url-{part_num}" + + lookup = build_part_img_lookup(["p1", "p2", "p1"], fetcher, delay_seconds=0) + + assert lookup == {"p1": "url-p1", "p2": "url-p2"} + assert calls == ["p1", "p2"] + + +def test_add_part_img_urls_and_write(tmp_path: Path) -> None: + """Ajoute les URLs de tête et réécrit minifigs_by_set.""" + rows = [ + {"set_num": "123-1", "part_num": "p1", "known_character": "Alice", "fig_num": "f1", "gender": "female"}, + ] + lookup = {"p1": "http://img/p1.jpg"} + + enriched = add_part_img_urls(rows, lookup) + destination = tmp_path / "minifigs_by_set.csv" + write_minifigs_by_set_with_images(destination, enriched) + + assert read_rows(destination) == [ + { + "set_num": "123-1", + "part_num": "p1", + "known_character": "Alice", + "fig_num": "f1", + "gender": "female", + "part_img_url": "http://img/p1.jpg", + } + ] + + +def test_build_download_plan_and_download(tmp_path: Path) -> None: + """Construit le plan et télécharge les binaires via un downloader stub.""" + sets_rows = [ + {"set_num": "123-1", "set_id": "123", "img_url": "http://set.img", "name": "A", "year": "2020"}, + ] + minifigs_rows = [ + {"set_num": "123-1", "part_num": "p1", "known_character": "Bob", "fig_num": "fig-1", "gender": "male", "part_img_url": "http://head.img"} + ] + minifigs_catalog = {"fig-1": {"img_url": "http://fig.img"}} + base_dir = tmp_path / "resources" + + plan = build_download_plan(sets_rows, minifigs_rows, minifigs_catalog, base_dir) + downloaded: list[tuple[str, Path]] = [] + + def downloader(url: str, path: Path) -> bool: + downloaded.append((url, path)) + path.parent.mkdir(parents=True, exist_ok=True) + path.write_bytes(b"data") + return True + + download_resources(plan, downloader, delay_seconds=0, log_path=tmp_path / "log.csv") + + assert downloaded == [ + ("http://set.img", base_dir / "123" / "set.jpg"), + ("http://fig.img", base_dir / "123" / "Bob" / "minifig.jpg"), + ("http://head.img", base_dir / "123" / "Bob" / "head.jpg"), + ] + assert (base_dir / "123" / "Bob" / "head.jpg").exists() + + +def test_download_resources_duplicates_from_cache(tmp_path: Path) -> None: + """Duplique les fichiers déjà téléchargés pour d'autres sets.""" + plan = [ + {"url": "http://same.img", "path": tmp_path / "resources" / "111" / "set.jpg"}, + {"url": "http://same.img", "path": tmp_path / "resources" / "222" / "set.jpg"}, + ] + downloads: list[tuple[str, Path]] = [] + + def downloader(url: str, path: Path) -> bool: + downloads.append((url, path)) + ensure_parent_dir(path) + path.write_bytes(b"img") + return True + + download_resources(plan, downloader, delay_seconds=0, log_path=tmp_path / "log.csv") + + assert downloads == [("http://same.img", tmp_path / "resources" / "111" / "set.jpg")] + assert (tmp_path / "resources" / "222" / "set.jpg").exists() + + +def test_sanitize_name_handles_special_chars() -> None: + """Nettoie les noms en enlevant les caractères spéciaux.""" + assert sanitize_name("Owen Grady") == "Owen_Grady" + assert sanitize_name("Kayla-Watts!") == "Kayla_Watts" + assert sanitize_name("") == "Unknown"