feat: preview emoji media in message list

This commit is contained in:
liuwei
2026-04-13 12:10:37 +08:00
parent ada1b656e0
commit 45d97b2989
2 changed files with 49 additions and 1 deletions

View File

@@ -1,4 +1,6 @@
import requests
import html
import re
from flask import Blueprint, render_template, jsonify, request, current_app, Response, stream_with_context
from .auth import login_required
from loguru import logger
@@ -31,6 +33,17 @@ def _is_usable_local_media_path(value: str) -> bool:
return False
def _extract_emoji_preview_url(xml_text: str) -> str:
if not xml_text:
return ''
patterns = (r'cdnurl="([^"]+)"', r'encrypturl="([^"]+)"', r'externurl="([^"]+)"')
for pattern in patterns:
match = re.search(pattern, xml_text)
if match:
return html.unescape(match.group(1))
return ''
def _proxy_remote_media(target_url: str) -> Response:
if not target_url:
return Response("missing url", status=400)
@@ -109,6 +122,7 @@ def get_messages():
if _is_emoji_message(msg):
msg['content'] = '[表情]'
msg['emoji_preview_url'] = msg.get('image_path') or _extract_emoji_preview_url(msg.get('attachment_url', ''))
continue
# 处理消息内容,格式化引用消息