@neteasecloudmusicapienhanced/api 4.29.20 → 4.30.0

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.
@@ -1,37 +1,181 @@
1
1
  <!DOCTYPE html>
2
- <html lang="en">
3
-
2
+ <html lang="zh">
4
3
  <head>
5
4
  <meta charset="UTF-8">
6
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
6
  <title>eapi 参数和返回内容解析</title>
8
- <link href="https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css" rel="stylesheet">
7
+ <style>
8
+ * {
9
+ margin: 0;
10
+ padding: 0;
11
+ box-sizing: border-box;
12
+ }
13
+
14
+ body {
15
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
16
+ min-height: 100vh;
17
+ background: #f5f5f5;
18
+ padding: 20px;
19
+ }
20
+
21
+ .container {
22
+ max-width: 900px;
23
+ margin: 0 auto;
24
+ background: white;
25
+ border-radius: 12px;
26
+ padding: 32px;
27
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
28
+ }
29
+
30
+ h1 {
31
+ font-size: 24px;
32
+ font-weight: 600;
33
+ color: #333;
34
+ margin-bottom: 24px;
35
+ }
36
+
37
+ .form-group {
38
+ margin-bottom: 24px;
39
+ }
40
+
41
+ label {
42
+ display: block;
43
+ font-size: 14px;
44
+ font-weight: 500;
45
+ color: #555;
46
+ margin-bottom: 8px;
47
+ }
48
+
49
+ textarea {
50
+ width: 100%;
51
+ padding: 12px;
52
+ border: 1px solid #ddd;
53
+ border-radius: 6px;
54
+ font-family: 'Courier New', monospace;
55
+ font-size: 13px;
56
+ resize: vertical;
57
+ min-height: 200px;
58
+ outline: none;
59
+ }
60
+
61
+ textarea:focus {
62
+ border-color: #333;
63
+ }
64
+
65
+ .radio-group {
66
+ display: flex;
67
+ gap: 24px;
68
+ margin-bottom: 24px;
69
+ }
70
+
71
+ .radio-item {
72
+ display: flex;
73
+ align-items: center;
74
+ gap: 8px;
75
+ }
76
+
77
+ .radio-item input[type="radio"] {
78
+ cursor: pointer;
79
+ }
80
+
81
+ .radio-item label {
82
+ margin: 0;
83
+ cursor: pointer;
84
+ font-size: 14px;
85
+ }
86
+
87
+ button {
88
+ background: #333;
89
+ color: white;
90
+ padding: 12px 28px;
91
+ border: none;
92
+ border-radius: 6px;
93
+ font-size: 15px;
94
+ font-weight: 500;
95
+ cursor: pointer;
96
+ transition: background 0.2s ease;
97
+ }
98
+
99
+ button:hover {
100
+ background: #555;
101
+ }
102
+
103
+ .result-section {
104
+ margin-top: 24px;
105
+ }
106
+
107
+ .result-section label {
108
+ margin-bottom: 12px;
109
+ }
110
+
111
+ .decode-result {
112
+ white-space: pre-wrap;
113
+ word-break: break-all;
114
+ background: #f9f9f9;
115
+ padding: 16px;
116
+ border-radius: 6px;
117
+ border: 1px solid #eee;
118
+ min-height: 200px;
119
+ max-height: 400px;
120
+ overflow: auto;
121
+ font-family: 'Courier New', monospace;
122
+ font-size: 13px;
123
+ }
124
+
125
+ .example-section {
126
+ margin-top: 32px;
127
+ padding-top: 24px;
128
+ border-top: 1px solid #eee;
129
+ }
130
+
131
+ .example-section h2 {
132
+ font-size: 18px;
133
+ font-weight: 600;
134
+ color: #333;
135
+ margin-bottom: 16px;
136
+ }
137
+
138
+ .example-section img {
139
+ max-width: 100%;
140
+ height: auto;
141
+ border-radius: 6px;
142
+ margin-bottom: 16px;
143
+ border: 1px solid #eee;
144
+ }
145
+ </style>
9
146
  </head>
10
147
 
11
148
  <body>
