qqmusic-api-python 0.2.2__py3-none-any.whl → 0.3.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. qqmusic_api/__init__.py +4 -8
  2. qqmusic_api/album.py +36 -70
  3. qqmusic_api/login.py +359 -342
  4. qqmusic_api/lyric.py +34 -34
  5. qqmusic_api/mv.py +57 -96
  6. qqmusic_api/search.py +57 -64
  7. qqmusic_api/singer.py +353 -153
  8. qqmusic_api/song.py +179 -248
  9. qqmusic_api/songlist.py +43 -52
  10. qqmusic_api/top.py +25 -43
  11. qqmusic_api/user.py +175 -246
  12. qqmusic_api/utils/common.py +0 -19
  13. qqmusic_api/utils/credential.py +15 -33
  14. qqmusic_api/utils/device.py +6 -4
  15. qqmusic_api/utils/network.py +416 -246
  16. qqmusic_api/utils/qimei.py +16 -8
  17. qqmusic_api/utils/session.py +68 -110
  18. qqmusic_api/utils/sign.py +3 -2
  19. {qqmusic_api_python-0.2.2.dist-info → qqmusic_api_python-0.3.1.dist-info}/METADATA +12 -4
  20. qqmusic_api_python-0.3.1.dist-info/RECORD +26 -0
  21. qqmusic_api/data/api/album.json +0 -22
  22. qqmusic_api/data/api/login.json +0 -196
  23. qqmusic_api/data/api/lyric.json +0 -25
  24. qqmusic_api/data/api/mv.json +0 -26
  25. qqmusic_api/data/api/search.json +0 -74
  26. qqmusic_api/data/api/singer.json +0 -48
  27. qqmusic_api/data/api/song.json +0 -118
  28. qqmusic_api/data/api/songlist.json +0 -17
  29. qqmusic_api/data/api/top.json +0 -20
  30. qqmusic_api/data/api/user.json +0 -171
  31. qqmusic_api/data/file_type.json +0 -58
  32. qqmusic_api/data/search_type.json +0 -11
  33. qqmusic_api/login_utils.py +0 -141
  34. qqmusic_api/utils/sync.py +0 -31
  35. qqmusic_api_python-0.2.2.dist-info/RECORD +0 -40
  36. {qqmusic_api_python-0.2.2.dist-info → qqmusic_api_python-0.3.1.dist-info}/WHEEL +0 -0
  37. {qqmusic_api_python-0.2.2.dist-info → qqmusic_api_python-0.3.1.dist-info}/licenses/LICENSE +0 -0
qqmusic_api/__init__.py CHANGED
@@ -1,31 +1,27 @@
1
1
  import logging
2
2
 
3
- from . import album, login, login_utils, lyric, mv, search, singer, song, songlist, top, user
3
+ from . import album, login, lyric, mv, search, singer, song, songlist, top, user
4
4
  from .utils.credential import Credential
5
- from .utils.session import create_session, get_session, set_session, set_session_credential
6
- from .utils.sync import sync
5
+ from .utils.session import Session, get_session, set_session
7
6
 
8
- __version__ = "0.2.2"
7
+ __version__ = "0.3.1"
9
8
 
10
9
  logger = logging.getLogger("qqmusicapi")
11
10
 
12
11
 
13
12
  __all__ = [
14
13
  "Credential",
14
+ "Session",
15
15
  "album",
16
- "create_session",
17
16
  "get_session",
18
17
  "login",
19
- "login_utils",
20
18
  "lyric",
21
19
  "mv",
22
20
  "search",
23
21
  "set_session",
24
- "set_session_credential",
25
22
  "singer",
26
23
  "song",
27
24
  "songlist",
28
- "sync",
29
25
  "top",
30
26
  "user",
31
27
  ]
qqmusic_api/album.py CHANGED
@@ -1,14 +1,11 @@
1
1
  """专辑相关 API"""
2
2
 
3
- from typing import Literal
3
+ from typing import Any, Literal
4
4
 
