Update services/chain_filters.py
Browse files- services/chain_filters.py +15 -11
services/chain_filters.py
CHANGED
|
@@ -1,24 +1,28 @@
|
|
| 1 |
from __future__ import annotations
|
| 2 |
from typing import Dict, Any
|
|
|
|
| 3 |
|
| 4 |
-
# よくあるチェーン
|
| 5 |
_CHAIN_KEYWORDS = {
|
| 6 |
-
#
|
| 7 |
-
"
|
|
|
|
|
|
|
|
|
|
| 8 |
"サイゼリヤ", "ガスト", "バーミヤン", "ジョナサン", "デニーズ", "ロイヤルホスト", "ココス", "やよい軒",
|
| 9 |
-
"松屋", "吉野家", "すき家", "リンガーハット", "
|
|
|
|
| 10 |
"スシロー", "くら寿司", "はま寿司", "かっぱ寿司",
|
| 11 |
"コメダ", "星乃珈琲", "サンマルク", "ドトール", "スターバックス", "スタバ",
|
| 12 |
-
"ココイチ", "
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
"
|
| 16 |
}
|
| 17 |
|
| 18 |
def _normalize(s: str) -> str:
|
| 19 |
-
import re
|
| 20 |
s = (s or "").lower()
|
| 21 |
-
s = re.sub(r"[\s\-\_\.\&\(\)\'\"]+", "", s)
|
| 22 |
return s
|
| 23 |
|
| 24 |
def _match_chain(s: str) -> bool:
|
|
@@ -28,7 +32,7 @@ def _match_chain(s: str) -> bool:
|
|
| 28 |
return any(k in ns for k in _CHAIN_KEYWORDS)
|
| 29 |
|
| 30 |
def is_chain(name: str | None, tags: Dict[str, Any] | None = None) -> bool:
|
| 31 |
-
"""
|
| 32 |
if _match_chain(name or ""):
|
| 33 |
return True
|
| 34 |
tags = tags or {}
|
|
|
|
| 1 |
from __future__ import annotations
|
| 2 |
from typing import Dict, Any
|
| 3 |
+
import re
|
| 4 |
|
| 5 |
+
# よくあるチェーン(日本語含む)を拡張
|
| 6 |
_CHAIN_KEYWORDS = {
|
| 7 |
+
# グローバル
|
| 8 |
+
"mcdonald", "burgerking", "subway", "wendy", "dominos", "pizzahut", "starbucks",
|
| 9 |
+
"bluebottlecoffee", "tullys", "paul", "pretamanger", "hardrockcafe", "kfc", "kentuckyfriedchicken",
|
| 10 |
+
# 国内大手(飲食)
|
| 11 |
+
"マクドナルド", "モスバーガー", "ケンタッキー", "フレッシュネスバーガー",
|
| 12 |
"サイゼリヤ", "ガスト", "バーミヤン", "ジョナサン", "デニーズ", "ロイヤルホスト", "ココス", "やよい軒",
|
| 13 |
+
"松屋", "吉野家", "すき家", "日高屋", "リンガーハット", "てんや",
|
| 14 |
+
"丸亀製麺", "はなまるうどん",
|
| 15 |
"スシロー", "くら寿司", "はま寿司", "かっぱ寿司",
|
| 16 |
"コメダ", "星乃珈琲", "サンマルク", "ドトール", "スターバックス", "スタバ",
|
| 17 |
+
"ココイチ", "coco壱", "co co ichibanya", "cocoichibanya",
|
| 18 |
+
"鳥貴族", "磯丸水産", "和民", "塚田農場", "はなの舞",
|
| 19 |
+
# 今回問題に挙がった例
|
| 20 |
+
"つばめグリル", "けいすけ", "keisuke",
|
| 21 |
}
|
| 22 |
|
| 23 |
def _normalize(s: str) -> str:
|
|
|
|
| 24 |
s = (s or "").lower()
|
| 25 |
+
s = re.sub(r"[\s\-\_\.\&\(\)\'\"\u3000]+", "", s)
|
| 26 |
return s
|
| 27 |
|
| 28 |
def _match_chain(s: str) -> bool:
|
|
|
|
| 32 |
return any(k in ns for k in _CHAIN_KEYWORDS)
|
| 33 |
|
| 34 |
def is_chain(name: str | None, tags: Dict[str, Any] | None = None) -> bool:
|
| 35 |
+
"""name/brand/operator 等を見てチェーン判定。"""
|
| 36 |
if _match_chain(name or ""):
|
| 37 |
return True
|
| 38 |
tags = tags or {}
|