Initial commit

Created from https://vercel.com/new
This commit is contained in:
IamFurina
2025-02-22 11:16:58 +00:00
commit 8f9d38529c
435 changed files with 59341 additions and 0 deletions
+9
View File
@@ -0,0 +1,9 @@
// 初始化名字
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
nickname: query.nickname,
}
return request(`/api/activate/initProfile`, data, createOption(query))
}
+27
View File
@@ -0,0 +1,27 @@
// 私人 DJ
// 实际请求参数如下, 部分内容省略, 敏感信息已进行混淆
// 可按需修改此 API 的代码
/* {"extInfo":"{\"lastRequestTimestamp\":1692358373509,\"lbsInfoList\":[{\"lat\":40.23076381,\"lon\":129.07545186,\"time\":1692358543},{\"lat\":40.23076381,\"lon\":129.07545186,\"time\":1692055283}],\"listenedTs\":false,\"noAidjToAidj\":true}","header":"{}"} */
const createOption = require('../util/option.js')
module.exports = (query, request) => {
var extInfo = {}
if (query.latitude != undefined) {
extInfo.lbsInfoList = [
{
lat: query.latitude,
lon: query.longitude,
time: Date.parse(new Date()) / 1000,
},
]
}
extInfo.noAidjToAidj = false
extInfo.lastRequestTimestamp = new Date().getTime()
extInfo.listenedTs = false
const data = {
extInfo: JSON.stringify(extInfo),
}
// console.log(data)
return request(`/api/aidj/content/rcmd/info`, data, createOption(query))
}
+6
View File
@@ -0,0 +1,6 @@
// 专辑内容
const createOption = require('../util/option.js')
module.exports = (query, request) => {
return request(`/api/v1/album/${query.id}`, {}, createOption(query, 'weapi'))
}
+12
View File
@@ -0,0 +1,12 @@
// 数字专辑详情
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
id: query.id,
}
return request(
`/api/vipmall/albumproduct/detail`,
data,
createOption(query, 'weapi'),
)
}
+12
View File
@@ -0,0 +1,12 @@
// 专辑动态信息
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
id: query.id,
}
return request(
`/api/album/detail/dynamic`,
data,
createOption(query, 'weapi'),
)
}
+16
View File
@@ -0,0 +1,16 @@
// 数字专辑-新碟上架
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
limit: query.limit || 30,
offset: query.offset || 0,
total: true,
area: query.area || 'ALL', //ALL:全部,ZH:华语,EA:欧美,KR:韩国,JP:日本
type: query.type,
}
return request(
`/api/vipmall/albumproduct/list`,
data,
createOption(query, 'weapi'),
)
}
+15
View File
@@ -0,0 +1,15 @@
// 数字专辑-语种风格馆
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
limit: query.limit || 10,
offset: query.offset || 0,
total: true,
area: query.area || 'Z_H', //Z_H:华语,E_A:欧美,KR:韩国,JP:日本
}
return request(
`/api/vipmall/appalbum/album/style`,
data,
createOption(query, 'weapi'),
)
}
+11
View File
@@ -0,0 +1,11 @@
// 全部新碟
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
limit: query.limit || 30,
offset: query.offset || 0,
total: true,
area: query.area || 'ALL', //ALL:全部,ZH:华语,EA:欧美,KR:韩国,JP:日本
}
return request(`/api/album/new`, data, createOption(query, 'weapi'))
}
+6
View File
@@ -0,0 +1,6 @@
// 最新专辑
const createOption = require('../util/option.js')
module.exports = (query, request) => {
return request(`/api/discovery/newAlbum`, {}, createOption(query, 'weapi'))
}
+9
View File
@@ -0,0 +1,9 @@
// 获取专辑歌曲的音质
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
id: query.id,
}
return request(`/api/album/privilege`, data, createOption(query))
}
+19
View File
@@ -0,0 +1,19 @@
// 数字专辑&数字单曲-榜单
const createOption = require('../util/option.js')
module.exports = (query, request) => {
let data = {
albumType: query.albumType || 0, //0为数字专辑,1为数字单曲
}
const type = query.type || 'daily' // daily,week,year,total
if (type === 'year') {
data = {
...data,
year: query.year,
}
}
return request(
`/api/feealbum/songsaleboard/${type}/type`,
data,
createOption(query, 'weapi'),
)
}
+10
View File
@@ -0,0 +1,10 @@
// 收藏/取消收藏专辑
const createOption = require('../util/option.js')
module.exports = (query, request) => {
query.t = query.t == 1 ? 'sub' : 'unsub'
const data = {
id: query.id,
}
return request(`/api/album/${query.t}`, data, createOption(query, 'weapi'))
}
+11
View File
@@ -0,0 +1,11 @@
// 已收藏专辑列表
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
limit: query.limit || 25,
offset: query.offset || 0,
total: true,
}
return request(`/api/album/sublist`, data, createOption(query, 'weapi'))
}
+21
View File
@@ -0,0 +1,21 @@
const { cookieToJson } = require('../util/index')
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const uri = query.uri
let data = {}
try {
data =
typeof query.data === 'string' ? JSON.parse(query.data) : query.data || {}
if (typeof data.cookie === 'string') {
data.cookie = cookieToJson(data.cookie)
query.cookie = data.cookie
}
} catch (e) {
data = {}
}
const crypto = query.crypto || ''
const res = request(uri, data, createOption(query, crypto))
return res
}
+15
View File
@@ -0,0 +1,15 @@
// 歌手专辑列表
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
limit: query.limit || 30,
offset: query.offset || 0,
total: true,
}
return request(
`/api/artist/albums/${query.id}`,
data,
createOption(query, 'weapi'),
)
}
+9
View File
@@ -0,0 +1,9 @@
// 歌手介绍
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
id: query.id,
}
return request(`/api/artist/introduction`, data, createOption(query, 'weapi'))
}
+10
View File
@@ -0,0 +1,10 @@
const createOption = require('../util/option.js')
module.exports = (query, request) => {
return request(
`/api/artist/head/info/get`,
{
id: query.id,
},
createOption(query),
)
}
+9
View File
@@ -0,0 +1,9 @@
// 歌手动态信息
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
id: query.id,
}
return request(`/api/artist/detail/dynamic`, data, createOption(query))
}
+11
View File
@@ -0,0 +1,11 @@
// 歌手粉丝
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
id: query.id,
limit: query.limit || 20,
offset: query.offset || 0,
}
return request(`/api/artist/fans/get`, data, createOption(query, 'weapi'))
}
+13
View File
@@ -0,0 +1,13 @@
// 歌手粉丝数量
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
id: query.id,
}
return request(
`/api/artist/follow/count/get`,
data,
createOption(query, 'weapi'),
)
}
+33
View File
@@ -0,0 +1,33 @@
// 歌手分类
/*
type 取值
1:男歌手
2:女歌手
3:乐队
area 取值
-1:全部
7华语
96欧美
8:日本
16韩国
0:其他
initial 取值 a-z/A-Z
*/
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
initial: isNaN(query.initial)
? (query.initial || '').toUpperCase().charCodeAt() || undefined
: query.initial,
offset: query.offset || 0,
limit: query.limit || 30,
total: true,
type: query.type || '1',
area: query.area,
}
return request(`/api/v1/artist/list`, data, createOption(query, 'weapi'))
}
+12
View File
@@ -0,0 +1,12 @@
// 歌手相关MV
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
artistId: query.id,
limit: query.limit,
offset: query.offset,
total: true,
}
return request(`/api/artist/mvs`, data, createOption(query, 'weapi'))
}
+12
View File
@@ -0,0 +1,12 @@
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
limit: query.limit || 20,
startTimestamp: query.before || Date.now(),
}
return request(
`/api/sub/artist/new/works/mv/list`,
data,
createOption(query, 'weapi'),
)
}
+12
View File
@@ -0,0 +1,12 @@
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
limit: query.limit || 20,
startTimestamp: query.before || Date.now(),
}
return request(
`/api/sub/artist/new/works/song/list`,
data,
createOption(query, 'weapi'),
)
}
+12
View File
@@ -0,0 +1,12 @@
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
id: query.id,
private_cloud: 'true',
work_type: 1,
order: query.order || 'hot', //hot,time
offset: query.offset || 0,
limit: query.limit || 100,
}
return request(`/api/v1/artist/songs`, data, createOption(query))
}
+11
View File
@@ -0,0 +1,11 @@
// 收藏与取消收藏歌手
const createOption = require('../util/option.js')
module.exports = (query, request) => {
query.t = query.t == 1 ? 'sub' : 'unsub'
const data = {
artistId: query.id,
artistIds: '[' + query.id + ']',
}
return request(`/api/artist/${query.t}`, data, createOption(query, 'weapi'))
}
+11
View File
@@ -0,0 +1,11 @@
// 关注歌手列表
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
limit: query.limit || 25,
offset: query.offset || 0,
total: true,
}
return request(`/api/artist/sublist`, data, createOption(query, 'weapi'))
}
+8
View File
@@ -0,0 +1,8 @@
// 歌手热门 50 首歌曲
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
id: query.id,
}
return request(`/api/artist/top/song`, data, createOption(query, 'weapi'))
}
+15
View File
@@ -0,0 +1,15 @@
// 歌手相关视频
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
artistId: query.id,
page: JSON.stringify({
size: query.size || 10,
cursor: query.cursor || 0,
}),
tab: 0,
order: query.order || 0,
}
return request(`/api/mlog/artist/video`, data, createOption(query, 'weapi'))
}
+6
View File
@@ -0,0 +1,6 @@
// 歌手单曲
const createOption = require('../util/option.js')
module.exports = (query, request) => {
return request(`/api/v1/artist/${query.id}`, {}, createOption(query, 'weapi'))
}
+19
View File
@@ -0,0 +1,19 @@
const { default: axios } = require('axios')
const createOption = require('../util/option.js')
module.exports = async (query, request) => {
const res = await axios({
method: 'get',
url: `https://interface.music.163.com/api/music/audio/match?sessionId=0123456789abcdef&algorithmCode=shazam_v2&duration=${
query.duration
}&rawdata=${encodeURIComponent(query.audioFP)}&times=1&decrypt=1`,
data: null,
})
return {
status: 200,
body: {
code: 200,
data: res.data.data,
},
}
}
+22
View File
@@ -0,0 +1,22 @@
const uploadPlugin = require('../plugins/upload')
const createOption = require('../util/option.js')
module.exports = async (query, request) => {
const uploadInfo = await uploadPlugin(query, request)
const res = await request(
`/api/user/avatar/upload/v1`,
{
imgid: uploadInfo.imgId,
},
createOption(query),
)
return {
status: 200,
body: {
code: 200,
data: {
...uploadInfo,
...res.body,
},
},
}
}
+16
View File
@@ -0,0 +1,16 @@
// 首页轮播图
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const type =
{
0: 'pc',
1: 'android',
2: 'iphone',
3: 'ipad',
}[query.type || 0] || 'pc'
return request(
`/api/v2/banner/get`,
{ clientType: type },
createOption(query),
)
}
+12
View File
@@ -0,0 +1,12 @@
// 批量请求接口
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {}
Object.keys(query).forEach((i) => {
if (/^\/api\//.test(i)) {
data[i] = query[i]
}
})
return request(`/api/batch`, data, createOption(query))
}
+8
View File
@@ -0,0 +1,8 @@
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
startTime: query.startTime || Date.now(),
endTime: query.endTime || Date.now(),
}
return request(`/api/mcalendar/detail`, data, createOption(query, 'weapi'))
}
+10
View File
@@ -0,0 +1,10 @@
// 发送验证码
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
ctcode: query.ctcode || '86',
cellphone: query.phone,
}
return request(`/api/sms/captcha/sent`, data, createOption(query, 'weapi'))
}
+11
View File
@@ -0,0 +1,11 @@
// 校验验证码
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
ctcode: query.ctcode || '86',
cellphone: query.phone,
captcha: query.captcha,
}
return request(`/api/sms/captcha/verify`, data, createOption(query, 'weapi'))
}
+10
View File
@@ -0,0 +1,10 @@
// 检测手机号码是否已注册
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
cellphone: query.phone,
countrycode: query.countrycode,
}
return request(`/api/cellphone/existence/check`, data, createOption(query))
}
+30
View File
@@ -0,0 +1,30 @@
// 歌曲可用性
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
ids: '[' + parseInt(query.id) + ']',
br: parseInt(query.br || 999000),
}
return request(
`/api/song/enhance/player/url`,
data,
createOption(query, 'weapi'),
).then((response) => {
let playable = false
if (response.body.code == 200) {
if (response.body.data[0].code == 200) {
playable = true
}
}
if (playable) {
response.body = { code: 200, success: true, message: 'ok' }
return response
} else {
// response.status = 404
response.body = { code: 200, success: false, message: '亲爱的,暂无版权' }
return response
// return Promise.reject(response)
}
})
}
+145
View File
@@ -0,0 +1,145 @@
const mm = require('music-metadata')
const uploadPlugin = require('../plugins/songUpload')
const md5 = require('md5')
const createOption = require('../util/option.js')
module.exports = async (query, request) => {
let ext = 'mp3'
// if (query.songFile.name.indexOf('flac') > -1) {
// ext = 'flac'
// }
if (query.songFile.name.includes('.')) {
ext = query.songFile.name.split('.').pop()
}
query.songFile.name = Buffer.from(query.songFile.name, 'latin1').toString(
'utf-8',
)
const filename = query.songFile.name
.replace('.' + ext, '')
.replace(/\s/g, '')
.replace(/\./g, '_')
const bitrate = 999000
if (!query.songFile) {
return Promise.reject({
status: 500,
body: {
msg: '请上传音乐文件',
code: 500,
},
})
}
if (!query.songFile.md5) {
// 命令行上传没有md5和size信息,需要填充
query.songFile.md5 = md5(query.songFile.data)
query.songFile.size = query.songFile.data.byteLength
}
const res = await request(
`/api/cloud/upload/check`,
{
bitrate: String(bitrate),
ext: '',
length: query.songFile.size,
md5: query.songFile.md5,
songId: '0',
version: 1,
},
createOption(query),
)
let artist = ''
let album = ''
let songName = ''
try {
const metadata = await mm.parseBuffer(
query.songFile.data,
query.songFile.mimetype,
)
const info = metadata.common
if (info.title) {
songName = info.title
}
if (info.album) {
album = info.album
}
if (info.artist) {
artist = info.artist
}
// if (metadata.native.ID3v1) {
// metadata.native.ID3v1.forEach((item) => {
// // console.log(item.id, item.value)
// if (item.id === 'title') {
// songName = item.value
// }
// if (item.id === 'artist') {
// artist = item.value
// }
// if (item.id === 'album') {
// album = item.value
// }
// })
// // console.log({
// // songName,
// // album,
// // songName,
// // })
// }
// console.log({
// songName,
// album,
// songName,
// })
} catch (error) {
console.log(error)
}
const tokenRes = await request(
`/api/nos/token/alloc`,
{
bucket: '',
ext: ext,
filename: filename,
local: false,
nos_product: 3,
type: 'audio',
md5: query.songFile.md5,
},
createOption(query),
)
if (res.body.needUpload) {
const uploadInfo = await uploadPlugin(query, request)
// console.log('uploadInfo', uploadInfo.body.result.resourceId)
}
// console.log(tokenRes.body.result)
const res2 = await request(
`/api/upload/cloud/info/v2`,
{
md5: query.songFile.md5,
songid: res.body.songId,
filename: query.songFile.name,
song: songName || filename,
album: album || '未知专辑',
artist: artist || '未知艺术家',
bitrate: String(bitrate),
resourceId: tokenRes.body.result.resourceId,
},
createOption(query),
)
// console.log({ res2, privateCloud: res2.body.privateCloud })
// console.log(res.body.songId, 'songid')
const res3 = await request(
`/api/cloud/pub/v2`,
{
songid: res2.body.songId,
},
createOption(query),
)
// console.log({ res3 })
return {
status: 200,
body: {
...res.body,
...res3.body,
// ...uploadInfo,
},
cookie: res.cookie,
}
}
+39
View File
@@ -0,0 +1,39 @@
// 云盘导入歌曲
const createOption = require('../util/option.js')
module.exports = async (query, request) => {
query.id = query.id || -2
query.artist = query.artist || '未知'
query.album = query.album || '未知'
const checkData = {
uploadType: 0,
songs: JSON.stringify([
{
md5: query.md5,
songId: query.id,
bitrate: query.bitrate,
fileSize: query.fileSize,
},
]),
}
const res = await request(
`/api/cloud/upload/check/v2`,
checkData,
createOption(query),
)
//res.body.data[0].upload 0:文件可导入,1:文件已在云盘,2:不能导入
//只能用song决定云盘文件名,且上传后的文件名后缀固定为mp3
const importData = {
uploadType: 0,
songs: JSON.stringify([
{
songId: res.body.data[0].songId,
bitrate: query.bitrate,
song: query.song,
artist: query.artist,
album: query.album,
fileName: query.song + '.' + query.fileType,
},
]),
}
return request(`/api/cloud/user/song/import`, importData, createOption(query))
}
+13
View File
@@ -0,0 +1,13 @@
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
userId: query.uid,
songId: query.sid,
adjustSongId: query.asid,
}
return request(
`/api/cloud/user/song/match`,
data,
createOption(query, 'weapi'),
)
}
+13
View File
@@ -0,0 +1,13 @@
// 搜索
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
s: query.keywords,
type: query.type || 1, // 1: 单曲, 10: 专辑, 100: 歌手, 1000: 歌单, 1002: 用户, 1004: MV, 1006: 歌词, 1009: 电台, 1014: 视频
limit: query.limit || 30,
offset: query.offset || 0,
total: true,
}
return request(`/api/cloudsearch/pc`, data, createOption(query))
}
+30
View File
@@ -0,0 +1,30 @@
const { resourceTypeMap } = require('../util/config.json')
// 发送与删除评论
const createOption = require('../util/option.js')
module.exports = (query, request) => {
query.t = {
1: 'add',
0: 'delete',
2: 'reply',
}[query.t]
query.type = resourceTypeMap[query.type]
const data = {
threadId: query.type + query.id,
}
if (query.type == 'A_EV_2_') {
data.threadId = query.threadId
}
if (query.t == 'add') data.content = query.content
else if (query.t == 'delete') data.commentId = query.commentId
else if (query.t == 'reply') {
data.commentId = query.commentId
data.content = query.content
}
return request(
`/api/resource/comments/${query.t}`,
data,
createOption(query, 'weapi'),
)
}
+16
View File
@@ -0,0 +1,16 @@
// 专辑评论
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
rid: query.id,
limit: query.limit || 20,
offset: query.offset || 0,
beforeTime: query.before || 0,
}
return request(
`/api/v1/resource/comments/R_AL_3_${query.id}`,
data,
createOption(query, 'weapi'),
)
}
+16
View File
@@ -0,0 +1,16 @@
// 电台评论
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
rid: query.id,
limit: query.limit || 20,
offset: query.offset || 0,
beforeTime: query.before || 0,
}
return request(
`/api/v1/resource/comments/A_DJ_1_${query.id}`,
data,
createOption(query, 'weapi'),
)
}
+15
View File
@@ -0,0 +1,15 @@
// 获取动态评论
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
limit: query.limit || 20,
offset: query.offset || 0,
beforeTime: query.before || 0,
}
return request(
`/api/v1/resource/comments/${query.threadId}`,
data,
createOption(query, 'weapi'),
)
}
+16
View File
@@ -0,0 +1,16 @@
const { resourceTypeMap } = require('../util/config.json')
const createOption = require('../util/option.js')
module.exports = (query, request) => {
query.type = resourceTypeMap[query.type]
const data = {
parentCommentId: query.parentCommentId,
threadId: query.type + query.id,
time: query.time || -1,
limit: query.limit || 20,
}
return request(
`/api/resource/comment/floor/get`,
data,
createOption(query, 'weapi'),
)
}
+18
View File
@@ -0,0 +1,18 @@
const { resourceTypeMap } = require('../util/config.json')
// 热门评论
const createOption = require('../util/option.js')
module.exports = (query, request) => {
query.type = resourceTypeMap[query.type]
const data = {
rid: query.id,
limit: query.limit || 20,
offset: query.offset || 0,
beforeTime: query.before || 0,
}
return request(
`/api/v1/resource/hotcomments/${query.type}${query.id}`,
data,
createOption(query, 'weapi'),
)
}
+20
View File
@@ -0,0 +1,20 @@
const { resourceTypeMap } = require('../util/config.json')
const createOption = require('../util/option.js')
module.exports = (query, request) => {
query.type = resourceTypeMap[query.type || 0]
const threadId = query.type + query.sid
const data = {
targetUserId: query.uid,
commentId: query.cid,
cursor: query.cursor || '-1',
threadId: threadId,
pageNo: query.page || 1,
idCursor: query.idCursor || -1,
pageSize: query.pageSize || 100,
}
return request(
`/api/v2/resource/comments/hug/list`,
data,
createOption(query),
)
}
+20
View File
@@ -0,0 +1,20 @@
const { resourceTypeMap } = require('../util/config.json')
// 点赞与取消点赞评论
const createOption = require('../util/option.js')
module.exports = (query, request) => {
query.t = query.t == 1 ? 'like' : 'unlike'
query.type = resourceTypeMap[query.type]
const data = {
threadId: query.type + query.id,
commentId: query.cid,
}
if (query.type == 'A_EV_2_') {
data.threadId = query.threadId
}
return request(
`/api/v1/comment/${query.t}`,
data,
createOption(query, 'weapi'),
)
}
+16
View File
@@ -0,0 +1,16 @@
// 歌曲评论
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
rid: query.id,
limit: query.limit || 20,
offset: query.offset || 0,
beforeTime: query.before || 0,
}
return request(
`/api/v1/resource/comments/R_SO_4_${query.id}`,
data,
createOption(query, 'weapi'),
)
}
+16
View File
@@ -0,0 +1,16 @@
// MV评论
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
rid: query.id,
limit: query.limit || 20,
offset: query.offset || 0,
beforeTime: query.before || 0,
}
return request(
`/api/v1/resource/comments/R_MV_5_${query.id}`,
data,
createOption(query, 'weapi'),
)
}
+37
View File
@@ -0,0 +1,37 @@
const { resourceTypeMap } = require('../util/config.json')
// 评论
const createOption = require('../util/option.js')
module.exports = (query, request) => {
query.type = resourceTypeMap[query.type]
const threadId = query.type + query.id
const pageSize = query.pageSize || 20
const pageNo = query.pageNo || 1
let sortType = Number(query.sortType) || 99
if (sortType === 1) {
sortType = 99
}
let cursor = ''
switch (sortType) {
case 99:
cursor = (pageNo - 1) * pageSize
break
case 2:
cursor = 'normalHot#' + (pageNo - 1) * pageSize
break
case 3:
cursor = query.cursor || '0'
break
default:
break
}
const data = {
threadId: threadId,
pageNo,
showInner: query.showInner || true,
pageSize,
cursor: cursor,
sortType: sortType, //99:按推荐排序,2:按热度排序,3:按时间排序
}
return request(`/api/v2/resource/comments`, data, createOption(query))
}
+16
View File
@@ -0,0 +1,16 @@
// 歌单评论
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
rid: query.id,
limit: query.limit || 20,
offset: query.offset || 0,
beforeTime: query.before || 0,
}
return request(
`/api/v1/resource/comments/A_PL_0_${query.id}`,
data,
createOption(query, 'weapi'),
)
}
+16
View File
@@ -0,0 +1,16 @@
// 视频评论
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
rid: query.id,
limit: query.limit || 20,
offset: query.offset || 0,
beforeTime: query.before || 0,
}
return request(
`/api/v1/resource/comments/R_VI_62_${query.id}`,
data,
createOption(query, 'weapi'),
)
}
+6
View File
@@ -0,0 +1,6 @@
// 国家编码列表
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {}
return request(`/api/lbs/countries/v1`, data, createOption(query))
}
+6
View File
@@ -0,0 +1,6 @@
// 获取达人用户信息
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {}
return request(`/api/user/creator/authinfo/get`, data, createOption(query))
}
+16
View File
@@ -0,0 +1,16 @@
// 签到
/*
0为安卓端签到 3点经验, 1为网页签到,2点经验
签到成功 {'android': {'point': 3, 'code': 200}, 'web': {'point': 2, 'code': 200}}
重复签到 {'android': {'code': -2, 'msg': '重复签到'}, 'web': {'code': -2, 'msg': '重复签到'}}
未登录 {'android': {'code': 301}, 'web': {'code': 301}}
*/
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
type: query.type || 0,
}
return request(`/api/point/dailyTask`, data, createOption(query))
}
+13
View File
@@ -0,0 +1,13 @@
// 数字专辑详情
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
id: query.id,
}
return request(
`/api/vipmall/albumproduct/detail`,
data,
createOption(query, 'weapi'),
)
}
+22
View File
@@ -0,0 +1,22 @@
// 购买数字专辑
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
business: 'Album',
paymentMethod: query.payment,
digitalResources: JSON.stringify([
{
business: 'Album',
resourceID: query.id,
quantity: query.quantity,
},
]),
from: 'web',
}
return request(
`/api/ordering/web/digital`,
data,
createOption(query, 'weapi'),
)
}
+15
View File
@@ -0,0 +1,15 @@
// 我的数字专辑
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
limit: query.limit || 30,
offset: query.offset || 0,
total: true,
}
return request(
`/api/digitalAlbum/purchased`,
data,
createOption(query, 'weapi'),
)
}
+13
View File
@@ -0,0 +1,13 @@
// 数字专辑销量
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
albumIds: query.ids,
}
return request(
`/api/vipmall/albumproduct/album/query/sales`,
data,
createOption(query, 'weapi'),
)
}
+15
View File
@@ -0,0 +1,15 @@
//电台排行榜获取
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
djRadioId: query.djRadioId || null, // 电台id
sortIndex: query.sortIndex || 1, // 排序 1:播放数 2:点赞数 3:评论数 4:分享数 5:收藏数
dataGapDays: query.dataGapDays || 7, // 天数 7:一周 30:一个月 90:三个月
dataType: query.dataType || 3, // 未知
}
return request(
'/api/expert/worksdata/works/top/get',
data,
createOption(query),
)
}
+6
View File
@@ -0,0 +1,6 @@
// 电台banner
const createOption = require('../util/option.js')
module.exports = (query, request) => {
return request(`/api/djradio/banner/get`, {}, createOption(query, 'weapi'))
}
+10
View File
@@ -0,0 +1,10 @@
// 电台非热门类型
const createOption = require('../util/option.js')
module.exports = (query, request) => {
return request(
`/api/djradio/category/excludehot`,
{},
createOption(query, 'weapi'),
)
}
+10
View File
@@ -0,0 +1,10 @@
// 电台推荐类型
const createOption = require('../util/option.js')
module.exports = (query, request) => {
return request(
`/api/djradio/home/category/recommend`,
{},
createOption(query, 'weapi'),
)
}
+6
View File
@@ -0,0 +1,6 @@
// 电台分类列表
const createOption = require('../util/option.js')
module.exports = (query, request) => {
return request(`/api/djradio/category/get`, {}, createOption(query, 'weapi'))
}
+9
View File
@@ -0,0 +1,9 @@
// 电台详情
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
id: query.rid,
}
return request(`/api/djradio/v2/get`, data, createOption(query, 'weapi'))
}
+10
View File
@@ -0,0 +1,10 @@
// 热门电台
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
limit: query.limit || 30,
offset: query.offset || 0,
}
return request(`/api/djradio/hot/v1`, data, createOption(query, 'weapi'))
}
+15
View File
@@ -0,0 +1,15 @@
// 付费电台
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
limit: query.limit || 30,
offset: query.offset || 0,
_nmclfl: 1,
}
return request(
`/api/djradio/home/paygift/list`,
data,
createOption(query, 'weapi'),
)
}
+12
View File
@@ -0,0 +1,12 @@
// 电台个性推荐
const createOption = require('../util/option.js')
module.exports = (query, request) => {
return request(
`/api/djradio/personalize/rcmd`,
{
limit: query.limit || 6,
},
createOption(query, 'weapi'),
)
}
+12
View File
@@ -0,0 +1,12 @@
// 电台节目列表
const { toBoolean } = require('../util')
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
radioId: query.rid,
limit: query.limit || 30,
offset: query.offset || 0,
asc: toBoolean(query.asc),
}
return request(`/api/dj/program/byradio`, data, createOption(query, 'weapi'))
}
+9
View File
@@ -0,0 +1,9 @@
// 电台节目详情
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
id: query.id,
}
return request(`/api/dj/program/detail`, data, createOption(query, 'weapi'))
}
+10
View File
@@ -0,0 +1,10 @@
// 电台节目榜
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
limit: query.limit || 100,
offset: query.offset || 0,
}
return request(`/api/program/toplist/v1`, data, createOption(query, 'weapi'))
}
+13
View File
@@ -0,0 +1,13 @@
// 电台24小时节目榜
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
limit: query.limit || 100,
// 不支持 offset
}
return request(
`/api/djprogram/toplist/hours`,
data,
createOption(query, 'weapi'),
)
}
+11
View File
@@ -0,0 +1,11 @@
// 类别热门电台
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
cateId: query.cateId,
limit: query.limit || 30,
offset: query.offset || 0,
}
return request(`/api/djradio/hot`, data, createOption(query, 'weapi'))
}
+6
View File
@@ -0,0 +1,6 @@
// 精选电台
const createOption = require('../util/option.js')
module.exports = (query, request) => {
return request(`/api/djradio/recommend/v1`, {}, createOption(query, 'weapi'))
}
+32
View File
@@ -0,0 +1,32 @@
// 精选电台分类
/*
有声书 10001
知识技能 453050
商业财经 453051
人文历史 11
外语世界 13
亲子宝贝 14
创作|翻唱 2001
音乐故事 2
3D|电子 10002
相声曲艺 8
情感调频 3
美文读物 6
脱口秀 5
广播剧 7
二次元 3001
明星做主播 1
娱乐|影视 4
科技科学 453052
校园|教育 4001
旅途|城市 12
*/
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
cateId: query.type,
}
return request(`/api/djradio/recommend`, data, createOption(query, 'weapi'))
}
+10
View File
@@ -0,0 +1,10 @@
// 订阅与取消电台
const createOption = require('../util/option.js')
module.exports = (query, request) => {
query.t = query.t == 1 ? 'sub' : 'unsub'
const data = {
id: query.rid,
}
return request(`/api/djradio/${query.t}`, data, createOption(query, 'weapi'))
}
+11
View File
@@ -0,0 +1,11 @@
// 订阅电台列表
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
limit: query.limit || 30,
offset: query.offset || 0,
total: true,
}
return request(`/api/djradio/get/subed`, data, createOption(query, 'weapi'))
}
+12
View File
@@ -0,0 +1,12 @@
// 电台详情
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
time: query.time || '-1',
id: query.id,
limit: query.limit || '20',
total: 'true',
}
return request(`/api/djradio/subscriber`, data, createOption(query, 'weapi'))
}
+13
View File
@@ -0,0 +1,13 @@
// 电台今日优选
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
page: query.page || 0,
}
return request(
`/api/djradio/home/today/perfered`,
data,
createOption(query, 'weapi'),
)
}
+14
View File
@@ -0,0 +1,14 @@
// 新晋电台榜/热门电台榜
const typeMap = {
new: 0,
hot: 1,
}
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
limit: query.limit || 100,
offset: query.offset || 0,
type: typeMap[query.type || 'new'] || '0', //0为新晋,1为热门
}
return request(`/api/djradio/toplist`, data, createOption(query, 'weapi'))
}
+10
View File
@@ -0,0 +1,10 @@
// 电台24小时主播榜
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
limit: query.limit || 100,
// 不支持 offset
}
return request(`/api/dj/toplist/hours`, data, createOption(query, 'weapi'))
}
+9
View File
@@ -0,0 +1,9 @@
// 电台新人榜
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
limit: query.limit || 100,
offset: query.offset || 0,
}
return request(`/api/dj/toplist/newcomer`, data, createOption(query, 'weapi'))
}
+9
View File
@@ -0,0 +1,9 @@
// 付费精品
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
limit: query.limit || 100,
// 不支持 offset
}
return request(`/api/djradio/toplist/pay`, data, createOption(query, 'weapi'))
}
+10
View File
@@ -0,0 +1,10 @@
// 电台最热主播榜
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
limit: query.limit || 100,
// 不支持 offset
}
return request(`/api/dj/toplist/popular`, data, createOption(query, 'weapi'))
}
+27
View File
@@ -0,0 +1,27 @@
const { eapiResDecrypt, eapiReqDecrypt } = require('../util/crypto')
const createOption = require('../util/option.js')
module.exports = async (query, request) => {
const hexString = query.hexString
const isReq = query.isReq != 'false'
if (!hexString) {
return {
status: 400,
body: {
code: 400,
message: 'hex string is required',
},
}
}
// 去除空格
let pureHexString = hexString.replace(/\s/g, '')
return {
status: 200,
body: {
code: 200,
data: isReq
? eapiReqDecrypt(pureHexString)
: eapiResDecrypt(pureHexString),
},
}
}
+10
View File
@@ -0,0 +1,10 @@
// 获取动态列表
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
pagesize: query.pagesize || 20,
lasttime: query.lasttime || -1,
}
return request(`/api/v1/event/get`, data, createOption(query, 'weapi'))
}
+9
View File
@@ -0,0 +1,9 @@
// 删除动态
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
id: query.evId,
}
return request(`/api/event/delete`, data, createOption(query, 'weapi'))
}
+11
View File
@@ -0,0 +1,11 @@
// 转发动态
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
forwards: query.forwards,
id: query.evId,
eventUserId: query.uid,
}
return request(`/api/event/forward`, data, createOption(query))
}
+6
View File
@@ -0,0 +1,6 @@
// 粉丝年龄比例
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {}
return request(`/api/fanscenter/basicinfo/age/get`, data, createOption(query))
}
+10
View File
@@ -0,0 +1,10 @@
// 粉丝性别比例
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {}
return request(
`/api/fanscenter/basicinfo/gender/get`,
data,
createOption(query),
)
}
@@ -0,0 +1,10 @@
// 粉丝省份比例
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {}
return request(
`/api/fanscenter/basicinfo/province/get`,
data,
createOption(query),
)
}
+6
View File
@@ -0,0 +1,6 @@
// 粉丝数量
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {}
return request(`/api/fanscenter/overview/get`, data, createOption(query))
}
+10
View File
@@ -0,0 +1,10 @@
// 粉丝来源
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
startTime: query.startTime || Date.now() - 7 * 24 * 3600 * 1000,
endTime: query.endTime || Date.now(),
type: query.type || 0, //新增关注:0 新增取关:1
}
return request(`/api/fanscenter/trend/list`, data, createOption(query))
}
+11
View File
@@ -0,0 +1,11 @@
// 垃圾桶
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
songId: query.id,
alg: 'RT',
time: query.time || 25,
}
return request(`/api/radio/trash/add`, data, createOption(query, 'weapi'))
}
+11
View File
@@ -0,0 +1,11 @@
// 关注与取消关注用户
const createOption = require('../util/option.js')
module.exports = (query, request) => {
query.t = query.t == 1 ? 'follow' : 'delfollow'
return request(
`/api/user/${query.t}/${query.id}`,
{},
createOption(query, 'weapi'),
)
}
+7
View File
@@ -0,0 +1,7 @@
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
nicknames: query.nicknames,
}
return request(`/api/user/getUserIds`, data, createOption(query, 'weapi'))
}

Some files were not shown because too many files have changed in this diff Show More