5
- from .utils.common import get_api
6
- from .utils.network import Api
5
+ from .utils.network import NO_PROCESSOR, api_request
7
6
 
8
- API = get_api("album")
9
7
 
10
-
11
- def get_album_cover(mid: str, size: Literal[150, 300, 500, 800] = 300) -> str:
8
+ def get_cover(mid: str, size: Literal[150, 300, 500, 800] = 300) -> str:
12
9
  """获取专辑封面链接
13
10
 
14
11
  Args:
@@ -23,70 +20,39 @@ def get_album_cover(mid: str, size: Literal[150, 300, 500, 800] = 300) -> str:
23
20
  return f"https://y.gtimg.cn/music/photo_new/T002R{size}x{size}M000{mid}.jpg"
24
21
 
25
22
 
26
- class Album:
27
- """专辑类
23
+ @api_request("music.musichallAlbum.AlbumInfoServer", "GetAlbumDetail")
24
+ async def get_detail(value: str | int):
25
+ """获取专辑详细信息
28
26
 
29
- Attributes:
30
- mid: 专辑 mid
31
- id: 专辑 id
27
+ Args:
28
+ value: 专辑 id 或 mid
32
29
  """
30
+ if isinstance(value, int):
31
+ return {"albumId": value}, NO_PROCESSOR
32
+
33
+ return {"albumMId": value}, NO_PROCESSOR
34
+
35
+
36
+ @api_request("music.musichallAlbum.AlbumSongList", "GetAlbumSongList")
37
+ async def get_song(value: str | int, num: int = 10, page: int = 1):
38
+ """获取专辑歌曲
39
+
40
+ Args:
41
+ value: 专辑 id 或 mid
42
+ num: 返回数量
43
+ page: 页码
44
+ """
45
+ params: dict[str, Any] = {
46
+ "begin": num * (page - 1),
47
+ "num": num,
48
+ }
49
+
50
+ def _processor(data: dict[str, Any]) -> list[dict[str, Any]]:
51
+ return [song["songInfo"] for song in data["songList"]]
52
+
53
+ if isinstance(value, int):
54
+ params["albumId"] = value
55
+ else:
56
+ params["albumMid"] = value
33
57
 
34
- def __init__(
35
- self,
36
- *,
37
- mid: str | None = None,
38
- id: int | None = None,
39
- ):
40
- """初始化专辑类
41
-
42
- Note:
43
- 歌曲 mid 和 id,两者至少提供一个
44
-
45
- Args:
46
- mid: 专辑 mid
47
- id: 专辑 id
48
- """
49
- if mid is None and id is None:
50
- raise ValueError("mid or id must be provided")
51
- self.mid = mid or ""
52
- self.id = id or 0
53
- self._info: dict | None = None
54
-
55
- async def get_mid(self) -> str:
56
- """获取专辑 mid
57
-
58
- Returns:
59
- 专辑 mid
60
- """
61
- if not self.mid:
62
- self.mid = (await self.get_detail())["basicInfo"]["albumMid"]
63
- return self.mid
64
-
65
- async def get_id(self) -> int:
66
- """获取专辑 id
67
-
68
- Returns:
69
- 专辑 id
70
- """
71
- if not self.id:
72
- self.id = (await self.get_detail())["basicInfo"]["albumID"]
73
- return self.id
74
-
75
- async def get_detail(self) -> dict:
76
- """获取专辑详细信息
77
-
78
- Returns:
79
- 专辑详细信息
80
- """
81
- if not self._info:
82
- self._info = await Api(**API["detail"]).update_params(albumMid=self.mid, albumId=self.id).result
83
- return self._info
84
-
85
- async def get_song(self) -> list[dict]:
86
- """获取专辑歌曲
87
-
88
- Returns:
89
- 歌曲列表
90
- """
91
- result = await Api(**API["song"]).update_params(albumMid=self.mid, albumId=self.id, begin=0, num=0).result
92
- return [song["songInfo"] for song in result["songList"]]
58
+ return params, _processor