12
- <div id="app" class="p-5 flex flex-col">
13
- <h1 class="text-2xl font-bold mb-5">eapi 参数和返回内容解析</h1>
14
- <textarea class="border border-gray-300 p-3 mb-5" v-model="hexString" rows="10"></textarea>
15
- <button @click="decrypt" class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">
16
- 解密
17
- </button>
18
- <div class="mt-3">
19
- <input type="radio" id="format" name="format" v-model="isReq" value="true">
20
- <label for="format" class="ml-2">请求数据request params(针对请求数据的 params)</label>
21
- <input type="radio" id="noFormat" name="format" v-model="isReq" value="false" class="ml-5">
22
- <label for="noFormat" class="ml-2">返回数据 response 二进制数据(针对返回内容解析)</label>
149
+ <div id="app" class="container">
150
+ <h1>eapi 参数和返回内容解析</h1>
151
+
152
+ <div class="form-group">
153
+ <label for="hexString">十六进制字符串</label>
154
+ <textarea id="hexString" v-model="hexString" rows="10"></textarea>
23
155
  </div>
24
- <div>
25
- <p>解密结果:
26
- <pre>{{ JSON.stringify(JSON.parse(result), null, 2) }}</pre>
27
- </p>
156
+
157
+ <div class="radio-group">
158
+ <div class="radio-item">
159
+ <input type="radio" id="req" name="format" v-model="isReq" value="true">
160
+ <label for="req">请求数据 request params</label>
161
+ </div>
162
+ <div class="radio-item">
163
+ <input type="radio" id="resp" name="format" v-model="isReq" value="false">
164
+ <label for="resp">返回数据 response 二进制数据</label>
165
+ </div>
28
166
  </div>
29
167
 
168
+ <button @click="decrypt">解密</button>
169
+
170
+ <div class="result-section">
171
+ <label>解密结果:</label>
172
+ <pre class="decode-result">{{ formatResult(result) }}</pre>
173
+ </div>
30
174
 
31
- <div>
32
- <p>使用例子:</p>
33
- <img src="/static/eapi_params.png" />
34
- <img src="/static/eapi_response.png" />
175
+ <div class="example-section">
176
+ <h2>使用示例</h2>
177
+ <img src="/static/eapi_params.png" alt="请求示例" />
178
+ <img src="/static/eapi_response.png" alt="响应示例" />
35
179
  </div>
36
180
  </div>
37
181
 
@@ -39,7 +183,6 @@
39
183
  <script src="https://fastly.jsdelivr.net/npm/vue@3"></script>
40
184
 
41
185
  <script>
