5.9 KiB
5.9 KiB
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 鏇夸唬鏂规
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锛?
// 鉁?姝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 鏍煎紡閿欒鎴栬法鍩? | 妫€鏌ュ悇骞冲彴灏侀潰鍥炬嫾鎺ヨ鍒? |
涔濄€佸悗缁紑鍙戝缓璁?
- 姣忔淇敼鍏ㄩ儴骞冲彴缁熶竴鍗囩骇鐗堟湰鍙?2. 鍏堝湪娴忚鍣?curl 娴嬭瘯 API 鏄惁鍙敤
- 娉ㄦ剰 Javet 鍏煎鎬э紝閬垮厤鐜颁唬 JS 璇硶
- 鎼滅储杩斿洖鍔″繀鍖呭惈
list瀛楁 - getUrl 娉ㄦ剰鍚勫钩鍙伴煶璐ㄥ弬鏁版牸寮忓樊寮?6. 鎵€鏈夊紓姝ユ搷浣滃姞
.catch()鍏滃簳 - 浼樺厛浣跨敤瀹樻柟鎼滅储鎺ュ彛锛岄煶婧愮敤绗笁鏂?API 瀹圭伨