跳转至

SingerApi

modules.singer.SingerApi

SingerApi(client: Client)

Bases: ApiModule

歌手相关 API.

Source code in qqmusic_api/modules/_base.py
def __init__(self, client: "Client") -> None:
    self._client = client

get_singer_list

get_singer_list(
    area: int | AreaType = ALL,
    sex: int | SexType = ALL,
    genre: int | GenreType = ALL,
)

获取歌手列表原始数据.

PARAMETER DESCRIPTION
area

地区类型.

TYPE: int | AreaType DEFAULT: ALL

sex

性别类型.

TYPE: int | SexType DEFAULT: ALL

genre

风格类型.

TYPE: int | GenreType DEFAULT: ALL

Source code in qqmusic_api/modules/singer.py
def get_singer_list(
    self,
    area: int | AreaType = AreaType.ALL,
    sex: int | SexType = SexType.ALL,
    genre: int | GenreType = GenreType.ALL,
):
    """获取歌手列表原始数据.

    Args:
        area: 地区类型.
        sex: 性别类型.
        genre: 风格类型.
    """
    return self._build_request(
        module="music.musichallSinger.SingerList",
        method="GetSingerList",
        param={
            "hastag": 0,
            "area": int(AreaType(area)),
            "sex": int(SexType(sex)),
            "genre": int(GenreType(genre)),
        },
        response_model=SingerTypeListResponse,
    )

get_singer_list_index

get_singer_list_index(
    area: int | AreaType = ALL,
    sex: int | SexType = ALL,
    genre: int | GenreType = ALL,
    index: int | IndexType = ALL,
    sin: int = 0,
    cur_page: int = 1,
)

获取按索引分页的歌手列表原始数据.

PARAMETER DESCRIPTION
area

地区类型.

TYPE: int | AreaType DEFAULT: ALL

sex

性别类型.

TYPE: int | SexType DEFAULT: ALL

genre

风格类型.

TYPE: int | GenreType DEFAULT: ALL

index

首字母索引.

TYPE: int | IndexType DEFAULT: ALL

sin

起始位置.

TYPE: int DEFAULT: 0

cur_page

当前页码.

TYPE: int DEFAULT: 1

Source code in qqmusic_api/modules/singer.py
def get_singer_list_index(
    self,
    area: int | AreaType = AreaType.ALL,
    sex: int | SexType = SexType.ALL,
    genre: int | GenreType = GenreType.ALL,
    index: int | IndexType = IndexType.ALL,
    sin: int = 0,
    cur_page: int = 1,
):
    """获取按索引分页的歌手列表原始数据.

    Args:
        area: 地区类型.
        sex: 性别类型.
        genre: 风格类型.
        index: 首字母索引.
        sin: 起始位置.
        cur_page: 当前页码.
    """
    return self._build_request(
        module="music.musichallSinger.SingerList",
        method="GetSingerListIndex",
        param={
            "area": int(AreaType(area)),
            "sex": int(SexType(sex)),
            "genre": int(GenreType(genre)),
            "index": int(IndexType(index)),
            "sin": sin,
            "cur_page": cur_page,
        },
        response_model=SingerIndexPageResponse,
        pager_meta=PagerMeta(
            strategy=MultiFieldContinuationStrategy(
                lambda params, response, adapter: (
                    None
                    if not response.singerlist
                    or cast("dict[str, int]", params)["sin"] + len(response.singerlist)
                    >= (adapter.get_total(response) or 0)
                    else {
                        **cast("dict[str, int]", params),
                        "sin": cast("dict[str, int]", params)["sin"] + len(response.singerlist),
                        "cur_page": cast("dict[str, int]", params)["cur_page"] + 1,
                    }
                ),
                context_name="singer_list_index",
            ),
            adapter=ResponseAdapter(total="total"),
        ),
    )

get_info

get_info(mid: str)

获取歌手主页基本信息.

PARAMETER DESCRIPTION
mid

歌手 MID.

TYPE: str

Source code in qqmusic_api/modules/singer.py
def get_info(self, mid: str):
    """获取歌手主页基本信息.

    Args:
        mid: 歌手 MID.
    """
    return self._build_request(
        module="music.UnifiedHomepage.UnifiedHomepageSrv",
        method="GetHomepageHeader",
        param={"SingerMid": mid},
        response_model=HomepageHeaderResponse,
        platform=Platform.ANDROID,
    )

get_tab_detail

get_tab_detail(
    mid: str,
    tab_type: TabType,
    page: int = 1,
    num: int = 10,
)

获取歌手主页特定 Tab 的详情原始数据.

PARAMETER DESCRIPTION
mid

歌手 MID.

TYPE: str

tab_type

Tab 类型.

TYPE: TabType

page

页码.

TYPE: int DEFAULT: 1

num

返回数量.

TYPE: int DEFAULT: 10

