- 新增 5sing/apple/xm/me/qt/lr 平台包与取流实现(含 xm-sign、MissEvan 签名、蜻蜓 HMAC、Apple developer token) - 新增 wy/kg/tx/lr 登录:扫码、手机号、账密(kg 20028 风控指纹)、cookie 绑定、kg/tx 续期 - request 层:保留多值 Set-Cookie;JSON body 紧凑化(修复 kg 网关验签);直连不经系统代理(对齐 Node) - 登录路由统一 Body(embed=True),修复扫码轮询 422;lifespan 接入登录续期调度 - ruff/format/pyright 全绿;14 平台真实联网与 HTTP 路由验证通过
42 lines
1.3 KiB
Python
42 lines
1.3 KiB
Python
"""酷狗热搜(对应 sdk/kg/hotSearch.ts)。"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import Any
|
|
|
|
from app.sdk.common.request import http_fetch
|
|
from app.sdk.common.utils import decode_name
|
|
|
|
HOT_API = (
|
|
"http://gateway.kugou.com/api/v3/search/hot_tab"
|
|
"?signature=ee44edb9d7155821412d220bcaf509dd&appid=1005&clientver=10026&plat=0"
|
|
)
|
|
|
|
HEADERS = {
|
|
"dfid": "1ssiv93oVqMp27cirf2CvoF1",
|
|
"mid": "156798703528610303473757548878786007104",
|
|
"clienttime": "1584257267",
|
|
"x-router": "msearch.kugou.com",
|
|
"user-agent": "Android9-AndroidPhone-10020-130-0-searchrecommendprotocol-wifi",
|
|
"kg-rc": "1",
|
|
}
|
|
|
|
|
|
def _filter_list(raw_list: list[dict[str, Any]]) -> list[str]:
|
|
result: list[str] = []
|
|
for item in raw_list:
|
|
for keyword in item.get("keywords") or []:
|
|
result.append(decode_name(keyword.get("keyword")))
|
|
return result
|
|
|
|
|
|
async def get_list(retry_num: int = 0) -> dict[str, Any]:
|
|
if retry_num > 2:
|
|
raise RuntimeError("try max num")
|
|
resp = await http_fetch(HOT_API, method="get", headers=HEADERS)
|
|
body = resp.body if isinstance(resp.body, dict) else {}
|
|
if resp.status_code != 200 or body.get("errcode") != 0:
|
|
raise RuntimeError("获取热搜词失败")
|
|
data = body.get("data") or {}
|
|
return {"source": "kg", "list": _filter_list(data.get("list") or [])}
|