mirror of
https://github.com/NeteaseCloudMusicApiEnhanced/api-enhanced.git
synced 2025-10-22 14:43:10 +00:00
perf: 新增接口, 修复登录问题
Co-Authored-By: binaryify <binaryify@gmail.com>
This commit is contained in:
parent
365450c26e
commit
4f4aa134d5
@ -4,6 +4,7 @@ const createOption = require('../util/option.js')
|
|||||||
module.exports = (query, request) => {
|
module.exports = (query, request) => {
|
||||||
const data = {
|
const data = {
|
||||||
ctcode: query.ctcode || '86',
|
ctcode: query.ctcode || '86',
|
||||||
|
secrete: 'music_middleuser_pclogin',
|
||||||
cellphone: query.phone,
|
cellphone: query.phone,
|
||||||
}
|
}
|
||||||
return request(`/api/sms/captcha/sent`, data, createOption(query, 'weapi'))
|
return request(`/api/sms/captcha/sent`, data, createOption(query, 'weapi'))
|
||||||
|
@ -13,7 +13,7 @@ module.exports = async (query, request) => {
|
|||||||
[query.captcha ? 'captcha' : 'password']: query.captcha
|
[query.captcha ? 'captcha' : 'password']: query.captcha
|
||||||
? query.captcha
|
? query.captcha
|
||||||
: query.md5_password || CryptoJS.MD5(query.password).toString(),
|
: query.md5_password || CryptoJS.MD5(query.password).toString(),
|
||||||
rememberLogin: 'true',
|
remember: 'true',
|
||||||
}
|
}
|
||||||
let result = await request(
|
let result = await request(
|
||||||
`/api/w/login/cellphone`,
|
`/api/w/login/cellphone`,
|
||||||
|
@ -1,9 +1,20 @@
|
|||||||
const QRCode = require('qrcode')
|
const QRCode = require('qrcode')
|
||||||
|
const { generateChainId } = require('../util/index')
|
||||||
|
|
||||||
const createOption = require('../util/option.js')
|
module.exports = (query) => {
|
||||||
module.exports = (query, request) => {
|
|
||||||
return new Promise(async (resolve) => {
|
return new Promise(async (resolve) => {
|
||||||
const url = `https://music.163.com/login?codekey=${query.key}`
|
const platform = query.platform || 'pc'
|
||||||
|
const cookie = query.cookie || ''
|
||||||
|
|
||||||
|
// 构建基础URL
|
||||||
|
let url = `https://music.163.com/login?codekey=${query.key}`
|
||||||
|
|
||||||
|
// 如果是web平台,则添加chainId参数
|
||||||
|
|
||||||
|
if (platform === 'web') {
|
||||||
|
const chainId = generateChainId(cookie)
|
||||||
|
url += `&chainId=${chainId}`
|
||||||
|
}
|
||||||
return resolve({
|
return resolve({
|
||||||
code: 200,
|
code: 200,
|
||||||
status: 200,
|
status: 200,
|
||||||
|
11
module/playlist_category_list.js
Normal file
11
module/playlist_category_list.js
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
// 歌单分类列表
|
||||||
|
|
||||||
|
const createOption = require('../util/option.js')
|
||||||
|
module.exports = (query, request) => {
|
||||||
|
const data = {
|
||||||
|
cat: query.cat || '全部',
|
||||||
|
limit: query.limit || 24,
|
||||||
|
newStyle: true,
|
||||||
|
}
|
||||||
|
return request(`/api/playlist/category/list`, data, createOption(query))
|
||||||
|
}
|
@ -2,5 +2,5 @@
|
|||||||
|
|
||||||
const createOption = require('../util/option.js')
|
const createOption = require('../util/option.js')
|
||||||
module.exports = (query, request) => {
|
module.exports = (query, request) => {
|
||||||
return request(`/api/playlist/catalogue`, {}, createOption(query, 'weapi'))
|
return request(`/api/playlist/catalogue`, {}, createOption(query, 'eapi'))
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,14 @@
|
|||||||
// 收藏与取消收藏歌单
|
// 收藏与取消收藏歌单
|
||||||
|
const { APP_CONF } = require('../util/config.json')
|
||||||
const createOption = require('../util/option.js')
|
const createOption = require('../util/option.js')
|
||||||
module.exports = (query, request) => {
|
module.exports = (query, request) => {
|
||||||
query.t = query.t == 1 ? 'subscribe' : 'unsubscribe'
|
const path = query.t == 1 ? 'subscribe' : 'unsubscribe'
|
||||||
const data = {
|
const data = {
|
||||||
id: query.id,
|
id: query.id,
|
||||||
|
...(query.t === 1
|
||||||
|
? { checkToken: query.checkToken || APP_CONF.checkToken }
|
||||||
|
: {}),
|
||||||
}
|
}
|
||||||
return request(`/api/playlist/${query.t}`, data, createOption(query, 'weapi'))
|
query.checkToken = true // 强制开启checkToken
|
||||||
|
return request(`/api/playlist/${path}`, data, createOption(query, 'eapi'))
|
||||||
}
|
}
|
||||||
|
@ -2,17 +2,13 @@ const CryptoJS = require('crypto-js')
|
|||||||
const path = require('path')
|
const path = require('path')
|
||||||
const fs = require('fs')
|
const fs = require('fs')
|
||||||
const ID_XOR_KEY_1 = '3go8&$8*3*3h0k(2)2'
|
const ID_XOR_KEY_1 = '3go8&$8*3*3h0k(2)2'
|
||||||
const deviceidText = fs.readFileSync(
|
|
||||||
path.resolve(__dirname, '../data/deviceid.txt'),
|
|
||||||
'utf-8',
|
|
||||||
)
|
|
||||||
|
|
||||||
const createOption = require('../util/option.js')
|
const createOption = require('../util/option.js')
|
||||||
const deviceidList = deviceidText.split('\n')
|
const { generateDeviceId } = require('../util/index')
|
||||||
|
|
||||||
function getRandomFromList(list) {
|
// function getRandomFromList(list) {
|
||||||
return list[Math.floor(Math.random() * list.length)]
|
// return list[Math.floor(Math.random() * list.length)]
|
||||||
}
|
// }
|
||||||
function cloudmusic_dll_encode_id(some_id) {
|
function cloudmusic_dll_encode_id(some_id) {
|
||||||
let xoredString = ''
|
let xoredString = ''
|
||||||
for (let i = 0; i < some_id.length; i++) {
|
for (let i = 0; i < some_id.length; i++) {
|
||||||
@ -26,7 +22,8 @@ function cloudmusic_dll_encode_id(some_id) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
module.exports = async (query, request) => {
|
module.exports = async (query, request) => {
|
||||||
const deviceId = getRandomFromList(deviceidList)
|
const deviceId = generateDeviceId()
|
||||||
|
console.log(`[register_anonimous] deviceId: ${deviceId}`)
|
||||||
global.deviceId = deviceId
|
global.deviceId = deviceId
|
||||||
const encodedId = CryptoJS.enc.Base64.stringify(
|
const encodedId = CryptoJS.enc.Base64.stringify(
|
||||||
CryptoJS.enc.Utf8.parse(
|
CryptoJS.enc.Utf8.parse(
|
||||||
|
@ -9,6 +9,7 @@ module.exports = (query, request) => {
|
|||||||
password: CryptoJS.MD5(query.password).toString(),
|
password: CryptoJS.MD5(query.password).toString(),
|
||||||
nickname: query.nickname,
|
nickname: query.nickname,
|
||||||
countrycode: query.countrycode || '86',
|
countrycode: query.countrycode || '86',
|
||||||
|
force: 'false',
|
||||||
}
|
}
|
||||||
return request(`/api/register/cellphone`, data, createOption(query))
|
return request(`/api/w/register/cellphone`, data, createOption(query))
|
||||||
}
|
}
|
||||||
|
6
module/toplist_detail_v2.js
Normal file
6
module/toplist_detail_v2.js
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
// 所有榜单内容摘要v2
|
||||||
|
|
||||||
|
const createOption = require('../util/option.js')
|
||||||
|
module.exports = (query, request) => {
|
||||||
|
return request(`/api/toplist/detail/v2`, {}, createOption(query, 'weapi'))
|
||||||
|
}
|
20
module/user_detail_new.js
Normal file
20
module/user_detail_new.js
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
// 用户详情
|
||||||
|
|
||||||
|
const createOption = require('../util/option.js')
|
||||||
|
module.exports = async (query, request) => {
|
||||||
|
const data = {
|
||||||
|
all: 'true',
|
||||||
|
userId: query.uid,
|
||||||
|
}
|
||||||
|
const res = await request(
|
||||||
|
`/api/w/v1/user/detail/${query.uid}`,
|
||||||
|
data,
|
||||||
|
createOption(query, 'eapi'),
|
||||||
|
)
|
||||||
|
// const result = JSON.stringify(res).replace(
|
||||||
|
// /avatarImgId_str/g,
|
||||||
|
// "avatarImgIdStr"
|
||||||
|
// );
|
||||||
|
// return JSON.parse(result);
|
||||||
|
return res
|
||||||
|
}
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@neteaseapireborn/api",
|
"name": "@neteaseapireborn/api",
|
||||||
"version": "4.28.29",
|
"version": "4.29.0",
|
||||||
"description": "为停更的网易云音乐 NodeJs API 提供持续的维护!",
|
"description": "为停更的网易云音乐 NodeJs API 提供持续的维护!",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "node app.js",
|
"start": "node app.js",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user