chore: reset version to v0.0.1

This commit is contained in:
miao-moe
2026-06-20 12:48:28 +08:00
parent cf5d093f0b
commit 42ff3bde8e
16 changed files with 1687 additions and 2017 deletions

View File

@@ -0,0 +1,123 @@
# Koneko QZ Music v2/v3 鎻掍欢寮€鍙戦伩鍧戞寚鍗?
> 鐗堟湰: 0.0.1 | 浣滆€? 浜戞眬(Miao-moe) | 鐩爣: 鏀寔杩佺Щ鍒板叾浠?AI 缁х画寮€鍙?
---
## 涓€銆侀」鐩儗鏅?
QZ Music v2/v3 鏄竴娆?Android/PC 闊充箰鎾斁鍣紝鏀寔閫氳繃**鎷撳睍鎻掍欢**鎺ュ叆澶氬钩鍙伴煶婧愩€傛彃浠剁郴缁熷熀浜?Node.js 杩愯鏃讹紙Javet/V8锛夛紝姣忎釜鎻掍欢鏄竴涓崟鐙殑 `.js` 鏂囦欢锛岄€氳繃 `module.exports` 瀵煎嚭鎺ュ彛銆?
### 鎻掍欢鍔犺浇鏈哄埗
- 杩愯鏃剁幆澧冨彉閲忛€氳繃 `global.env` 璁块棶锛?*涓嶆槸** `process.env`
- 鎻掍欢涓哄崟 `.js` 鏂囦欢鏍煎紡
## 浜屻€丣avet/V8 鍏煎鎬уぇ鍧戯紙鏈€閲嶈锛?
QZ Music 浣跨敤 Javet 浣滀负 JS 杩愯鏃讹紙鍩轰簬 V8锛夛紝**涓嶆敮鎸佺幇浠?ES 璇硶**锛?
| 璇硶 | 鐘舵€?| 姝g‘鍐欐硶 |
|------|------|---------|
| `let` / `const` | 鉂?| `var` |
| 绠ご鍑芥暟 `() => {}` | 鉂?| `function() {}` |
| `async` / `await` | 鉂?| `Promise` 閾惧紡 |
| `catch { }`锛堟棤鍙傛暟锛墊 鉂?| `catch (e) { }` |
| `Promise.allSettled` | 鉂?| `Promise.all` + 鎵嬪姩鍖呰 |
| `Object.entries` / `Object.values` | 鉂?| `for...in` 閬嶅巻 |
| `Array.prototype.includes` | 鉂?| `indexOf(...) !== -1` |
| `String.prototype.startsWith` | 鉂?| `indexOf(...) === 0` |
| `class` | 鉂?| 瀵硅薄瀛楅潰閲?|
| 妯℃澘瀛楃涓?`${}` | 鉁?| 鍙敤 |
| `Buffer` | 鉁?| Node.js 鍐呯疆 |
### Promise.allSettled 鏇夸唬鏂规
```js
Promise.all(promises.map(function(p) {
return p.then(function(v) {
return { status: 'fulfilled', value: v }
}).catch(function(e) {
return { status: 'rejected', reason: e }
})
})).then(function(results) {
for (var i = 0; i < results.length; i++) {
if (results[i].status === 'fulfilled') return results[i].value
}
throw new Error('all failed')
})
```
## 涓夈€佹悳绱㈢粨鏋滄牸寮?
App 鐨?`MusicListResponse` 瑕佹眰**蹇呴』鏈?`list` 瀛楁**锛屼笉鏄?`songs`锛?
```js
// 鉁?姝g‘
return { list: [...], allPage: N, limit: N, total: N, source: 'tx' }
// 鉂?閿欒
return { songs: [...], total: N }
```
### 瀛楁鍚嶅鐓?
| 鍚箟 | 姝g‘瀛楁 | 閿欒瀛楁 |
|------|---------|---------|
| 姝屾墜 | `artists` | `artist` |
| 灏侀潰鍥?| `pic`/`mPic`/`sPic` | `picUrl` |
| 鏃堕暱 | `interval` (m:ss) | `duration` |
| 鍒楄〃 | `list` | `songs` |
## 鍥涖€佸悇骞冲彴韪╁潙鐐?
### QQ闊充箰 (tx)
- 鎼滅储绛惧悕锛歚zzcSign` = SHA1 + 绱㈠紩鎻愬彇 + XOR + base64
- 灏侀潰鍥撅細鏈変笓杈慖D鐢?T002锛屾棤涓撹緫ID鐢?T001
- getUrl 闊宠川鍙傛暟锛氬甫 `k` (128k/320k/999k)
### 閰风嫍闊充箰 (kg)
- 鎼滅储杩斿洖鍊煎瓧娈垫槸 `errcode`锛堜笉鏄?`error_code`锛?- 灏侀潰鍥撅細鏇挎崲 `{size}` 涓?`400`
### 閰锋垜闊充箰 (kw)
- 闊宠川淇℃伅鍦?`N_MINFO` 瀛楁瑙f瀽
- 灏侀潰鍥撅細`https://img2.kuwo.cn/star/albumcover/300/{ALBUMID}.jpg`
### 缃戞槗浜戦煶涔?(wy)
- 鎼滅储鐢?GET锛歚/api/search/get/web`锛屼笉闇€瑕?weapi
- 灏侀潰鍥撅細`picId` 闇€ Base64 缂栫爜
- getUrl 闊宠川鍙傛暟锛氭暟瀛楁牸寮?`128000`/`320000`/`999000`
- Cookie 鐢ㄤ簬 weapi 鍔犲瘑鎺ュ彛锛堟瘡鏃ユ帹鑽愩€佺浜篎M銆佸枩娆㈡瓕鏇层€佹瓕鍗曘€佷笓杈戙€佹瓕璇嶏級
### 鍜挄闊充箰 (mg)
- 鎼滅储闇€ MD5 绛惧悕
- 灏侀潰鍥撅細鐩稿璺緞闇€鎷兼帴 `https://d.musicapp.migu.cn`
### GIT闊虫簮 (git)
- 鏃犳悳绱紝绾煶婧?- getUrl 闊宠川鍙傛暟锛歚128k`/`320k`/`999k`
## 浜斻€乬etUrl 瀹圭伨閫昏緫
鎵€鏈夊钩鍙颁娇鐢?*骞跺彂娴嬮€?*妯″紡锛氬悓鏃惰姹傚涓?API锛屽彇绗竴涓垚鍔熺粨鏋溿€?
API 璋冪敤椤哄簭锛?1. 鑱嗘緶锛堥渶 `ceru_key` 鐜鍙橀噺锛?2. HUIBQ (lxmusicapi)
3. 鏄熸捣 / 蹇嗛煶 / 蹇靛績 / 闀块潚 / 鏄熸捣澶?/ fish / HYW
缃戞槗浜戦澶栨湁锛?4. bb / lx / ymc / unms / 瀹樻柟 weapi
## 鍏€佺幆澧冨彉閲忚鏄?
| key | 鐢ㄩ€?| 閫傜敤骞冲彴 | 蹇呭~ |
|-----|------|---------|------|
| `ceru_key` | 鑱嗘緶闊虫簮 API 瀵嗛挜 | 鍏ㄩ儴 | 鍚?|
| `playlist_url` | 缃戞槗浜戜釜浜轰富椤甸摼鎺?| 缃戞槗浜?| 鍚?|
| `cookie` | 缃戞槗浜?Cookie | 缃戞槗浜?| 鍚?|
## 涓冦€佺増鏈鐞?
- 鎵€鏈夊钩鍙扮粺涓€鐗堟湰鍙?- 褰撳墠鐗堟湰锛?*0.0.1**
- 鏂囦欢鍚嶆牸寮忥細`Koneko_{骞冲彴鍚峿_v{鐗堟湰鍙穧.js`
## 鍏€佸父瑙佹姤閿?
| 鎶ラ敊 | 鍘熷洜 | 瑙e喅 |
|------|------|------|
| `Cannot find module 'axios'` | 鐢ㄤ簡 axios | 鏀圭敤 `http`/`https` 鍐呯疆妯″潡 |
| `Field 'list' is required` | 鎼滅储杩斿洖 `songs` 鑰岄潪 `list` | 鏀瑰瓧娈靛悕涓?`list` |
| `SyntaxError: Invalid or unexpected token` | 鐢ㄤ簡 `catch { }` | 鏀逛负 `catch (e) { }` |
| 鎼滅储鏃犵粨鏋?| 瀛楁鍚嶄笉鍖归厤 | 妫€鏌?`errcode` vs `error_code` |
| 鎾斁澶辫触 | `mapBr` 杩斿洖鏍煎紡涓嶅 | QQ/kg/kw/mg/git 鐢?`320k`锛寃y 鐢?`320000` |
| 灏侀潰鍥句笉鏄剧ず | URL 鏍煎紡閿欒鎴栬法鍩?| 妫€鏌ュ悇骞冲彴灏侀潰鍥炬嫾鎺ヨ鍒?|
## 涔濄€佸悗缁紑鍙戝缓璁?
1. 姣忔淇敼鍏ㄩ儴骞冲彴缁熶竴鍗囩骇鐗堟湰鍙?2. 鍏堝湪娴忚鍣?curl 娴嬭瘯 API 鏄惁鍙敤
3. 娉ㄦ剰 Javet 鍏煎鎬э紝閬垮厤鐜颁唬 JS 璇硶
4. 鎼滅储杩斿洖鍔″繀鍖呭惈 `list` 瀛楁
5. getUrl 娉ㄦ剰鍚勫钩鍙伴煶璐ㄥ弬鏁版牸寮忓樊寮?6. 鎵€鏈夊紓姝ユ搷浣滃姞 `.catch()` 鍏滃簳
7. 浼樺厛浣跨敤瀹樻柟鎼滅储鎺ュ彛锛岄煶婧愮敤绗笁鏂?API 瀹圭伨