Reach99999's picture
push again
c8cda56
Raw
History Blame Contribute Delete
3.3 kB
"""Shared text helpers."""
from __future__ import annotations
import re
def message_text(content):
"""Normalize Gradio / chat payloads to plain text (never use str(ChatMessage))."""
if content is None:
return ""
if isinstance(content, str):
return content
# Gradio 5/6 ChatMessage / objects with .content (str or multimodal list)
if hasattr(content, "content") and not isinstance(content, (dict, list, tuple)):
return message_text(getattr(content, "content", None))
if isinstance(content, dict):
if "text" in content:
return message_text(content.get("text"))
if "content" in content:
return message_text(content.get("content"))
return ""
if isinstance(content, (list, tuple)):
parts = []
for part in content:
if isinstance(part, dict) and part.get("type") == "text":
parts.append(message_text(part.get("text")))
else:
parts.append(message_text(part))
return "\n".join(filter(None, parts))
return str(content)
def has_khmer(text):
return bool(re.search(r"[\u1780-\u17FF]", text or ""))
def needs_product_data(text):
keywords = [
"αžαž˜αŸ’αž›αŸƒ",
"price",
"size",
"αž‘αŸ†αž αŸ†",
"αžŸαŸ’αžαž»αž€",
"stock",
"αž˜αžΆαž“αž›αž€αŸ‹",
"αž˜αžΆαž“αž‘αŸ",
"αž˜αžΆαž“αž’αžαŸ‹",
"αž•αž›αž·αžαž•αž›",
"αž‘αŸ†αž“αž·αž‰",
"αž”αž‰αŸ’αž‡αžΈ",
"list",
"ធអវ",
"αž’αžΆαžœαž™αžΊαž",
"αžαŸ„",
"αžŸαŸ’αž”αŸ‚αž€αž‡αžΎαž„",
"αž€αžΆαž”αžΌαž”",
"αž˜αž½αž€",
"αž“αžΆαž‘αž·αž€αžΆ",
"αžŸαŸ’αžšαŸ„αž˜",
"αžαŸ’αžŸαŸ‚",
"αžαŸ„αž€",
"αžαŸ’αžšαžΉαž˜",
"αžαžœαž·αž€αžΆ",
"sale",
"promo",
"discount",
"hoodie",
"t-shirt",
"tshirt",
"tee",
"hat",
"backpack",
"jacket",
"chino",
"jogger",
"pant",
"pants",
"jean",
"jeans",
"shirt",
"product",
"produt",
"produts",
"buy",
"got",
"hv",
"have",
"need",
"find",
"search",
"want",
"wanna",
"αž‘αž·αž‰",
"αž…αž„αŸ‹αž‘αž·αž‰",
"αžšαž€",
"αž”αŸ‰αžΆαžαžΆ",
"αž”αŸŠαžΌ",
"shoe",
"watch",
"belt",
"sock",
"underwear",
"nike",
"adidas",
"blk",
"black",
"new",
"αžαŸ’αž˜αžΈ",
]
lower = text.lower()
return any(k.lower() in lower for k in keywords)
def is_bestseller_question(text):
keywords = [
"αž›αž€αŸ‹αžŠαžΆαž…αŸ‹",
"αž›αž€αŸ‹αžαŸ’αž›αžΆαŸ†αž„",
"best seller",
"bestseller",
"best-selling",
"best selling",
"top seller",
"top-selling",
"popular",
"most popular",
"trending",
"αž–αŸαž‰αž“αž·αž™αž˜",
"αžŠαžΆαž…αŸ‹αž”αŸ†αž•αž»αž",
"αž›αž€αŸ‹αž…αŸ’αžšαžΎαž“",
"αž‘αŸ†αž“αž·αž‰αž›αž€αŸ‹αžŠαžΆαž…αŸ‹",
]
lower = text.lower()
return any(k.lower() in lower for k in keywords)