|
21 | 21 | DEFAULT_CACHE_DIR = Path("~/.cache/openfoodfacts/taxonomy").expanduser() |
22 | 22 |
|
23 | 23 |
|
24 | | -TAXONOMY_URLS = { |
25 | | - Flavor.off: { |
26 | | - TaxonomyType.category: f"{URLBuilder.static(Flavor.off, Environment.org)}/{TaxonomyType.category.dataset_path}", |
27 | | - TaxonomyType.ingredient: f"{URLBuilder.static(Flavor.off, Environment.org)}/{TaxonomyType.ingredient.dataset_path}", |
28 | | - TaxonomyType.label: f"{URLBuilder.static(Flavor.off, Environment.org)}/{TaxonomyType.label.dataset_path}", |
29 | | - TaxonomyType.brand: f"{URLBuilder.static(Flavor.off, Environment.org)}/{TaxonomyType.brand.dataset_path}", |
30 | | - TaxonomyType.packaging_shape: f"{URLBuilder.static(Flavor.off, Environment.org)}/{TaxonomyType.packaging_shape.dataset_path}", |
31 | | - TaxonomyType.packaging_material: f"{URLBuilder.static(Flavor.off, Environment.org)}/{TaxonomyType.packaging_material.dataset_path}", |
32 | | - TaxonomyType.packaging_recycling: f"{URLBuilder.static(Flavor.off, Environment.org)}/{TaxonomyType.packaging_recycling.dataset_path}", |
33 | | - TaxonomyType.country: f"{URLBuilder.static(Flavor.off, Environment.org)}/{TaxonomyType.country.dataset_path}", |
34 | | - TaxonomyType.store: f"{URLBuilder.static(Flavor.off, Environment.org)}/{TaxonomyType.store.dataset_path}", |
35 | | - TaxonomyType.nova_group: f"{URLBuilder.static(Flavor.off, Environment.org)}/{TaxonomyType.nova_group.dataset_path}", |
36 | | - TaxonomyType.additive: f"{URLBuilder.static(Flavor.off, Environment.org)}/{TaxonomyType.additive.dataset_path}", |
37 | | - TaxonomyType.vitamin: f"{URLBuilder.static(Flavor.off, Environment.org)}/{TaxonomyType.vitamin.dataset_path}", |
38 | | - TaxonomyType.mineral: f"{URLBuilder.static(Flavor.off, Environment.org)}/{TaxonomyType.mineral.dataset_path}", |
39 | | - TaxonomyType.amino_acid: f"{URLBuilder.static(Flavor.off, Environment.org)}/{TaxonomyType.amino_acid.dataset_path}", |
40 | | - TaxonomyType.nucleotide: f"{URLBuilder.static(Flavor.off, Environment.org)}/{TaxonomyType.nucleotide.dataset_path}", |
41 | | - TaxonomyType.allergen: f"{URLBuilder.static(Flavor.off, Environment.org)}/{TaxonomyType.allergen.dataset_path}", |
42 | | - TaxonomyType.state: f"{URLBuilder.static(Flavor.off, Environment.org)}/{TaxonomyType.state.dataset_path}", |
43 | | - TaxonomyType.data_quality: f"{URLBuilder.static(Flavor.off, Environment.org)}/{TaxonomyType.data_quality.dataset_path}", |
44 | | - TaxonomyType.origin: f"{URLBuilder.static(Flavor.off, Environment.org)}/{TaxonomyType.origin.dataset_path}", |
45 | | - TaxonomyType.language: f"{URLBuilder.static(Flavor.off, Environment.org)}/{TaxonomyType.language.dataset_path}", |
46 | | - TaxonomyType.other_nutritional_substance: f"{URLBuilder.static(Flavor.off, Environment.org)}/{TaxonomyType.other_nutritional_substance.dataset_path}", |
47 | | - }, |
48 | | - Flavor.obf: { |
49 | | - TaxonomyType.category: f"{URLBuilder.static(Flavor.obf, Environment.org)}/{TaxonomyType.category.dataset_path}", |
50 | | - TaxonomyType.ingredient: f"{URLBuilder.static(Flavor.obf, Environment.org)}/{TaxonomyType.ingredient.dataset_path}", |
51 | | - TaxonomyType.label: f"{URLBuilder.static(Flavor.obf, Environment.org)}/{TaxonomyType.label.dataset_path}", |
52 | | - TaxonomyType.brand: f"{URLBuilder.static(Flavor.obf, Environment.org)}/{TaxonomyType.brand.dataset_path}", |
53 | | - TaxonomyType.allergen: f"{URLBuilder.static(Flavor.obf, Environment.org)}/{TaxonomyType.allergen.dataset_path}", |
54 | | - }, |
55 | | - Flavor.opff: { |
56 | | - TaxonomyType.category: f"{URLBuilder.static(Flavor.opff, Environment.org)}/{TaxonomyType.category.dataset_path}", |
57 | | - TaxonomyType.ingredient: f"{URLBuilder.static(Flavor.opff, Environment.org)}/{TaxonomyType.ingredient.dataset_path}", |
58 | | - }, |
59 | | - Flavor.opf: { |
60 | | - TaxonomyType.category: f"{URLBuilder.static(Flavor.opf, Environment.org)}/{TaxonomyType.category.dataset_path}", |
61 | | - TaxonomyType.label: f"{URLBuilder.static(Flavor.opf, Environment.org)}/{TaxonomyType.label.dataset_path}", |
62 | | - TaxonomyType.brand: f"{URLBuilder.static(Flavor.opf, Environment.org)}/{TaxonomyType.brand.dataset_path}", |
63 | | - }, |
| 24 | +TAXONOMY_MAPPING = { |
| 25 | + Flavor.off: ( |
| 26 | + TaxonomyType.category, |
| 27 | + TaxonomyType.ingredient, |
| 28 | + TaxonomyType.label, |
| 29 | + TaxonomyType.brand, |
| 30 | + TaxonomyType.packaging_shape, |
| 31 | + TaxonomyType.packaging_material, |
| 32 | + TaxonomyType.packaging_recycling, |
| 33 | + TaxonomyType.country, |
| 34 | + TaxonomyType.store, |
| 35 | + TaxonomyType.nova_group, |
| 36 | + TaxonomyType.additive, |
| 37 | + TaxonomyType.vitamin, |
| 38 | + TaxonomyType.mineral, |
| 39 | + TaxonomyType.amino_acid, |
| 40 | + TaxonomyType.nucleotide, |
| 41 | + TaxonomyType.allergen, |
| 42 | + TaxonomyType.state, |
| 43 | + TaxonomyType.data_quality, |
| 44 | + TaxonomyType.origin, |
| 45 | + TaxonomyType.language, |
| 46 | + TaxonomyType.other_nutritional_substance, |
| 47 | + ), |
| 48 | + Flavor.obf: ( |
| 49 | + TaxonomyType.category, |
| 50 | + TaxonomyType.ingredient, |
| 51 | + TaxonomyType.label, |
| 52 | + TaxonomyType.brand, |
| 53 | + TaxonomyType.allergen, |
| 54 | + ), |
| 55 | + Flavor.opff: ( |
| 56 | + TaxonomyType.category, |
| 57 | + TaxonomyType.ingredient, |
| 58 | + ), |
| 59 | + Flavor.opf: ( |
| 60 | + TaxonomyType.category, |
| 61 | + TaxonomyType.label, |
| 62 | + TaxonomyType.brand, |
| 63 | + ), |
64 | 64 | } |
65 | 65 |
|
66 | 66 |
|
| 67 | +def _generate_file_path(taxonomy_type: TaxonomyType, flavor: Flavor): |
| 68 | + return f"{URLBuilder.static(flavor, Environment.org)}/{taxonomy_type.dataset_path}" |
| 69 | + |
| 70 | + |
67 | 71 | class TaxonomyNode: |
68 | 72 | """A taxonomy element. |
69 | 73 |
|
@@ -433,7 +437,7 @@ def from_type( |
433 | 437 | :param flavor: The data source, defaults to Flavor.off |
434 | 438 | :return: a Taxonomy |
435 | 439 | """ |
436 | | - url = TAXONOMY_URLS[flavor][TaxonomyType[taxonomy_type]] |
| 440 | + url = _generate_file_path(taxonomy_type, flavor) |
437 | 441 | return cls.from_url(url) |
438 | 442 |
|
439 | 443 |
|
@@ -468,7 +472,7 @@ def get_taxonomy( |
468 | 472 |
|
469 | 473 | cache_dir = DEFAULT_CACHE_DIR if cache_dir is None else cache_dir |
470 | 474 | taxonomy_path = cache_dir / filename |
471 | | - url = TAXONOMY_URLS[flavor][taxonomy_type] |
| 475 | + url = _generate_file_path(taxonomy_type, flavor) |
472 | 476 |
|
473 | 477 | if not should_download_file(url, taxonomy_path, force_download, download_newer): |
474 | 478 | return Taxonomy.from_path(taxonomy_path) |
|
0 commit comments