FengLiuFeseliud / pycloudmusic

优雅的异步高性能 Python 音乐 API 库 (网易云音乐)
https://fengliufeseliud.github.io/pycloudmusic/
MIT License
25 stars 4 forks source link

user.like_music() 返回一个 PlayList 对像生成器(Generator) 云盘上传识别不出来名称之类的 #16

Closed luckyleitwo closed 1 month ago

luckyleitwo commented 1 month ago

['銀の龍の背に乗って', ''] 中島みゆき 1977900460 return future.result() File "/Users/shenglei/ls/ls-robot-GPT/NeteaseCloudMusic.py", line 16, in main for music in likeList: File "/Users/shenglei/ls/ls-robot-GPT/.venv/lib/python3.9/site-packages/pycloudmusic/object/music163.py", line 371, in next return Music(super().next()) File "/Users/shenglei/ls/ls-robot-GPT/.venv/lib/python3.9/site-packages/pycloudmusic/object/music163.py", line 296, in init self.artist_str = "/".join([author["name"] for author in self.artist]) TypeError: sequence item 0: expected str instance, NoneType found

luckyleitwo commented 1 month ago

需要吧 pycloudmusic/object/music163.py 第280行

def init 方法

def __init__(
    self,  
    music_data: dict[str, Any]
) -> None:
    print("12312312")
    super().__init__(music_data)
    # 资源类型
    self.data_type = DATA_TYPE[0]
    # 歌曲id
    self.id = music_data['id']
    # 标题列表 [大标题, 副标题]
    self.name = [music_data["name"], " ".join(music_data["alia"])]
    self.name_str = f"{self.name[0]} {self.name[1]}"
    # 作者列表 [作者, 作者, ...]
    self.artist = [{"id": artist["id"], "name": artist["name"]} for artist in music_data['ar']]
    # 使用生成器表达式创建名字列表
    artist_str = [author["name"] for author in self.artist]

    # 检查生成器表达式结果
    if artist_str != [None]:
        self.artist_str = "/".join([author["name"] for author in self.artist])
    else:
        self.artist_str = '无法识别'
    # 专辑列表
    self.album_data = music_data["al"]
    if "tns" in self.album_data:
        self.album_str = self.album_data["name"] if self.album_data["name"] != [None] else "" + " " + (
            self.album_data["tns"][0] if self.album_data["tns"] != [] else "")
    else:
        self.album_str = self.album_data["name"]
    # 所有音质
    self.quality = {
        "h": music_data["h"],
        "m": music_data["m"],
        "l": music_data["l"],
        "sq": music_data["sq"],
        "hr": music_data["hr"],
    }
    # mv id
    self.mv_id = music_data["mv"]
    # 发表时间
    if "publishTime" in music_data:
        self.publish_time = music_data["publishTime"]
    else:
        self.publish_time = None
    # 推荐理由
    self.reason = music_data["reason"] if "reason" in music_data else None
    # 歌曲时长
    self.duration_ms = music_data["dt"]
    self.duration = self.duration_ms / 1000

替换一下就可以了