from __future__ import annotations import os import tempfile import logging logger = logging.getLogger(__name__) CACHE_DIR = os.path.join(tempfile.gettempdir(), "forcepilot_ilink_media") class ILinkMedia: def __init__(self, outbound): self._outbound = outbound async def download(self, media_id: str, media_type: str = "") -> str: os.makedirs(CACHE_DIR, exist_ok=True) ext = _ext_for_type(media_type) filename = f"{media_id}{ext}" filepath = os.path.join(CACHE_DIR, filename) if os.path.exists(filepath): return filepath data = await self._outbound.download_media(media_id) with open(filepath, "wb") as f: f.write(data) return filepath def _ext_for_type(media_type: str) -> str: extensions = { "image": ".jpg", "voice": ".amr", "video": ".mp4", "file": "", } return extensions.get(media_type, "")