Switch library hierarchy to GW webshop taxonomy
- warhammer_data.py: GW naming throughout - Space Marine chapters are
their own factions under a 'Space Marines' group, systems match the
shop (Age of Sigmar, The Horus Heresy, Other Games, The Old World,
Middle-Earth), classes are GW shop categories (Battleline, Infantry,
Vehicle, Walker, Flyer, Monster, Mounted, Hero, Titanic), group map
extended to AoS grand alliances / Other Games / Old World / Middle-Earth
- gwshop.py: hierarchy remap - GW depth-4 paths are system/group/faction/
class (the shop's last level is the class layer), depth-5 sources keep
a subfaction before it; catalog snapshot regenerated accordingly
- sorter.py: catalog entry is hierarchy-authoritative (group, class, and
faction when GW moved a unit or keyword tables are stale); generic GW
branches ('Unit Type') and a Battleline default never degrade a
confident keyword classification; whole-catalog retry when the faction
pool has no confident match (handles units GW moved between factions);
whole-catalog matching also runs when keyword classification found no
faction; invalid (HTML) items never fuzzy-match; default catalog is
now data/gwshop_catalog.json
- catalogue.py: --apply moves include the group layer, same structure
as the sorter
- docs/SORTING.md: hierarchy rewritten to GW naming with examples
- tests: expectations updated to GW naming (chapters, unit types)
- verified live: 4/4 real files in the test batch now catalog-match,
e.g. The Twin Lance -> 40k/Xenos Armies/T'au Empire/Epic Hero (GW's
current placement) instead of the stale Drukhari keyword
This commit is contained in:
+12
-11
@@ -15,22 +15,23 @@ from dlphelper.catalogue import classify # noqa: E402
|
||||
|
||||
CASES = [
|
||||
# (filename, expected system, expected faction, expected class or None-any)
|
||||
("Thunderwolf Cavalry.7z", "Warhammer 40,000", "Adeptus Astartes", "Fast Attack"),
|
||||
("Wulfen.zip", "Warhammer 40,000", "Adeptus Astartes", "Elites"),
|
||||
("Keeper of Secrets & Shalaxi Helbane.7z", "Warhammer 40,000", "Chaos Daemons", "HQ"),
|
||||
# GW naming: chapters are factions, classes are GW unit types.
|
||||
("Thunderwolf Cavalry.7z", "Warhammer 40,000", "Space Wolves", "Mounted"),
|
||||
("Wulfen.zip", "Warhammer 40,000", "Space Wolves", "Infantry"),
|
||||
("Keeper of Secrets & Shalaxi Helbane.7z", "Warhammer 40,000", "Chaos Daemons", "Hero"),
|
||||
("Assorted Drones.zip", "Warhammer 40,000", "T'au Empire", None),
|
||||
("Commander Shadowsun.zip", "Warhammer 40,000", "T'au Empire", "HQ"),
|
||||
("Devilfish.zip", "Warhammer 40,000", "T'au Empire", "Dedicated Transport"),
|
||||
("Commander Shadowsun.zip", "Warhammer 40,000", "T'au Empire", "Hero"),
|
||||
("Devilfish.zip", "Warhammer 40,000", "T'au Empire", "Vehicle"),
|
||||
("Battle Sister Scanz.zip", "Warhammer 40,000", "Adepta Sororitas", None),
|
||||
("Knights.zip", None, None, None), # ambiguous keyword alone: unclassified
|
||||
("Khorne Demon Enginez and skull lordz.zip", "Warhammer 40,000", "Chaos Daemons", None),
|
||||
("Cultists.zip", "Warhammer 40,000", "Chaos Space Marines", "Elites"),
|
||||
("Cultists.zip", "Warhammer 40,000", "Chaos Space Marines", "Battleline"),
|
||||
("Da Troopz.zip", "Warhammer 40,000", "Orks", None),
|
||||
("Seraphon.zip", "Other Systems", "Age of Sigmar", None),
|
||||
("Leviathan Dreadnought.zip", "Warhammer 40,000", "Adeptus Astartes", "Elites"),
|
||||
("Poxwalkers.zip", "Warhammer 40,000", "Death Guard", "Elites"),
|
||||
("Kabalite Warriors.zip", "Warhammer 40,000", "Drukhari", "Troops"),
|
||||
("Canoptek Wraiths.zip", "Warhammer 40,000", "Necrons", "Fast Attack"),
|
||||
("Seraphon.zip", "Age of Sigmar", "Seraphon", None),
|
||||
("Leviathan Pattern Dreadnought.zip", "The Horus Heresy", "Space Marine Legions", "Walker"),
|
||||
("Poxwalkers.zip", "Warhammer 40,000", "Death Guard", "Infantry"),
|
||||
("Kabalite Warriors.zip", "Warhammer 40,000", "Drukhari", "Battleline"),
|
||||
("Canoptek Wraiths.zip", "Warhammer 40,000", "Necrons", "Infantry"),
|
||||
("random thing with no keywords.zip", None, None, None),
|
||||
]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user