qqmusic-api-python 0.1.7__tar.gz → 0.1.9__tar.gz

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 (63) hide show
  1. {qqmusic_api_python-0.1.7 → qqmusic_api_python-0.1.9}/PKG-INFO +14 -6
  2. {qqmusic_api_python-0.1.7 → qqmusic_api_python-0.1.9}/README.md +12 -4
  3. {qqmusic_api_python-0.1.7 → qqmusic_api_python-0.1.9}/pyproject.toml +5 -2
  4. {qqmusic_api_python-0.1.7 → qqmusic_api_python-0.1.9}/qqmusic_api/__init__.py +4 -2
  5. {qqmusic_api_python-0.1.7 → qqmusic_api_python-0.1.9}/qqmusic_api/album.py +24 -5
  6. qqmusic_api_python-0.1.9/qqmusic_api/data/api/login.json +196 -0
  7. {qqmusic_api_python-0.1.7 → qqmusic_api_python-0.1.9}/qqmusic_api/data/api/search.json +4 -2
  8. {qqmusic_api_python-0.1.7 → qqmusic_api_python-0.1.9}/qqmusic_api/data/api/song.json +2 -1
  9. {qqmusic_api_python-0.1.7 → qqmusic_api_python-0.1.9}/qqmusic_api/data/api/songlist.json +3 -3
  10. qqmusic_api_python-0.1.9/qqmusic_api/data/api/user.json +171 -0
  11. {qqmusic_api_python-0.1.7 → qqmusic_api_python-0.1.9}/qqmusic_api/data/file_type.json +7 -3
  12. qqmusic_api_python-0.1.9/qqmusic_api/exceptions/__init__.py +9 -0
  13. qqmusic_api_python-0.1.9/qqmusic_api/exceptions/api_exception.py +60 -0
  14. qqmusic_api_python-0.1.9/qqmusic_api/login.py +426 -0
  15. qqmusic_api_python-0.1.9/qqmusic_api/login_utils.py +142 -0
  16. {qqmusic_api_python-0.1.7 → qqmusic_api_python-0.1.9}/qqmusic_api/lyric.py +4 -3
  17. {qqmusic_api_python-0.1.7 → qqmusic_api_python-0.1.9}/qqmusic_api/mv.py +6 -6
  18. {qqmusic_api_python-0.1.7 → qqmusic_api_python-0.1.9}/qqmusic_api/search.py +1 -1
  19. {qqmusic_api_python-0.1.7 → qqmusic_api_python-0.1.9}/qqmusic_api/song.py +202 -158
  20. {qqmusic_api_python-0.1.7 → qqmusic_api_python-0.1.9}/qqmusic_api/songlist.py +4 -2
  21. qqmusic_api_python-0.1.9/qqmusic_api/user.py +280 -0
  22. {qqmusic_api_python-0.1.7 → qqmusic_api_python-0.1.9}/qqmusic_api/utils/credential.py +56 -46
  23. qqmusic_api_python-0.1.9/qqmusic_api/utils/network.py +311 -0
  24. qqmusic_api_python-0.1.9/qqmusic_api/utils/sync.py +29 -0
  25. {qqmusic_api_python-0.1.7 → qqmusic_api_python-0.1.9}/qqmusic_api/utils/tripledes.py +46 -535
  26. {qqmusic_api_python-0.1.7 → qqmusic_api_python-0.1.9}/qqmusic_api/utils/utils.py +12 -3
  27. qqmusic_api_python-0.1.9/tests/conftest.py +84 -0
  28. {qqmusic_api_python-0.1.7 → qqmusic_api_python-0.1.9}/tests/test_album.py +1 -1
  29. qqmusic_api_python-0.1.9/tests/test_login.py +28 -0
  30. qqmusic_api_python-0.1.9/tests/test_lyric.py +19 -0
  31. {qqmusic_api_python-0.1.7 → qqmusic_api_python-0.1.9}/tests/test_mv.py +1 -1
  32. {qqmusic_api_python-0.1.7 → qqmusic_api_python-0.1.9}/tests/test_search.py +1 -1
  33. {qqmusic_api_python-0.1.7 → qqmusic_api_python-0.1.9}/tests/test_singer.py +2 -4
  34. {qqmusic_api_python-0.1.7 → qqmusic_api_python-0.1.9}/tests/test_song.py +1 -1
  35. {qqmusic_api_python-0.1.7 → qqmusic_api_python-0.1.9}/tests/test_songlist.py +1 -1
  36. {qqmusic_api_python-0.1.7 → qqmusic_api_python-0.1.9}/tests/test_top.py +1 -1
  37. qqmusic_api_python-0.1.9/tests/test_user.py +65 -0
  38. qqmusic_api_python-0.1.7/qqmusic_api/data/api/login.json +0 -58
  39. qqmusic_api_python-0.1.7/qqmusic_api/exceptions/ApiException.py +0 -12
  40. qqmusic_api_python-0.1.7/qqmusic_api/exceptions/CredentialNoMusicidException.py +0 -10
  41. qqmusic_api_python-0.1.7/qqmusic_api/exceptions/CredentialNoMusickeyException.py +0 -10
  42. qqmusic_api_python-0.1.7/qqmusic_api/exceptions/CredentialNoRefreshkeyException.py +0 -10
  43. qqmusic_api_python-0.1.7/qqmusic_api/exceptions/LoginException.py +0 -10
  44. qqmusic_api_python-0.1.7/qqmusic_api/exceptions/ResponseCodeException.py +0 -24
  45. qqmusic_api_python-0.1.7/qqmusic_api/exceptions/__init__.py +0 -15
  46. qqmusic_api_python-0.1.7/qqmusic_api/login.py +0 -485
  47. qqmusic_api_python-0.1.7/qqmusic_api/utils/network.py +0 -264
  48. qqmusic_api_python-0.1.7/qqmusic_api/utils/sync.py +0 -32
  49. qqmusic_api_python-0.1.7/tests/__init__.py +0 -3
  50. qqmusic_api_python-0.1.7/tests/conftest.py +0 -49
  51. qqmusic_api_python-0.1.7/tests/test_login.py +0 -30
  52. {qqmusic_api_python-0.1.7 → qqmusic_api_python-0.1.9}/LICENSE +0 -0
  53. {qqmusic_api_python-0.1.7 → qqmusic_api_python-0.1.9}/qqmusic_api/data/api/album.json +0 -0
  54. {qqmusic_api_python-0.1.7 → qqmusic_api_python-0.1.9}/qqmusic_api/data/api/lyric.json +0 -0
  55. {qqmusic_api_python-0.1.7 → qqmusic_api_python-0.1.9}/qqmusic_api/data/api/mv.json +0 -0
  56. {qqmusic_api_python-0.1.7 → qqmusic_api_python-0.1.9}/qqmusic_api/data/api/singer.json +0 -0
  57. {qqmusic_api_python-0.1.7 → qqmusic_api_python-0.1.9}/qqmusic_api/data/api/top.json +0 -0
  58. {qqmusic_api_python-0.1.7 → qqmusic_api_python-0.1.9}/qqmusic_api/data/search_type.json +0 -0
  59. {qqmusic_api_python-0.1.7 → qqmusic_api_python-0.1.9}/qqmusic_api/singer.py +0 -0
  60. {qqmusic_api_python-0.1.7 → qqmusic_api_python-0.1.9}/qqmusic_api/top.py +0 -0
  61. {qqmusic_api_python-0.1.7 → qqmusic_api_python-0.1.9}/qqmusic_api/utils/__init__.py +0 -0
  62. {qqmusic_api_python-0.1.7 → qqmusic_api_python-0.1.9}/qqmusic_api/utils/qimei.py +0 -0
  63. {qqmusic_api_python-0.1.7 → qqmusic_api_python-0.1.9}/tests/test_qimei.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: qqmusic-api-python
