Commit 1194acf
Changed files (1)
src
preview
src/preview/youtube.py
@@ -10,7 +10,7 @@ import re
from datetime import UTC, datetime, timedelta
from zoneinfo import ZoneInfo
-from glom import glom
+from glom import Coalesce, glom
from loguru import logger
from pyrogram.parser.markdown import BLOCKQUOTE_EXPANDABLE_DELIM
@@ -166,3 +166,17 @@ async def get_youtube_vinfo(video_id: str) -> dict:
logger.error(f"Failed to get video info: {e}")
return {"downloadable": False, "error_msg": "❌无法获取此视频信息"}
return info | {"emoji": "🔴"}
+
+
+async def get_youtube_channel_thumb(channel_id: str) -> str:
+ """Get YouTube channel thumbnail url."""
+ if not channel_id:
+ return ""
+ api = "https://www.googleapis.com/youtube/v3/channels"
+ params = {"key": TOKEN.YOUTUBE_API_KEY, "part": "snippet", "id": channel_id, "hl": "zh-CN"}
+ resp = await hx_req(api, proxy=PROXY.GOOGLE_SEARCH, params=params, check_keys=["items.0.snippet"], max_retry=3)
+ if resp.get("hx_error"):
+ logger.warning(f"YouTube Channels API failed: {resp['hx_error']}")
+ return ""
+ thumbnails = glom(resp, "items.0.snippet.thumbnails", default={})
+ return glom(thumbnails, Coalesce("high.url", "medium.url", "default.url"), default="")