跳转至

search

搜索相关 API

SearchType

Bases: Enum

搜索类型

  • SONG: 歌曲
  • SINGER: 歌手
  • ALBUM: 专辑
  • SONGLIST: 歌单
  • MV: MV
  • LYRIC: 歌词
  • USER: 用户
  • AUDIO_SONG: 节目专辑
  • AUDIO: 节目

hotkey async

hotkey()

获取热搜词

Source code in qqmusic_api/search.py
@api_request("music.musicsearch.HotkeyService", "GetHotkeyForQQMusicMobile", exclude_params=["search_id"])
async def hotkey():
    """获取热搜词"""
    return {"search_id": get_searchID()}, NO_PROCESSOR

complete async

complete(keyword: str)

搜索词补全

PARAMETER DESCRIPTION
keyword

关键词

TYPE: str

Source code in qqmusic_api/search.py
@api_request("music.smartboxCgi.SmartBoxCgi", "GetSmartBoxResult", exclude_params=["search_id"])
async def complete(keyword: str):
    """搜索词补全

    Args:
        keyword: 关键词
    """
    return {
        "search_id": get_searchID(),
        "query": keyword,
        "num_per_page": 0,
        "page_idx": 0,
    }, NO_PROCESSOR
quick_search(keyword: str) -> dict[str, Any]

快速搜索

PARAMETER DESCRIPTION
keyword

关键词

TYPE: str

Source code in qqmusic_api/search.py
async def quick_search(keyword: str) -> dict[str, Any]:
    """快速搜索

    Args:
        keyword: 关键词
    """
    resp = await get_session().get(
        "https://c.y.qq.com/splcloud/fcgi-bin/smartbox_new.fcg",
        params={
            "key": keyword,
        },
    )
    resp.raise_for_status()
    return resp.json()["data"]
general_search(keyword: str, page: int = 1, highlight: bool = True)

综合搜索

PARAMETER DESCRIPTION
keyword

关键词

TYPE: str

page

页码

TYPE: int DEFAULT: 1

highlight

是否高亮关键词

TYPE: bool DEFAULT: True

Source code in qqmusic_api/search.py
@api_request("music.adaptor.SearchAdaptor", "do_search_v2", exclude_params=["searchid"])
async def general_search(
    keyword: str,
    page: int = 1,
    highlight: bool = True,
):
    """综合搜索

    Args:
        keyword: 关键词
        page: 页码
        highlight: 是否高亮关键词
    """
    return {
        "searchid": get_searchID(),
        "search_type": 100,
        "page_num": 15,
        "query": keyword,
        "page_id": page,
        "highlight": highlight,
        "grp": True,
    }, NO_PROCESSOR

search_by_type async

search_by_type(keyword: str, search_type: SearchType = SONG, num: int = 10, page: int = 1, highlight: bool = True)

搜索

PARAMETER DESCRIPTION
keyword

关键词

TYPE: str

search_type

搜索类型

TYPE: SearchType DEFAULT: SONG

num

返回数量

TYPE: int DEFAULT: 10

page

页码

TYPE: int DEFAULT: 1

highlight

是否高亮关键词

TYPE: bool DEFAULT: True

Source code in qqmusic_api/search.py
@api_request("music.search.SearchCgiService", "DoSearchForQQMusicMobile", exclude_params=["searchid"])
async def search_by_type(
    keyword: str,
    search_type: SearchType = SearchType.SONG,
    num: int = 10,
    page: int = 1,
    highlight: bool = True,
):
    """搜索

    Args:
        keyword: 关键词
        search_type: 搜索类型
        num: 返回数量
        page: 页码
        highlight: 是否高亮关键词
    """
    params = {
        "searchid": get_searchID(),
        "query": keyword,
        "search_type": search_type.value,
        "num_per_page": num,
        "page_num": page,
        "highlight": highlight,
        "grp": True,
    }

    def _processor(data: dict[str, Any]) -> list[dict[str, Any]]:
        types = {
            SearchType.SONG: "item_song",
            SearchType.SINGER: "singer",
            SearchType.ALBUM: "item_album",
            SearchType.SONGLIST: "item_songlist",
            SearchType.MV: "item_mv",
            SearchType.LYRIC: "item_song",
            SearchType.USER: "item_user",
            SearchType.AUDIO_ALBUM: "item_audio",
            SearchType.AUDIO: "item_song",
        }
        return data["body"][types[search_type]]

    return params, _processor