import random
import time
from typing import Iterable
def _safe_float(value) -> float:
try:
return float(value or 0)
except (TypeError, ValueError):
return 0.0
def generate_timeline_id() -> str:
return f"{int(time.time() * 1000)}{random.randint(1000, 9999)}"
def build_media_xml(media_items: Iterable[dict]) -> str:
parts = []
for index, item in enumerate(media_items):
url = item.get("url", "")
thumb = item.get("thumb", url)
media_id = item.get("id") or f"{int(time.time() * 1000)}{index}"
md5 = item.get("md5", "")
total_size = item.get("total_size", 0)
width = item.get("width", 0)
height = item.get("height", 0)
parts.append(
f"""
""".strip()
)
return "\n".join(parts)
def build_friend_circle_xml(wxid: str, content: str, media_items: list[dict] | None = None,
timeline_id: str | None = None, create_time: int | None = None) -> str:
media_items = media_items or []
timeline_id = timeline_id or generate_timeline_id()
create_time = create_time or int(time.time())
content_style = 1 if media_items else 2
media_xml = build_media_xml(media_items)
return f"""
0
0
0
{media_xml}
""".strip()