mirror of
https://github.com/NeteaseCloudMusicApiEnhanced/api-enhanced.git
synced 2026-06-27 21:25:08 +00:00
- Implemented new scrobble endpoint for NCBL encrypted logs in `scrobble_v1.js`. - Updated `scrobble.js` to use domain from config. - Enhanced `scrobble.html` with tabbed interface for original and NCBL versions, including new input fields. - Added cookie handling and quick fill functionality for both versions. - Updated `config.json` to include new domain configurations. - Introduced `ncbl.js` for NCBL encryption utilities. - Improved documentation in `home.md` to reflect changes in API usage.
79 lines
1.8 KiB
JavaScript
79 lines
1.8 KiB
JavaScript
// 听歌打卡
|
|
|
|
const createOption = require('../util/option.js')
|
|
const { APP_CONF } = require('../util/config.json')
|
|
const DOMAIN = APP_CONF.clDomian
|
|
module.exports = async (query, request) => {
|
|
// 注入 os=osx 的 cookie
|
|
let cookie = query.cookie || ''
|
|
if (typeof cookie === 'object') {
|
|
cookie = Object.assign({ os: 'osx' }, cookie)
|
|
} else if (typeof cookie === 'string') {
|
|
if (cookie.indexOf('os=') > -1) {
|
|
cookie = cookie.replace(/os=[^;]+/g, 'os=osx')
|
|
} else {
|
|
cookie = cookie + '; os=osx'
|
|
}
|
|
} else {
|
|
cookie = 'os=osx'
|
|
}
|
|
query.cookie = cookie
|
|
|
|
// 1) startplay → 进「最近播放」
|
|
const startplayData = {
|
|
logs: JSON.stringify([
|
|
{
|
|
action: 'startplay',
|
|
json: {
|
|
id: query.id,
|
|
type: 'song',
|
|
mainsite: '1',
|
|
mainsiteWeb: '1',
|
|
content: `id=${query.sourceid}`,
|
|
},
|
|
},
|
|
]),
|
|
}
|
|
|
|
// 2) play → 涨「听歌排行」计数
|
|
const playData = {
|
|
logs: JSON.stringify([
|
|
{
|
|
action: 'play',
|
|
json: {
|
|
download: 0,
|
|
end: 'playend',
|
|
id: query.id,
|
|
sourceId: query.sourceid,
|
|
time: query.time,
|
|
type: 'song',
|
|
wifi: 0,
|
|
source: 'list',
|
|
mainsite: '1',
|
|
mainsiteWeb: '1',
|
|
content: `id=${query.sourceid}`,
|
|
},
|
|
},
|
|
]),
|
|
}
|
|
|
|
const option = createOption(query, 'eapi')
|
|
option.domain = DOMAIN
|
|
|
|
// 发送两次请求
|
|
const res1 = await request(`/api/feedback/weblog`, startplayData, option)
|
|
const res2 = await request(`/api/feedback/weblog`, playData, option)
|
|
|
|
return {
|
|
status: 200,
|
|
body: {
|
|
code: 200,
|
|
data: 'success',
|
|
details: {
|
|
startplay: res1.body,
|
|
play: res2.body,
|
|
},
|
|
},
|
|
}
|
|
}
|