42
- const logger = require('../util/logger.js')
43
186
  const app = Vue.createApp({
44
187
  data() {
45
188
  return {
@@ -52,6 +195,13 @@
52
195
  this.decrypt()
53
196
  },
54
197
  methods: {
198
+ formatResult(result) {
199
+ try {
200
+ return JSON.stringify(JSON.parse(result), null, 2)
201
+ } catch (e) {
202
+ return result
203
+ }
204
+ },
55
205
  async decrypt() {
56
206
  try {
57
207
  const res = await axios({
@@ -62,10 +212,10 @@
62
212
  }
63
213
  })
64
214
  this.result = JSON.stringify(res.data.data)
65
- logger.info(res.data);
215
+ console.log(res.data);
66
216
  } catch (error) {
67
217
  console.error(error)
68
- alert(error?.response?.data?.message || '解密失败,数据格式错误')
218
+ alert(error?.response?.data?.message || '解密失败,数据格式错误')
69
219
  }
70
220
  }
71
221
  }
@@ -74,4 +224,4 @@
74
224
  </script>
75
225
  </body>
76
226
 
77
- </html>
227
+ </html>
package/public/home.html CHANGED
@@ -12,7 +12,6 @@
12
12
  </div>
13
13
  <script src="https://fastly.jsdelivr.net/npm/axios@0.26.1/dist/axios.min.js"></script>
14
14
  <script>
15
- const logger = require('../util/logger.js')
16
15
  async function main() {
17
16
  const res = await axios({
18
17
  url: `/homepage/block/page`,
@@ -22,7 +21,7 @@
22
21
  method: 'post',
23
22
  })
24
23
  let cursor = ''
25
- logger.info(res.data.data)
24
+ console.info(res.data.data)
26
25
  if (res.data.data.hasMore) {
27
26
  cursor = res.data.data.cursor
28
27
  const res2 = await axios({
package/public/index.html CHANGED
@@ -7,33 +7,33 @@
7
7
  <title>网易云音乐 API Enhanced</title>
8
8
  <style>
9
9
  :root {
10
- --fg: #111827; /* gray-900 */
11
- --muted: #6b7280; /* gray-500 */
12
- --border: #e5e7eb; /* gray-200 */
13
- --bg: #ffffff;
14
- --panel: #f9fafb; /* gray-50 */
15
- --accent: #2563eb; /* blue-600 */
10
+ --fg: #333;
11
+ --muted: #666;
12
+ --border: #ddd;
13
+ --bg: #f5f5f5;
14
+ --panel: #ffffff;
15
+ --accent: #333;
16
16
  }
17
17
  * { box-sizing: border-box; }
18
18
  html, body { height: 100%; }
19
- body { margin: 0; font-family: system-ui, -apple-system, Segoe UI, PingFang SC, Helvetica, Arial, sans-serif; color: var(--fg); background: var(--bg); line-height: 1.6; }
19
+ body { margin: 0; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; color: var(--fg); background: var(--bg); line-height: 1.6; }
20
20
  .container { max-width: 960px; margin: 40px auto; padding: 0 20px; }
21
21
  header.site-header { margin-bottom: 24px; }
22
- header.site-header h1 { font-size: 28px; font-weight: 700; margin: 0; }
23
- .badge { display: inline-block; margin-left: 8px; padding: 2px 8px; border: 1px solid var(--border); border-radius: 14px; font-size: 12px; color: var(--muted); }
24
- .sub { margin-top: 6px; color: var(--muted); }
25
- .block { background: var(--panel); border: 1px solid var(--border); border-radius: 8px; padding: 16px; margin-bottom: 16px; }
26
- .block h2 { margin: 0 0 10px; font-size: 18px; }
22
+ header.site-header h1 { font-size: 28px; font-weight: 600; margin: 0; }
23
+ .badge { display: inline-block; margin-left: 8px; padding: 4px 10px; border: 1px solid var(--border); border-radius: 12px; font-size: 12px; color: var(--muted); }
24
+ .sub { margin-top: 8px; color: var(--muted); font-size: 14px; }
25
+ .block { background: var(--panel); border: 1px solid var(--border); border-radius: 12px; padding: 20px; margin-bottom: 16px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05); }
26
+ .block h2 { margin: 0 0 12px; font-size: 18px; font-weight: 600; }
27
27
  .kvs { display: grid; grid-template-columns: 140px 1fr; gap: 8px 16px; align-items: center; }
28
28
  .kvs div:first-child { color: var(--muted); }
29
29
  ul.links { list-style: none; padding: 0; margin: 0; }
30
- ul.links li { margin: 6px 0; }
31
- ul.links a { color: var(--fg); text-decoration: none; border-bottom: 1px dotted var(--border); }
30
+ ul.links li { margin: 8px 0; }
31
+ ul.links a { color: var(--fg); text-decoration: none; border-bottom: 1px dotted var(--border); transition: all 0.2s ease; }
32
32
  ul.links a:hover { color: var(--accent); border-bottom-color: var(--accent); }
33
- pre { margin: 0; background: #fff; border: 1px solid var(--border); border-radius: 6px; padding: 12px; overflow: auto; }
34
- code { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace; font-size: 13px; }
35
- footer.site-footer { margin-top: 24px; padding-top: 12px; border-top: 1px solid var(--border); color: var(--muted); }
36
- footer.site-footer a { color: var(--fg); text-decoration: none; }
33
+ pre { margin: 0; background: #f9f9f9; border: 1px solid var(--border); border-radius: 6px; padding: 12px; overflow: auto; }
34
+ code { font-family: 'Courier New', monospace; font-size: 13px; }
35
+ footer.site-footer { margin-top: 24px; padding-top: 12px; border-top: 1px solid var(--border); color: var(--muted); text-align: center; }
36
+ footer.site-footer a { color: var(--fg); text-decoration: none; transition: color 0.2s ease; }
37
37
  footer.site-footer a:hover { color: var(--accent); }
38
38
  </style>
39
39
  </head>