跳转至

CommentApi

modules.comment.CommentApi

CommentApi(client: Client)

Bases: ApiModule

评论 API.

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

get_comment_count

get_comment_count(biz_id: int)

获取歌曲评论数量.

PARAMETER DESCRIPTION
biz_id

歌曲 ID.

TYPE: int

Source code in qqmusic_api/modules/comment.py
def get_comment_count(self, biz_id: int):
    """获取歌曲评论数量.

    Args:
        biz_id: 歌曲 ID.
    """
    # 支持 request_list
    data = {
        "request": {
            "biz_id": str(biz_id),
            "biz_type": 1,
            "biz_sub_type": 2,
        },
    }
    return self._build_request(
        "music.globalComment.CommentCountSrv",
        "GetCmCount",
        data,
        response_model=CommentCountResponse,
    )

get_hot_comments

get_hot_comments(
    biz_id: int,
    page_num: int = 1,
    page_size: int = 15,
    last_comment_seq_no: str = "",
)

获取歌曲热评.

PARAMETER DESCRIPTION
biz_id

歌曲 ID.

TYPE: int

page_num

页码.

TYPE: int DEFAULT: 1

page_size

每页数量.

TYPE: int DEFAULT: 15

last_comment_seq_no

上一页最后一条评论 ID (可选).

TYPE: str DEFAULT: ''

Source code in qqmusic_api/modules/comment.py
def get_hot_comments(
    self,
    biz_id: int,
    page_num: int = 1,
    page_size: int = 15,
    last_comment_seq_no: str = "",
):
    """获取歌曲热评.

    Args:
        biz_id: 歌曲 ID.
        page_num: 页码.
        page_size: 每页数量.
        last_comment_seq_no: 上一页最后一条评论 ID (可选).
    """
    params = {
        "BizType": 1,
        "BizId": str(biz_id),
        "LastCommentSeqNo": last_comment_seq_no,
        "PageSize": page_size,
        "PageNum": page_num - 1,
        "HotType": 1,
        "WithAirborne": 0,
        "PicEnable": 1,
    }
    return self._build_request(
        "music.globalComment.CommentRead",
        "GetHotCommentList",
        params,
        response_model=CommentListResponse,
        pager_meta=_build_comment_pager_meta(),
    )

get_new_comments

get_new_comments(
    biz_id: int,
    page_num: int = 1,
    page_size: int = 15,
    last_comment_seq_no: str = "",
)

获取歌曲最新评论.

PARAMETER DESCRIPTION
biz_id

歌曲 ID.

TYPE: int

page_num

页码.

TYPE: int DEFAULT: 1

page_size

每页数量.

TYPE: int DEFAULT: 15

last_comment_seq_no

上一页最后一条评论 ID (可选).

TYPE: str DEFAULT: ''

Source code in qqmusic_api/modules/comment.py
def get_new_comments(
    self,
    biz_id: int,
    page_num: int = 1,
    page_size: int = 15,
    last_comment_seq_no: str = "",
):
    """获取歌曲最新评论.

    Args:
        biz_id: 歌曲 ID.
        page_num: 页码.
        page_size: 每页数量.
        last_comment_seq_no: 上一页最后一条评论 ID (可选).
    """
    params = {
        "PageSize": page_size,
        "PageNum": page_num - 1,
        "HashTagID": "",
        "BizType": 1,
        "PicEnable": 1,
        "LastCommentSeqNo": last_comment_seq_no,
        "SelfSeeEnable": 1,
        "BizId": str(biz_id),
        "AudioEnable": 1,
    }
    return self._build_request(
        "music.globalComment.CommentRead",
        "GetNewCommentList",
        params,
        response_model=CommentListResponse,
        pager_meta=_build_comment_pager_meta(),
    )

get_recommend_comments

get_recommend_comments(
    biz_id: int,
    page_num: int = 1,
    page_size: int = 15,
    last_comment_seq_no: str = "",
)

获取歌曲推荐评论.

PARAMETER DESCRIPTION
biz_id

歌曲 ID.

TYPE: int

page_num

页码.

TYPE: int DEFAULT: 1

page_size

每页数量.

TYPE: int DEFAULT: 15

last_comment_seq_no

上一页最后一条评论 ID (可选).

TYPE: str DEFAULT: ''

