import json, re, unicodedata def slugify(name): s = unicodedata.normalize('NFKD', name).encode('ascii', 'ignore').decode('ascii').lower() s = re.sub(r'[^a-z0-9\s]', '', s) s = s.strip().replace(' ', '_') return s # Items à ajouter bakery_items = [ ("Bagel briana", "bagel", "🥯"), ("Bagels", "bagel", "🥯"), ("Baguette", "pain", "🥖"), ("Biscuits breton sans gluten", "biscuit", "🍪"), ("Biscuits Feuille D'Érable", "biscuit", "🍁"), ("Biscuits sans gluten", "biscuit", "🍪"), ("Biscuits swiss", "biscuit", "🍪"), ("Bread", "pain", "🍞"), ("Buns", "pain", "🍞"), ("Crispbread", "biscuit", "🍘"), ("Croissant", "viennoiserie", "🥐"), ("Croûte à tarte", "patisserie", "🥧"), ("Dinner Rolls", "pain", "🍞"), ("Donuts", "patisserie", "🍩"), ("Fond de tarte", "patisserie", "🥧"), ("Galette tortilla", "pain", "🌯"), ("Gâteau mille feuilles", "patisserie", "🍰"), ("Gaufres", "patisserie", "🧇"), ("Muffins", "patisserie", "🧁"), ("Muffins Anglais", "pain", "🥯"), ("Pain Baguette", "pain", "🥖"), ("Pain Blanc", "pain", "🍞"), ("Pain Blanc Sans Lactose", "pain", "🍞"), ("Pain Bon Matin", "pain", "🍞"), ("Pain Briana", "pain", "🍞"), ("Pain brun", "pain", "🍞"), ("Pain burgers", "pain", "🍔"), ("Pain burgers sans gluten", "pain", "🍔"), ("Pain Croûte", "pain", "🍞"), ("Pain croûté sans gluten", "pain", "🍞"), ("Pain hamburger", "pain", "🍔"), ("Pain hamburger sans gluten", "pain", "🍔"), ("Pain Hot Dog", "pain", "🌭"), ("Pain Italien", "pain", "🥖"), ("Pain Sans Gluten", "pain", "🍞"), ("Pain Sans Lactose", "pain", "🍞"), ("Pain Sous Marin", "pain", "🥖"), ("Pains Grand Mère", "pain", "🍞"), ("Pancakes mix", "patisserie", "🥞"), ("Petit Pain Sandwich", "pain", "🥪"), ("Petit Pain Sous Marin", "pain", "🥖"), ("Pie", "patisserie", "🥧"), ("Pizza dough", "patisserie", "🍕"), ("Pizza sans gluten", "patisserie", "🍕"), ("Puff pastry", "patisserie", "🥐"), ("Pumpkin Pie", "patisserie", "🥧"), ("Rolls", "pain", "🍞"), ("Scones", "patisserie", "🧁"), ("Sliced bread", "pain", "🍞"), ("Toast", "pain", "🍞"), ("Toast melba", "pain", "🍞"), ("Tortilla", "pain", "🌯"), ("Tortillas", "pain", "🌯"), ("Vol au vent", "patisserie", "🥐"), ("Waffles", "patisserie", "🧇"), ] dairy_items = [ # Beurres, margarines, crèmes ("Beurre Sans Lactose", "beurre", "🧈"), ("Butter", "beurre", "🧈"), ("Margarine", "beurre", "🧈"), ("Cream", "creme", "🥛"), ("Cream cheese", "fromage", "🧀"), ("Crème 10%", "creme", "🥛"), ("Crème à café", "creme", "🥛"), ("Creme fraiche", "creme", "🥛"), ("Crème Glacée", "creme", "🍨"), ("Crème glacée Sans Lactose", "creme", "🍨"), ("Crème Glacée Sans Lactose Au Chocolat", "creme", "🍨"), ("Crème Sans Lactose", "creme", "🥛"), ("Crème Sure", "creme", "🥛"), ("Sour cream", "creme", "🥛"), # Fromages ("Blue cheese", "fromage", "🧀"), ("Brie", "fromage", "🧀"), ("Cheddar", "fromage", "🧀"), ("Cheese", "fromage", "🧀"), ("Cottage cheese", "fromage", "🧀"), ("Crotte De Fromage", "fromage", "🧀"), ("Demi Lune", "fromage", "🧀"), ("Feta", "fromage", "🧀"), ("Fondue Fromage", "fromage", "🧀"), ("Frite du petit Québec", "fromage", "🧀"), ("Fromage", "fromage", "🧀"), ("Fromage à tartiner", "fromage", "🧀"), ("Fromage Briana", "fromage", "🧀"), ("Fromage chèvre", "fromage", "🧀"), ("Fromage Chèvre Confiture", "fromage", "🧀"), ("Fromage Cottage", "fromage", "🧀"), ("fromage cottage sans lactose", "fromage", "🧀"), ("Fromage de chèvre", "fromage", "🧀"), ("Fromage Déjà Rappé", "fromage", "🧀"), ("Fromage en grains", "fromage", "🧀"), ("fromage en tranches", "fromage", "🧀"), ("Fromage Mozzarella", "fromage", "🧀"), ("Fromage Philadelphia", "fromage", "🧀"), ("Fromage Philadelphia sans lactose", "fromage", "🧀"), ("Fromage Quick Quick", "fromage", "🧀"), ("Fromage Rapé Briana", "fromage", "🧀"), ("Fromage rapé sans lactose", "fromage", "🧀"), ("Fromage Riviera", "fromage", "🧀"), ("Fromage Sans Lactose", "fromage", "🧀"), ("Fromage suisse", "fromage", "🧀"), ("Fromage tex mex", "fromage", "🧀"), ("Fromage Vache Qui Rit", "fromage", "🧀"), ("Gorgonzola", "fromage", "🧀"), ("Grated cheese", "fromage", "🧀"), ("Grilled cheese", "fromage", "🧀"), ("Mascarpone", "fromage", "🧀"), ("Mozzarella", "fromage", "🧀"), ("Parmesan", "fromage", "🧀"), ("Parmesan sans lactose", "fromage", "🧀"), ("Quark", "fromage", "🧀"), ("Ricotta", "fromage", "🧀"), # Laits et laits végétaux ("lait", "laitier", "🥛"), ("Lait avoine", "laitier", "🥛"), ("Lait avoine lunch", "laitier", "🥛"), ("Lait avoine lunch chocolat", "laitier", "🥛"), ("Lait Chocolat", "laitier", "🥛"), ("Lait Chocolat Lunch", "laitier", "🥛"), ("Lait Chocolat Sans Lactose", "laitier", "🥛"), ("Lait condensé coco", "laitier", "🥛"), ("Lait D'amande", "laitier", "🥛"), ("Lait Sans Lactose", "laitier", "🥛"), ("Lait Soya Lunch", "laitier", "🥛"), ("Lait Soya Sensationnel Nature", "laitier", "🥛"), ("Milk", "laitier", "🥛"), ("Soy Milk", "laitier", "🥛"), # Yogourts ("Soy yogurt", "yogourt", "🥣"), ("Yogourt iogo Vanille", "yogourt", "🥣"), ("Yogourt logo vanille sans lactose", "yogourt", "🥣"), ("Yogourt Sans Lactose", "yogourt", "🥣"), ("Yogurt", "yogourt", "🥣"), ] with open('app/src/main/assets/catalog_seed.json', 'r', encoding='utf-8') as f: data = json.load(f) data['version'] = 3 for domain in data['domains']: if domain.get('domainId') != 'grocery': continue for cat in domain.get('categories', []): cat_id = cat.get('categoryId') existing_names = {i['name'].lower() for i in cat.get('items', [])} existing_ids = {i['itemId'] for i in cat.get('items', [])} if cat_id == 'bakery': new_items = [] for name, tag, emoji in bakery_items: if name.lower() in existing_names: continue item_id = slugify(name) # éviter doublons d'itemId base_id = item_id suffix = 1 while item_id in existing_ids: item_id = f"{base_id}_{suffix}" suffix += 1 existing_ids.add(item_id) new_items.append({ "itemId": item_id, "name": name, "emoji": emoji, "tags": tag }) cat['items'] = cat.get('items', []) + new_items print(f"Bakery: added {len(new_items)} items, total {len(cat['items'])}") elif cat_id == 'dairy': new_items = [] for name, tag, emoji in dairy_items: if name.lower() in existing_names: continue item_id = slugify(name) base_id = item_id suffix = 1 while item_id in existing_ids: item_id = f"{base_id}_{suffix}" suffix += 1 existing_ids.add(item_id) new_items.append({ "itemId": item_id, "name": name, "emoji": emoji, "tags": tag }) cat['items'] = cat.get('items', []) + new_items print(f"Dairy: added {len(new_items)} items, total {len(cat['items'])}") with open('app/src/main/assets/catalog_seed.json', 'w', encoding='utf-8') as f: json.dump(data, f, ensure_ascii=False, indent=0, separators=(',', ':')) f.write('\n') print(f"Done, version={data['version']}")