feat: preview emoji media in message list
This commit is contained in:
@@ -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
|
||||
|
||||
# 处理消息内容,格式化引用消息
|
||||
|
||||
Reference in New Issue
Block a user