Source code in qqmusic_api/modules/comment.py
def get_recommend_comments(
    self,
    biz_id: int,
    page_num: int = 1,
    page_size: int = 15,
    last_comment_seq_no: str = "",
):
    """获取歌曲推荐评论.

    Args:
        biz_id: 歌曲 ID.
        page_num: 页码.
        page_size: 每页数量.
        last_comment_seq_no: 上一页最后一条评论 ID (可选).
    """
    params = {
        "PageSize": page_size,
        "PageNum": page_num - 1,
        "BizType": 1,
        "PicEnable": 1,
        "Flag": 1,
        "LastCommentSeqNo": last_comment_seq_no,
        "CmListUIVer": 1,
        "BizId": str(biz_id),
        "AudioEnable": 1,
    }
    return self._build_request(
        "music.globalComment.CommentRead",
        "GetRecCommentList",
        params,
        response_model=CommentListResponse,
        pager_meta=_build_comment_pager_meta(),
    )

get_moment_comments

get_moment_comments(
    biz_id: int,
    page_size: int = 15,
    last_comment_seq_no: str = "",
)

获取歌曲时刻评论.

PARAMETER DESCRIPTION
biz_id

歌曲 ID.

TYPE: int

page_size

每页数量.

TYPE: int DEFAULT: 15

last_comment_seq_no

上一页最后一条评论 ID (可选).

TYPE: str DEFAULT: ''

Source code in qqmusic_api/modules/comment.py
def get_moment_comments(
    self,
    biz_id: int,
    page_size: int = 15,
    last_comment_seq_no: str = "",
):
    """获取歌曲时刻评论.

    Args:
        biz_id: 歌曲 ID.
        page_size: 每页数量.
        last_comment_seq_no: 上一页最后一条评论 ID (可选).
    """
    params = {
        "LastPos": last_comment_seq_no,
        "HashTagID": "",
        "SeekTs": -1,
        "Size": page_size,
        "BizType": 1,
        "BizId": str(biz_id),
    }
    return self._build_request(
        "music.globalComment.SongTsComment",
        "GetSongTsCmList",
        params,
        response_model=MomentCommentResponse,
        pager_meta=PagerMeta(
            strategy=CursorStrategy(cursor_key="LastPos"),
            adapter=ResponseAdapter(has_more_flag="has_more", cursor="next_pos"),
        ),
    )

add_comment

add_comment(
    biz_id: int,
    content: str,
    reply_cmt_id: str | None = None,
    credential: Credential | None = None,
)

添加评论.

固定使用 Android 平台.

PARAMETER DESCRIPTION
biz_id

歌曲 ID.

TYPE: int

content

评论内容.

TYPE: str

reply_cmt_id

回复的评论 ID.

TYPE: str | None DEFAULT: None

credential

登录凭据.

TYPE: Credential | None DEFAULT: None

Source code in qqmusic_api/modules/comment.py
def add_comment(
    self,
    biz_id: int,
    content: str,
    reply_cmt_id: str | None = None,
    credential: Credential | None = None,
):
    """添加评论.

    固定使用 Android 平台.

    Args:
        biz_id: 歌曲 ID.
        content: 评论内容.
        reply_cmt_id: 回复的评论 ID.
        credential: 登录凭据.
    """
    self._require_login(credential)
    return self._build_request(
        "music.globalComment.CommentWriteServer",
        "AddComment",
        {
            "Content": content,
            "BizType": 1,
            "BizId": str(biz_id),
            "RepliedCmId": reply_cmt_id,
        },
        credential=credential,
        platform=Platform.ANDROID,
        response_model=AddCommentResponse,
    )

delete_comment async

delete_comment(
    cm_id: str, credential: Credential | None = None
) -> bool

删除评论.

固定使用 Android 平台.

PARAMETER DESCRIPTION
cm_id

评论 ID.

TYPE: str

credential

登录凭据.

TYPE: Credential | None DEFAULT: None

RETURNS DESCRIPTION
bool

是否删除成功,评论不存在也为 True.

Source code in qqmusic_api/modules/comment.py
async def delete_comment(
    self,
    cm_id: str,
    credential: Credential | None = None,
) -> bool:
    """删除评论.

    固定使用 Android 平台.

    Args:
        cm_id: 评论 ID.
        credential: 登录凭据.

    Returns:
        是否删除成功,评论不存在也为 True.
    """
    self._require_login(credential)
    data = await self._build_request(
        "music.globalComment.CommentWriteServer",
        "DelComment",
        {
            "CommentId": cm_id,
        },
        platform=Platform.ANDROID,
        credential=credential,
    )
    return data.get("SubCode", 0) == 0