ForcePilot/backend/package/yuxi/channel/extensions/pinduoduo/format.py

44 lines
1.5 KiB
Python
Raw Normal View History

import re
MAX_TEXT_LENGTH = 2000
def pdd_truncate_text(content: str, max_length: int = MAX_TEXT_LENGTH) -> str:
if len(content) <= max_length:
return content
return content[: max_length - 3] + "..."
def pdd_split_long_text(content: str, max_length: int = MAX_TEXT_LENGTH) -> list[str]:
chunks = []
remaining = content
while remaining:
if len(remaining) <= max_length:
chunks.append(remaining)
break
split_at = max_length
for punct in ("\n", "", "", "", "", ".", "!", "?", ";"):
pos = remaining[:max_length].rfind(punct)
if pos > max_length // 2:
split_at = pos + 1
break
chunks.append(remaining[:split_at])
remaining = remaining[split_at:]
return chunks
def pdd_strip_markdown(content: str) -> str:
content = re.sub(r"\[([^\]]+)\]\([^)]+\)", r"\1", content)
content = re.sub(r"\*\*([^*]+)\*\*", r"\1", content)
content = re.sub(r"\*([^*]+)\*", r"\1", content)
content = re.sub(r"`([^`]+)`", r"\1", content)
content = re.sub(r"^#{1,6}\s+", "", content, flags=re.MULTILINE)
content = re.sub(r"^\s*[-*+]\s+", "", content, flags=re.MULTILINE)
content = re.sub(r"^\s*\d+\.\s+", "", content, flags=re.MULTILINE)
content = re.sub(r"\n{3,}", "\n\n", content)
return content.strip()
def pdd_format_order_card(order_sn: str) -> str:
return f"📦 订单编号: {order_sn}\n点击查看详情"