108 lines
2.8 KiB
JavaScript
108 lines
2.8 KiB
JavaScript
import { httpGet, cancelHttp } from '../../request'
|
|
import tempSearch from './tempSearch'
|
|
import musicSearch from './musicSearch'
|
|
import { formatSinger, getToken } from './util'
|
|
import leaderboard from './leaderboard'
|
|
import lyric from './lyric'
|
|
import pic from './pic'
|
|
import { apis } from '../api-source'
|
|
import songList from './songList'
|
|
import hotSearch from './hotSearch'
|
|
|
|
const kw = {
|
|
_musicInfoRequestObj: null,
|
|
_musicInfoPromiseCancelFn: null,
|
|
_musicPicRequestObj: null,
|
|
_musicPicPromiseCancelFn: null,
|
|
// context: null,
|
|
|
|
|
|
// init(context) {
|
|
// if (this.isInited) return
|
|
// this.isInited = true
|
|
// this.context = context
|
|
|
|
// // this.musicSearch.search('我又想你了').then(res => {
|
|
// // console.log(res)
|
|
// // })
|
|
|
|
// // this.getMusicUrl('62355680', '320k').then(url => {
|
|
// // console.log(url)
|
|
// // })
|
|
// },
|
|
|
|
tempSearch,
|
|
musicSearch,
|
|
leaderboard,
|
|
songList,
|
|
hotSearch,
|
|
getLyric(songInfo, isGetLyricx) {
|
|
// let singer = songInfo.singer.indexOf('、') > -1 ? songInfo.singer.split('、')[0] : songInfo.singer
|
|
return lyric.getLyric(songInfo.songmid, isGetLyricx)
|
|
},
|
|
handleMusicInfo(songInfo) {
|
|
return this.getMusicInfo(songInfo).then(info => {
|
|
// console.log(JSON.stringify(info))
|
|
songInfo.name = info.name
|
|
songInfo.singer = formatSinger(info.artist)
|
|
songInfo.img = info.pic
|
|
songInfo.albumName = info.album
|
|
return songInfo
|
|
// return Object.assign({}, songInfo, {
|
|
// name: info.name,
|
|
// singer: formatSinger(info.artist),
|
|
// img: info.pic,
|
|
// albumName: info.album,
|
|
// })
|
|
})
|
|
},
|
|
|
|
getMusicUrl(songInfo, type) {
|
|
return apis('kw').getMusicUrl(songInfo, type)
|
|
},
|
|
|
|
getMusicInfo(songInfo) {
|
|
if (this._musicInfoRequestObj != null) {
|
|
cancelHttp(this._musicInfoRequestObj)
|
|
this._musicInfoPromiseCancelFn(new Error('取消http请求'))
|
|
}
|
|
return new Promise((resolve, reject) => {
|
|
this._musicInfoPromiseCancelFn = reject
|
|
this._musicInfoRequestObj = httpGet(`http://www.kuwo.cn/api/www/music/musicInfo?mid=${songInfo.songmid}`, (err, resp, body) => {
|
|
this._musicInfoRequestObj = null
|
|
this._musicInfoPromiseCancelFn = null
|
|
if (err) {
|
|
console.log(err)
|
|
reject(err)
|
|
}
|
|
body.code === 200 ? resolve(body.data) : reject(new Error(body.msg))
|
|
})
|
|
})
|
|
},
|
|
|
|
getMusicUrls(musicInfo, cb) {
|
|
let tasks = []
|
|
let songId = musicInfo.songmid
|
|
musicInfo.types.forEach(type => {
|
|
tasks.push(kw.getMusicUrl(songId, type.type).promise)
|
|
})
|
|
Promise.all(tasks).then(urlInfo => {
|
|
let typeUrl = {}
|
|
urlInfo.forEach(info => {
|
|
typeUrl[info.type] = info.url
|
|
})
|
|
cb(typeUrl)
|
|
})
|
|
},
|
|
|
|
getPic(songInfo) {
|
|
return pic.getPic(songInfo)
|
|
},
|
|
|
|
init() {
|
|
getToken()
|
|
},
|
|
}
|
|
|
|
export default kw
|