Source code in qqmusic_api/modules/singer.py
def get_tab_detail(
    self,
    mid: str,
    tab_type: TabType,
    page: int = 1,
    num: int = 10,
):
    """获取歌手主页特定 Tab 的详情原始数据.

    Args:
        mid: 歌手 MID.
        tab_type: Tab 类型.
        page: 页码.
        num: 返回数量.
    """
    return self._build_request(
        module="music.UnifiedHomepage.UnifiedHomepageSrv",
        method="GetHomepageTabDetail",
        param={
            "SingerMid": mid,
            "IsQueryTabDetail": 1,
            "TabID": tab_type.tab_id,
            "PageNum": page - 1,
            "PageSize": num,
            "Order": 0,
        },
        response_model=HomepageTabDetailResponse,
        pager_meta=PagerMeta(
            strategy=PageStrategy(page_key="PageNum", page_size=num, start_page=page - 1),
            adapter=ResponseAdapter(has_more_flag="has_more"),
        ),
    )

get_desc

get_desc(mids: list[str])

获取歌手列表的描述信息.

PARAMETER DESCRIPTION
mids

歌手 MID 列表.

TYPE: list[str]

Source code in qqmusic_api/modules/singer.py
def get_desc(self, mids: list[str]):
    """获取歌手列表的描述信息.

    Args:
        mids: 歌手 MID 列表.
    """
    return self._build_request(
        module="music.musichallSinger.SingerInfoInter",
        method="GetSingerDetail",
        param={"singer_mids": mids, "groups": 1, "wikis": 1},
        response_model=SingerDetailResponse,
    )

get_similar

get_similar(mid: str, number: int = 10)

获取相似歌手列表.

PARAMETER DESCRIPTION
mid

歌手 MID.

TYPE: str

number

返回相似歌手的数量.

TYPE: int DEFAULT: 10

Source code in qqmusic_api/modules/singer.py
def get_similar(self, mid: str, number: int = 10):
    """获取相似歌手列表.

    Args:
        mid: 歌手 MID.
        number: 返回相似歌手的数量.
    """
    return self._build_request(
        module="music.SimilarSingerSvr",
        method="GetSimilarSingerList",
        param={"singerMid": mid, "number": number},
        response_model=SimilarSingerResponse,
    )

get_songs_list

get_songs_list(mid: str, number: int = 10, begin: int = 0)

获取歌手的歌曲列表.

PARAMETER DESCRIPTION
mid

歌手 MID.

TYPE: str

number

返回歌曲数量.

TYPE: int DEFAULT: 10

begin

分页起始位置.

TYPE: int DEFAULT: 0

Source code in qqmusic_api/modules/singer.py
def get_songs_list(self, mid: str, number: int = 10, begin: int = 0):
    """获取歌手的歌曲列表.

    Args:
        mid: 歌手 MID.
        number: 返回歌曲数量.
        begin: 分页起始位置.
    """
    return self._build_request(
        module="musichall.song_list_server",
        method="GetSingerSongList",
        param={"singerMid": mid, "order": 1, "number": number, "begin": begin},
        response_model=SingerSongListResponse,
        pager_meta=PagerMeta(
            strategy=OffsetStrategy(offset_key="begin", page_size_key="number"),
            adapter=ResponseAdapter(total="total_num", count=lambda response: len(response.song_list)),
        ),
    )

get_album_list

get_album_list(mid: str, number: int = 10, begin: int = 0)

获取歌手的专辑列表.

PARAMETER DESCRIPTION
mid

歌手 MID.

TYPE: str

number

返回专辑数量.

TYPE: int DEFAULT: 10

begin

分页起始位置.

TYPE: int DEFAULT: 0

Source code in qqmusic_api/modules/singer.py
def get_album_list(self, mid: str, number: int = 10, begin: int = 0):
    """获取歌手的专辑列表.

    Args:
        mid: 歌手 MID.
        number: 返回专辑数量.
        begin: 分页起始位置.
    """
    return self._build_request(
        module="music.musichallAlbum.AlbumListServer",
        method="GetAlbumList",
        param={"singerMid": mid, "order": 1, "number": number, "begin": begin},
        response_model=SingerAlbumListResponse,
        pager_meta=PagerMeta(
            strategy=OffsetStrategy(offset_key="begin", page_size_key="number"),
            adapter=ResponseAdapter(total="total", count=lambda response: len(response.album_list)),
        ),
    )

get_mv_list

get_mv_list(mid: str, number: int = 10, begin: int = 0)

获取歌手 MV 列表数据.

PARAMETER DESCRIPTION
mid

歌手 MID.

TYPE: str

number

返回数量.

TYPE: int DEFAULT: 10

begin

起始位置.

TYPE: int DEFAULT: 0

Source code in qqmusic_api/modules/singer.py
def get_mv_list(self, mid: str, number: int = 10, begin: int = 0):
    """获取歌手 MV 列表数据.

    Args:
        mid: 歌手 MID.
        number: 返回数量.
        begin: 起始位置.
    """
    return self._build_request(
        module="MvService.MvInfoProServer",
        method="GetSingerMvList",
        param={"singermid": mid, "order": 1, "count": number, "start": begin},
        response_model=SingerMvListResponse,
        pager_meta=PagerMeta(
            strategy=OffsetStrategy(offset_key="start", page_size_key="count"),
            adapter=ResponseAdapter(total="total", count=lambda response: len(response.mv_list)),
        ),
    )