3
- Version: 0.1.7
3
+ Version: 0.1.9
4
4
  Summary: QQ音乐API封装库
5
5
  Keywords: music,api,qqmusic,tencentmusic
6
6
  Home-page: https://github.com/luren-dc/QQMusicApi
@@ -20,7 +20,7 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
20
20
  Project-URL: Homepage, https://github.com/luren-dc/QQMusicApi
21
21
  Project-URL: Repository, https://github.com/luren-dc/QQMusicApi
22
22
  Project-URL: Documentation, https://github.com/luren-dc/QQMusicApi
23
- Requires-Python: <4.0,>=3.9
23
+ Requires-Python: <3.13,>=3.9
24
24
  Requires-Dist: cryptography<42.0.0,>=41.0.2
25
25
  Requires-Dist: typing-extensions>=4.12.2
26
26
  Requires-Dist: httpx>=0.27.0
@@ -30,7 +30,7 @@ Description-Content-Type: text/markdown
30
30
  <h1> QQMusicApi </h1>
31
31
  <p> Python QQ音乐 API 封装库 </p>
32
32
  <a href="https://www.python.org">
33
- <img src="https://img.shields.io/badge/python-3.9+-blue" alt="Python">
33
+ <img src="https://img.shields.io/badge/python-3.9|3.10|3.11|3.12-blue" alt="Python">
34
34
  </a>
