7.3 KiB
Koneko QZ Music v2/v3 鎻掍欢寮€鍙戞枃妗?
鐗堟湰锛?.0.4 | 浣滆€咃細浜戞眬(Miao-moe) | 鏁寸悊鏃ユ湡锛?026-06-20
涓€銆佹杩?
涓?QZ Music v2/v3 缂栧啓 6 涓煶涔愬钩鍙版嫇灞曟彃浠讹細
- QQ闊充箰 (
koneko_tx) - 閰风嫍闊充箰 (
koneko_kg) - 閰锋垜闊充箰 (
koneko_kw) - 缃戞槗浜戦煶涔?(
koneko_wy) - 鍜挄闊充箰 (
koneko_mg) - GIT闊虫簮 (
koneko_git)
浜屻€佹彃浠惰鑼?
2.1 杩愯鐜
- Node.js 杩愯鏃讹紙Javet/V8锛?- CommonJS 妯″潡瑙勮寖
module.exports瀵煎嚭鎺ュ彛- 涓嶆敮鎸?
axios锛屼娇鐢ㄥ唴缃?http/https妯″潡
2.2 ES5 鍏煎锛圝avet/V8 闄愬埗锛?
| 璇硶 | 鐘舵€? | 鏇夸唬 |
|---|---|---|
let / const |
鉂? | var |
| 绠ご鍑芥暟 | 鉂? | function() {} |
async/await |
鉂? | Promise 閾惧紡 |
catch { } 鏃犲弬鏁? |
鉂? | catch (e) { } |
Promise.allSettled |
鉂? | Promise.all + 鎵嬪姩鍖呰 |
Object.entries/values |
鉂? | for...in |
Array.includes |
鉂? | indexOf |
String.startsWith |
鉂? | indexOf(...) === 0 |
class |
鉂? | 瀵硅薄瀛楅潰閲? |
妯℃澘瀛楃涓?${} |
鉁? | - |
Buffer |
鉁? | - |
2.3 鎻掍欢瀵煎嚭鏍煎紡
module.exports = {
musicSearch: { search: fn, tipSearch: fn, hotSearch: fn },
tipSearch: { getList: fn },
hotSearch: { getList: fn },
getUrl: fn,
getLyric: fn,
songList: { getListDetail: fn },
album: { getListDetail: fn },
pluginInfo: { info, env, ext, quality, supportFunc },
// 缃戞槗浜戠壒鏈? userPlaylist: fn,
dailyRecommend: fn,
personalFm: fn,
myLikedSongs: fn
}
2.4 鎼滅储缁撴灉鏍煎紡
{
list: [{
id: String,
name: String,
artists: String, // 鐢?"銆? 鍒嗛殧
source: String, // tx/kg/kw/wy/mg
pic: String, // 灏侀潰澶у浘
mPic: String, // 灏侀潰涓浘
sPic: String, // 灏侀潰灏忓浘
albumName: String,
albumId: String,
interval: String, // "m:ss"
qualities: { standard: '3.21MB', exhigh: '7.85MB', ... }
}],
allPage: Number,
limit: Number,
total: Number,
source: String
}
2.5 鐜鍙橀噺
閫氳繃 global.env 璇诲彇锛?
var env = global.env || {}
var CERU_KEY = env.ceru_key || ''
var WY_COOKIE = env.cookie || ''
var PLAYLIST_URL = env.playlist_url || ''
2.6 闊宠川鏍囪瘑
| ID | 鍚箟 |
|---|---|
standard |
鏍囧噯闊宠川 (128k) |
exhigh |
楂樺搧闊宠川 (320k) |
lossless |
鏃犳崯闊宠川 (FLAC) |
hires |
Hi-Res |
jyeffect |
楂樻竻鐜粫澹? |
sky |
娌夋蹈鐜粫澹? |
jymaster |
瓒呮竻姣嶅甫 |
涓夈€佸悇骞冲彴 API
3.1 QQ闊充箰 (tx)
鎼滅储绛惧悕: zzcSign = SHA1 + 鑷畾涔夌储寮曟彁鍙?+ XOR 娣锋穯 + base64
var PART_1_INDEXES = [23, 14, 6, 36, 16, 40, 7, 19]
var PART_2_INDEXES = [16, 1, 32, 12, 19, 27, 8, 5]
var SCRAMBLE_VALUES = [89, 39, 179, 150, 218, 82, 58, 252, 177, 52, 186, 123, 120, 64, 242, 133, 143, 161, 121, 179]
**灏侀潰鍥捐鍒?*锛?- 鏈変笓杈慖D锛歚https://y.gtimg.cn/music/photo_new/T002R500x500M000{albumId}.jpg`
getUrl 闊宠川鍙傛暟锛歚128k/320k/999k`
3.2 閰风嫍闊充箰 (kg)
鎼滅储鎺ュ彛锛歚http://mobilecdn.kugou.com/api/v3/search/song`
娉ㄦ剰锛氳繑鍥炲瓧娈垫槸 errcode锛堜笉鏄?error_code锛?
**灏侀潰鍥?*锛氭悳绱㈢粨鏋滆嚜甯?imgurl锛屾浛鎹?{size} 涓?400
3.3 閰锋垜闊充箰 (kw)
鎼滅储鎺ュ彛锛歚http://search.kuwo.cn/r.s`
**灏侀潰鍥?*锛歚https://img2.kuwo.cn/star/albumcover/300/{ALBUMID}.jpg`
闊宠川淇℃伅锛氬湪 N_MINFO 瀛楁涓В鏋?
3.4 缃戞槗浜戦煶涔?(wy)
鎼滅储鎺ュ彛锛歚https://music.163.com/api/search/get/web锛圙ET锛屼笉闇€瑕?weapi锛? **灏侀潰鍥?*锛歚picId 闇€ Base64 缂栫爜
var picIdB64 = Buffer.from(String(s.album.picId)).toString('base64').replace(/=/g, '')
var pic = 'https://p2.music.126.net/' + picIdB64 + '/' + picIdStr + '.jpg'
鍔犲瘑鎺ュ彛锛?- eapi锛欰ES-128-ECB锛宬ey = e82ckenh8dichen8
weapi锛欰ES-128-CBC + RSA
Cookie 鍔熻兘锛堥渶璁剧疆 cookie 鐜鍙橀噺锛夛細
userPlaylist()- 涓汉姝屽崟锛堥渶playlist_url锛?-dailyRecommend()- 姣忔棩鎺ㄨ崘personalFm()- 绉佷汉FMmyLikedSongs()- 鎴戝枩娆㈢殑闊充箰songList(id)- 姝屽崟璇︽儏album(id)- 涓撹緫璇︽儏getLyric(id)- 姝岃瘝鑾峰彇
3.5 鍜挄闊充箰 (mg)
鎼滅储绛惧悕锛歁D5 鎷兼帴
var sign = crypto.createHash('md5').update(
str + signatureMd5 + 'yyapp2d16148780a1dcc7408e06336b98cfd50' + deviceId + time
).digest('hex')
**灏侀潰鍥?*锛氭悳绱㈢粨鏋滃彲鑳借繑鍥炵浉瀵硅矾寰勶紝闇€鎷兼帴 https://d.musicapp.migu.cn
3.6 GIT闊虫簮 (git)
绾煶婧愭彃浠讹紝鏃犳悳绱㈠姛鑳斤紝浠?getUrl
鍥涖€乬etUrl 瀹圭伨鏈哄埗
鎵€鏈夊钩鍙扮粺涓€浣跨敤**骞跺彂娴嬮€?*妯″紡锛?
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.url
}
return ''
})
闊虫簮 API 鍒楄〃
| API | 骞冲彴 | 璇存槑 |
|---|---|---|
| 鑱嗘緶 | 鍏ㄩ儴 | 闇€ ceru_key锛屾渶绋冲畾 |
| HUIBQ | 鍏ㄩ儴 | X-Request-Key: share-v3 |
| 鏄熸捣 | 鍏ㄩ儴 | 鑱氬悎鎺ュ彛 |
| 蹇靛績 | tx/kg/kw/mg | 涓汉缁存姢 |
| 闀块潚 | tx/kg/kw/mg | 涓汉缁存姢 |
| 鏄熸捣澶? | 鍏ㄩ儴 | 澶囩敤 |
| fish | 鍏ㄩ儴 | 涓汉缁存姢 |
| HYW | 鍏ㄩ儴 | 闇€ X-Card-Key |
| 蹇嗛煶 | tx | 鐩存帴杩斿洖 URL |
| 鏀堕泦QQ | tx | QQ涓撶敤 |
| 鏀堕泦KW | kw | 閰锋垜涓撶敤 |
| bb | wy | 缃戞槗浜戜笓鐢? |
| ymc | wy | 缃戞槗浜戜笓鐢? |
| unms | wy | 缃戞槗浜戜笓鐢? |
| 瀹樻柟 weapi | wy | 缃戞槗浜戝畼鏂? |
浜斻€佺増鏈鐞?
- 鎵€鏈夊钩鍙扮粺涓€鐗堟湰鍙?- 褰撳墠鐗堟湰锛歚0.0.1`
- 鏂囦欢鍚嶆牸寮忥細
Koneko_{骞冲彴鍚峿_v{鐗堟湰鍙穧.js
鍏€佸父瑙侀棶棰?
| 闂 | 鍘熷洜 | 瑙e喅 |
|---|---|---|
Cannot find module 'axios' |
鐢ㄤ簡 axios | 鏀圭敤鍐呯疆 http/https |
Field 'list' is required |
杩斿洖 songs 鑰岄潪 list |
鏀瑰瓧娈靛悕涓?list |
| 鎼滅储鏃犵粨鏋? | 瀛楁鍚嶄笉鍖归厤 | 妫€鏌?errcode vs error_code |
| 鎾斁澶辫触 | mapBr 杩斿洖鏍煎紡涓嶅 |
tx/kg/kw/mg/git 鐢?320k锛寃y 鐢?320000 |
| 灏侀潰鍥句笉鏄剧ず | URL 鏍煎紡閿欒 | 妫€鏌ュ悇骞冲彴鎷兼帴瑙勫垯 |
涓冦€佺浉鍏抽摼鎺?
- Gitea: http://171.80.3.149:4321/miao-moe
- CeruMusic: http://171.80.3.149:4321/miao-moe/CeruMusic
- QZMusic PC: http://171.80.3.149:4321/miao-moe/QZMusic_PC