35
35
  <a href="https://github.com/astral-sh/ruff">
36
36
  <img src="https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json" alt="Ruff">
@@ -53,6 +53,8 @@ Description-Content-Type: text/markdown
53
53
 
54
54
  > [!WARNING]
55
55
  > 本仓库的所有内容仅供学习和参考之用,禁止用于商业用途
56
+ >
57
+ > All contents in this repo are for learning and reference only and are not allowed to be used for commercial purposes.
56
58
 
57
59
  **文档**: <a href="https://luren-dc.github.io/QQMusicApi" target="_blank">https://luren-dc.github.io/QQMusicApi</a>
58
60
 
@@ -101,9 +103,15 @@ asyncio.run(main())
101
103
 
102
104
  ## 参考项目
103
105
 
104
- - [Rain120/qq-muisc-api](https://github.com/Rain120/qq-music-api)
105
- - [jsososo/QQMusicApi](https://github.com/jsososo/QQMusicApi)
106
- - [Nemo2011/bilibili-api](https://github.com/Nemo2011/bilibili-api/)
106
+ ### API
107
+ [![Readme Card](https://github-readme-stats.vercel.app/api/pin/?username=Rain120&repo=qq-music-api)](https://github.com/Rain120/qq-music-api)
108
+ [![Readme Card](https://github-readme-stats.vercel.app/api/pin/?username=jsososo&repo=QQMusicApi)](https://github.com/jsososo/QQMusicApi)
109
+
110
+ ### QRC 解密
111
+ [![Readme Card](https://github-readme-stats.vercel.app/api/pin/?username=chenmozhijin&repo=LDDC)](https://github.com/chenmozhijin/LDDC)
112
+
113
+ ### 项目架构
114
+ [![Readme Card](https://github-readme-stats.vercel.app/api/pin/?username=Nemo2011&repo=bilibili-api)](https://github.com/Nemo2011/bilibili-api)
107
115
 
108
116
  ## Licence
109
117
 
@@ -2,7 +2,7 @@
2
2
  <h1> QQMusicApi </h1>
3
3
  <p> Python QQ音乐 API 封装库 </p>
4
4
  <a href="https://www.python.org">
5
- <img src="https://img.shields.io/badge/python-3.9+-blue" alt="Python">
5
+ <img src="https://img.shields.io/badge/python-3.9|3.10|3.11|3.12-blue" alt="Python">
6
6
  </a>
7
7
  <a href="https://github.com/astral-sh/ruff">
8
8
  <img src="https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json" alt="Ruff">
@@ -25,6 +25,8 @@
25
25
 
26
26
  > [!WARNING]
27
27
  > 本仓库的所有内容仅供学习和参考之用,禁止用于商业用途
28
+ >
29
+ > All contents in this repo are for learning and reference only and are not allowed to be used for commercial purposes.
28
30
 
29
31
  **文档**: <a href="https://luren-dc.github.io/QQMusicApi" target="_blank">https://luren-dc.github.io/QQMusicApi</a>
30
32
 
@@ -73,9 +75,15 @@ asyncio.run(main())
73
75
 
74
76
  ## 参考项目
75
77
 
76
- - [Rain120/qq-muisc-api](https://github.com/Rain120/qq-music-api)
77
- - [jsososo/QQMusicApi](https://github.com/jsososo/QQMusicApi)
78
- - [Nemo2011/bilibili-api](https://github.com/Nemo2011/bilibili-api/)
78
+ ### API
79
+ [![Readme Card](https://github-readme-stats.vercel.app/api/pin/?username=Rain120&repo=qq-music-api)](https://github.com/Rain120/qq-music-api)
80
+ [![Readme Card](https://github-readme-stats.vercel.app/api/pin/?username=jsososo&repo=QQMusicApi)](https://github.com/jsososo/QQMusicApi)
81
+
82
+ ### QRC 解密
83
+ [![Readme Card](https://github-readme-stats.vercel.app/api/pin/?username=chenmozhijin&repo=LDDC)](https://github.com/chenmozhijin/LDDC)
84
+
85
+ ### 项目架构
86
+ [![Readme Card](https://github-readme-stats.vercel.app/api/pin/?username=Nemo2011&repo=bilibili-api)](https://github.com/Nemo2011/bilibili-api)
79
87
 
80
88
  ## Licence
81
89
 
@@ -15,7 +15,7 @@ dependencies = [
15
15
  "typing-extensions>=4.12.2",
16
16
  "httpx>=0.27.0",
17
17
  ]
18
- requires-python = "<4.0,>=3.9"
18
+ requires-python = "<3.13,>=3.9"
19
19
  readme = "README.md"
20
20
  maintainers = [
21
21
  { name = "Luren", email = "68656403+luren-dc@users.noreply.github.com" },
@@ -39,7 +39,7 @@ classifiers = [
39
39
  "Topic :: Software Development :: Libraries :: Python Modules",
40
40
  ]
41
41
  dynamic = []
42
- version = "0.1.7"
42
+ version = "0.1.9"
43
43
 
44
44
  [project.license]
45
45
  text = "MIT"
@@ -69,6 +69,8 @@ docs = [
69
69
  "mkdocs>=1.6.0",
70
70
  "markdown-callouts>=0.4.0",
71
71
  "griffe-inherited-docstrings>=1.0.0",
72
+ "docstring-inheritance>=2.2.1",
73
+ "griffe-modernized-annotations>=1.0.8",
72
74
  ]
73
75
  mypy = [
74
76
  "mypy>=1.11.0",
@@ -143,3 +145,4 @@ testpaths = [
143
145
  "tests",
144
146
  ]
145
147
  asyncio_mode = "auto"
148
+ asyncio_default_fixture_loop_scope = "session"
@@ -1,15 +1,16 @@
1
- from . import album, login, lyric, mv, search, singer, song, songlist, top
1
+ from . import album, login, login_utils, lyric, mv, search, singer, song, songlist, top, user
2
2
  from .utils.credential import Credential
3
3
  from .utils.network import get_session, set_session
4
4
  from .utils.sync import sync
5
5
 
6
- __version__ = "0.1.7"
6
+ __version__ = "0.1.9"
7
7
 
8
8
  __all__ = [
9
9
  "album",
10
10
  "Credential",
11
11
  "get_session",
12
12
  "login",
13
+ "login_utils",
13
14
  "lyric",
14
15
  "mv",
15
16
  "search",
@@ -19,4 +20,5 @@ __all__ = [
19
20
  "songlist",
20
21
  "sync",
21
22
  "top",
23
+ "user",
22
24
  ]
@@ -1,6 +1,6 @@
1
1
  """专辑相关 API"""
2
2
 
3
- from typing import Optional
3
+ from typing import Literal, Optional
4
4
 
5
5
  from .utils.network import Api
6
6
  from .utils.utils import get_api
@@ -8,6 +8,21 @@ from .utils.utils import get_api
8
8
  API = get_api("album")
9
9
 
10
10
 
11
+ def get_album_cover(mid: str, size: Literal[150, 300, 500, 800] = 300) -> str:
12
+ """获取专辑封面链接
13
+
14
+ Args:
15
+ mid: 专辑 mid
16
+ size: 封面大小
17
+
18
+ Returns:
19
+ 封面链接
20
+ """
21
+ if size not in [150, 300, 500, 800]:
22
+ raise ValueError("not supported size")
23
+ return f"https://y.gtimg.cn/music/photo_new/T002R{size}x{size}M000{mid}.jpg"
24
+
25
+
11
26
  class Album:
12
27
  """专辑类
13
28
 
@@ -33,8 +48,8 @@ class Album:
33
48
  """
34
49
  if mid is None and id is None:
35
50
  raise ValueError("mid or id must be provided")
36
- self.mid = mid
37
- self.id = id
51
+ self.mid = mid or ""
52
+ self.id = id or 0
38
53
  self._info: Optional[dict] = None
39
54
 
40
55
  async def get_mid(self) -> str:
@@ -43,7 +58,9 @@ class Album:
43
58
  Returns:
44
59
  专辑 mid
45
60
  """
46
- return (await self.get_detail())["basicInfo"]["albumMid"]
61
+ if not self.mid:
62
+ self.mid = (await self.get_detail())["basicInfo"]["albumMid"]
63
+ return self.mid
47
64
 
48
65
  async def get_id(self) -> int:
49
66
  """获取专辑 id
@@ -51,7 +68,9 @@ class Album:
51
68
  Returns:
52
69
  专辑 id
53
70
  """
54
- return (await self.get_detail())["basicInfo"]["albumID"]
71
+ if not self.id:
72
+ self.id = (await self.get_detail())["basicInfo"]["albumID"]
73
+ return self.id
55
74
 
56
75
  async def get_detail(self) -> dict:
57
76
  """获取专辑详细信息
@@ -0,0 +1,196 @@
1
+ {
2
+ "qq": {
3
+ "get_qrcode": {
4
+ "url": "https://ssl.ptlogin2.qq.com/ptqrshow",
5
+ "params": {
6
+ "appid": "716027609",
7
+ "e": "2",
8
+ "l": "M",
9
+ "s": "3",
10
+ "d": "72",
11
+ "v": "4",
12
+ "t": "str(random.random())",
13
+ "daid": "383",
14
+ "pt_3rd_aid": "100497308"
15
+ },
16
+ "headers": {
17
+ "Referer": "https://xui.ptlogin2.qq.com/"
18
+ },
19
+ "comment": "获取二维码二进制数据和 qrsig"
20
+ },
21
+ "check_qrcode_state": {
22
+ "url": "https://ssl.ptlogin2.qq.com/ptqrlogin",
23
+ "params": {
24
+ "u1": "https://graph.qq.com/oauth2.0/login_jump",
25
+ "ptqrtoken": "hash33(qrsig)",
26
+ "ptredirect": "0",
27
+ "h": "1",
28
+ "t": "1",
29
+ "g": "1",
30
+ "from_ui": "1",
31
+ "ptlang": "2052",
32
+ "action": "0-0-{time.time() * 1000}",
33
+ "js_ver": "20102616",
34
+ "js_type": "1",
35
+ "pt_uistyle": "40",
36
+ "aid": "716027609",
37
+ "daid": "383",
38
+ "pt_3rd_aid": "100497308",
39
+ "has_onekey": "1"
40
+ },
41
+ "headers": {
42
+ "Referer": "https://xui.ptlogin2.qq.com/"
43
+ },
44
+ "comment": "获取二维码状态"
45
+ },
46
+ "check_sig": {
47
+ "url": "https://ssl.ptlogin2.graph.qq.com/check_sig",
48
+ "ignore_code": true,
49
+ "params": {
50
+ "uin": "uin",
51
+ "pttype": "1",
52
+ "service": "ptqrlogin",
53
+ "nodirect": "0",
54
+ "ptsigx": "sigx",
55
+ "s_url": "https://graph.qq.com/oauth2.0/login_jump",
56
+ "ptlang": "2052",
57
+ "ptredirect": "100",
58
+ "aid": "716027609",
59
+ "daid": "383",
60
+ "j_later": "0",
61
+ "low_login_hour": "0",
62
+ "regmaster": "0",
63
+ "pt_login_type": "3",
64
+ "pt_aid": "0",
65
+ "pt_aaid": "16",
66
+ "pt_light": "0",
67
+ "pt_3rd_aid": "100497308"
68
+ },
69
+ "headers": {
70
+ "Referer": "https://xui.ptlogin2.qq.com/"
71
+ },
72
+ "comment": "获取 p_skey"
73
+ },
74
+ "authorize": {
75
+ "url": "https://graph.qq.com/oauth2.0/authorize",
76
+ "method": "POST",
77
+ "ignore_code": true,
78
+ "data": {
79
+ "response_type": "code",
80
+ "client_id": "100497308",
81
+ "redirect_uri": "https://y.qq.com/portal/wx_redirect.html?login_type=1&surl=https%3A%252F%252Fy.qq.com%252F",
82
+ "scope": "get_user_info,get_app_friends",
83
+ "state": "state",
84
+ "switch": "",
85
+ "from_ptlogin": "1",
86
+ "src": "1",
87
+ "update_auth": "1",
88
+ "openapi": "1010_1030",
89
+ "g_tk": "hash33(p_skey, 5381)",
90
+ "auth_time": "str(int(time.time()) * 1000)",
91
+ "ui": "str(uuid.uuid4())"
92
+ },
93
+ "comment": "QQ 鉴权"
94
+ },
95
+ "login": {
96
+ "module": "QQConnectLogin.LoginServer",
97
+ "method": "QQLogin",
98
+ "ignore_code": true,
99
+ "params": {
100
+ "code": "str 鉴权码",
101
+ "musicid": "int",
102
+ "musickey": "str",
103
+ "refresh_key": "str",
104
+ "refresh_token": "str"
105
+ },
106
+ "extra_common": {
107
+ "tmeLoginType": "str 2"
108
+ },
109
+ "comment": "QQ 登录"
110
+ }
111
+ },
112
+ "wx": {
113
+ "get_qrcode": {
114
+ "url": "https://open.weixin.qq.com/connect/qrconnect",
115
+ "params": {
116
+ "appid": "wx48db31d50e334801",
117
+ "redirect_uri": "https://y.qq.com/portal/wx_redirect.html?login_type=2&surl=https://y.qq.com/",
118
+ "response_type": "code",
119
+ "scope": "snsapi_login",
120
+ "state": "STATE",
121
+ "href": "https://y.qq.com/mediastyle/music_v17/src/css/popup_wechat.css#wechat_redirect"
122
+ },
123
+ "comment": "获取二维码二进制数据和 uuid"
124
+ },
125
+ "check_qrcode_state": {
126
+ "url": "https://lp.open.weixin.qq.com/connect/l/qrconnect",
127
+ "params": {
128
+ "uuid": "str uuid",
129
+ "_": "str 毫秒级时间戳"
130
+ },
131
+ "headers": {
132
+ "Referer": "https://open.weixin.qq.com/"
133
+ },
134
+ "comment": "获取二维码状态"
135
+ },
136
+ "login": {
137
+ "module": "music.login.LoginServer",
138
+ "method": "Login",
139
+ "ignore_code": true,
140
+ "params": {
141
+ "strAppid": "wx48db31d50e334801",
142
+ "code": "str 鉴权码",
143
+ "musicid": "int",
144
+ "musickey": "str",
145
+ "refresh_key": "str",
146
+ "refresh_token": "str",
147
+ "loginMode": "int 2"
148
+ },
149
+ "extra_common": {
150
+ "tmeLoginType": "str 1"
151
+ },
152
+ "comment": "微信登录"
153
+ }
154
+ },
155
+ "phone": {
156
+ "send_authcode": {
157
+ "module": "music.login.LoginServer",
158
+ "method": "SendPhoneAuthCode",
159
+ "ignore_code": true,
160
+ "params": {
161
+ "tmeAppid": "qqmusic",
162
+ "phoneNo": "str 手机号",
163
+ "encryptedPhoneNo ": "str 加密手机号",
164
+ "areaCode": "str 国家码(86)"
165
+ },
166
+ "extra_common": {
167
+ "tmeLoginMethod": "str 3"
168
+ },
169
+ "comment": "发送验证码"
170
+ },
171
+ "login": {
172
+ "module": "music.login.LoginServer",
173
+ "method": "Login",
174
+ "ignore_code": true,
175
+ "params": {
176
+ "code": "str 验证码",
177
+ "phoneNo": "str 手机号",
178
+ "encryptedPhoneNo ": "str 加密手机号",
179
+ "areaCode": "str 国家码(86)",
180
+ "loginMode": "int 1"
181
+ },
182
+ "extra_common": {
183
+ "tmeLoginMethod": "str 3",
184
+ "tmeLoginType": "str 0"
185
+ },
186
+ "comment": "手机验证码鉴权"
187
+ }
188
+ },
189
+ "check_expired": {
190
+ "module": "music.UserInfo.userInfoServer",
191
+ "method": "GetLoginUserInfo",
192
+ "verify": true,
193
+ "params": {},
194
+ "comment": "获取登录用户的信息,用于检测凭证是否失效"
195
+ }
196
+ }
@@ -8,7 +8,7 @@
8
8
  "comment": "获取热搜词"
9
9
  },
10
10
  "complete": {
11
- "module": "tencent_music_soso_smartbox_cgi.SmartBoxCgi",
11
+ "module": "music.smartboxCgi.SmartBoxCgi",
12
12
  "method": "GetSmartBoxResult",
13
13
  "params": {
14
14
  "search_id": "int 随机生成",
@@ -21,10 +21,11 @@
21
21
  "quick_search": {
22
22
  "url": "https://c.y.qq.com/splcloud/fcgi-bin/smartbox_new.fcg",
23
23
  "method": "GET",
24
+ "platform": "web",
24
25
  "params": {
25
26
  "key": "str 搜索词"
26
27
  },
27
- "comment": "桌面端快速搜索"
28
+ "comment": "快速搜索"
28
29
  },
29
30
  "general_search": {
30
31
  "module": "music.adaptor.SearchAdaptor",
@@ -43,6 +44,7 @@
43
44
  "desktop_search_by_type": {
44
45
  "module": "music.search.SearchCgiService",
45
46
  "method": "DoSearchForQQMusicDesktop",
47
+ "platform": "desktop",
46
48
  "params": {
47
49
  "search_id": "int 随机生成",
48
50
  "search_type": "int 搜索类型",
@@ -68,7 +68,8 @@
68
68
  "module": "music.mir.SheetMusicSvr",
69
69
  "method": "GetMoreSheetMusic",
70
70
  "params": {
71
- "songmid": "str 歌曲 mid"
71
+ "songmid": "str 歌曲 mid",
72
+ "scoreType": "int -1"
72
73
  },
73
74
  "comment": "获取相关曲谱"
74
75
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "detail": {
3
- "module": "srf_diss_info.DissInfoServer",
3
+ "module": "music.srfDissInfo.DissInfo",
4
4
  "method": "CgiGetDiss",
5
5
  "params": {
6
6
  "disstid": "int 歌单ID",
@@ -9,9 +9,9 @@
9
9
  "onlysonglist": "int 是否只返回歌曲",
10
10
  "song_begin": "int 开始位置",
11
11
  "song_num": "int 返回数量",
12
- "userinfo": "int 是否返回以后信息",
12
+ "userinfo": "int 是否返回用户信息",
13
13
  "orderlist": "int 是否排序歌单",
14
- "caller": "str musicid"
14
+ "enc_host_uin": "str encrypt_uin"
15
15
  }
16
16
  }
17
17
  }
@@ -0,0 +1,171 @@
1
+ {
2
+ "profile": {
3
+ "url": "https://c6.y.qq.com/rsc/fcgi-bin/fcg_get_profile_homepage.fcg",
4
+ "method": "GET",
5
+ "platform": "web",
6
+ "headers": {
7
+ "referer": "https://y.qq.com/"
8
+ },
9
+ "params": {
10
+ "ct": "int 20",
11
+ "cv": "int 4747474",
12
+ "cid": "int 205360838",
13
+ "userid": "str musicid or euin"
14
+ },
15
+ "comment": "获取用户主页,根据 cookie 值不同,内容有差异"
16
+ },
17
+ "vip_info": {
18
+ "module": "VipLogin.VipLoginInter",
19
+ "method": "vip_login_base",
20
+ "verify": true,
21
+ "params": {},
22
+ "comment": "获取当前登录账号的 vip 信息"
23
+ },
24
+ "homepage": {
25
+ "module": "music.UnifiedHomepage.UnifiedHomepageSrv",
26
+ "method": "GetHomepageHeader",
27
+ "params": {
28
+ "uin": "str musicid or euin",
29
+ "IsQueryTabDetail": "int 1"
30
+ },
31
+ "comment": "获取用户主页信息(包含用户信息,音乐基因,乐库,用户歌单等信息),根据 cookie 值不同,内容有差异"
32
+ },
33
+ "friend": {
34
+ "module": "music.homepage.Friendship",
35
+ "method": "GetFriendList",
36
+ "verify": true,
37
+ "params": {
38
+ "Page": "int 页数",
39
+ "PageSize": "int 每页数量"
40
+ },
41
+ "comment": "获取好友列表"
42
+ },
43
+ "songlist_by_euin": {
44
+ "url": "https://c6.y.qq.com/rsc/fcgi-bin/fcg_user_created_diss",
45
+ "method": "GET",
46
+ "platform": "web",
47
+ "headers": {
48
+ "referer": "https://y.qq.com/"
49
+ },
50
+ "params": {
51
+ "hostuin": "str encrypt_uin",
52
+ "sin": "int 页数",
53
+ "size": "int 每页返回数量"
54
+ },
55
+ "comment": "通过 encrypt_uin 获取用户歌单列表"
56
+ },
57
+ "songlist_by_uin": {
58
+ "module": "music.musicasset.PlaylistBaseRead",
59
+ "method": "GetPlaylistByUin",
60
+ "platform": "desktop",
61
+ "params": {
62
+ "uin": "str uin"
63
+ },
64
+ "comment": "通过 uin 获取用户歌单列表"
65
+ },
66
+ "follow_singer": {
67
+ "module": "music.concern.RelationList",
68
+ "method": "GetFollowSingerList",
69
+ "verify": true,
70
+ "params": {
71
+ "From": "int 起始序号",
72
+ "Size": "int 返回数量",
73
+ "HostUin": "str encrypt_uin"
74
+ },
75
+ "comment": "获取关注歌手列表"
76
+ },
77
+ "follow_user": {
78
+ "module": "music.concern.RelationList",
79
+ "method": "GetFollowUserList",
80
+ "verify": true,
81
+ "params": {
82
+ "From": "int 起始序号",
83
+ "Size": "int 返回数量",
84
+ "HostUin": "str encrypt_uin"
85
+ },
86
+ "comment": "获取关注用户列表"
87
+ },
88
+ "fans": {
89
+ "module": "music.concern.RelationList",
90
+ "method": "GetFansList",
91
+ "verify": true,
92
+ "params": {
93
+ "From": "int 起始序号",
94
+ "Size": "int 返回数量",
95
+ "HostUin": "str encrypt_uin"
96
+ },
97
+ "comment": "获取粉丝列表"
98
+ },
99
+ "fav_songlist_self": {
100
+ "module": "music.mobileAsset.GetFav",
101
+ "method": "CgiGetOrderDiss",
102
+ "verify": true,
103
+ "params": {},
104
+ "comment": "获取当前登录用户收藏歌单"
105
+ },
106
+ "fav_album_self": {
107
+ "module": "music.mobileAsset.GetFav",
108
+ "method": "CgiGetOrderAlbum",
109
+ "verify": true,
110
+ "params": {},
111
+ "comment": "获取当前登录用户收藏专辑"
112
+ },
113
+ "fav_mv_self": {
114
+ "module": "music.mobileAsset.GetFav",
115
+ "method": "CgiGetOrderMV",
116
+ "verify": true,
117
+ "params": {},
118
+ "comment": "获取当前登录用户收藏MV"
119
+ },
120
+ "fav_songlist_by_euin": {
121
+ "module": "music.musicasset.PlaylistFavRead",
122
+ "method": "CgiGetPlaylistFavInfo",
123
+ "params": {
124
+ "uin": "str encrypt_uin",
125
+ "offset": "int 偏移量",
126
+ "size": "int 返回数量"
127
+ },
128
+ "comment": "通过 encrypt_uin 获取收藏歌单"
129
+ },
130
+ "fav_album_by_euin": {
131
+ "module": "music.musicasset.AlbumFavRead",
132
+ "method": "CgiGetAlbumFavInfo",
133
+ "params": {
134
+ "euin": "str encrypt_uin",
135
+ "offset": "int 偏移量",
136
+ "size": "int 返回数量"
137
+ },
138
+ "comment": "通过 encrypt_uin 获取收藏专辑"
139
+ },
140
+ "fav_mv": {
141
+ "module": "music.musicasset.MVFavRead",
142
+ "method": "getMyFavMV",
143
+ "verify": true,
144
+ "params": {
145
+ "uin": "str musicid or euin",
146
+ "support": "int 1",
147
+ "req_icon_type": "int 1"
148
+ },
149
+ "comment": "获取收藏 MV"
150
+ },
151
+ "fav_mv_by_euin": {
152
+ "module": "music.musicasset.MVFavRead",
153
+ "method": "getMyFavMV_v2",
154
+ "platform": "desktop",
155
+ "verify": true,
156
+ "params": {
157
+ "encuin": "str encrypt_uin",
158
+ "num": "int 返回数量",
159
+ "pagesize": "int 返回页数"
160
+ },
161
+ "comment": "通过 encrypt_uin 获取收藏 MV"
162
+ },
163
+ "music_gene": {
164
+ "module": "music.recommend.UserProfileSettingSvr",
165
+ "method": "GetProfileReport",
166
+ "params": {
167
+ "VisitAccount": "str encrypt_uin"
168
+ },
169
+ "comment": "获取音乐基因数据"
170
+ }
171
+ }
@@ -1,13 +1,13 @@
1
1
  {
2
- "new_0": {
2
+ "master": {
3
3
  "s": "AI00",
4
4
  "e": ".flac"
5
5
  },
6
- "new_1": {
6
+ "atmos_2": {
7
7
  "s": "Q000",
8
8
  "e": ".flac"
9
9
  },
10
- "new_2": {
10
+ "atmos_51": {
11
11
  "s": "Q001",
12
12
  "e": ".flac"
13
13
  },
@@ -15,6 +15,10 @@
15
15
  "s": "F000",
16
16
  "e": ".flac"
17
17
  },
18
+ "ogg_640": {
19
+ "s": "O801",
20
+ "e": ".ogg"
21
+ },
18
22
  "ogg_320": {
19
23
  "s": "O800",
20
24
  "e": ".ogg"