2019.11最新歌手详情页开发

  qq音乐现在获取歌手详情页数据,变得麻烦了许多,之前主需要jsonp就可以获取到数据,但是现在不仅要用后端代理,而且获取每个歌手都对应了一个单独的singer_mid,这意味着点击不同的歌手需要传入对应的singer_mid,从而获取到不同歌手对应的歌单。

歌手详情数据抓取

在这里插入图片描述
  在webpack.dev.conf.js文件中进行后端代理,node后端服务器去请求qq服务器的数据,把数据获取到本地之后,前台在进行axios请求,最终得到数据。

webpack.dev.conf.js:

      // 歌手详情
      			//这里的路径是给前端发送请求的url
      app.get('/api/getSingerDetail', function (req, res) {
        let url = 'https://u.y.qq.com/cgi-bin/musicu.fcg'
        // axios发送get请求,可以自己配置config
        axios.get(url, {
          headers: {
            Referer: 'https://y.qq.com/',
            host: 'u.y.qq.com'
          },
          //  params是即将与请求一起发送的url参数,无格式对象/URLSearchParams对象
          params: req.query,
        }).then((response) => {
          res.json(response.data)//返回数据
        }).catch((error) => {
          console.log(error)
        })
      })

在singer.js中:


// 歌手详情
export function getSingerDetail (singerMid) {
  const url = '/api/getSingerDetail'
  const data = Object.assign({}, commonParams, {
    g_tk: 499021157,
    loginUin: 0,
    hostUin: 0,
    format: 'json',
    platform: 'yqq.json',
    needNewCode: 0,
    data: {'comm': {'ct': 24, 'cv': 0}, 'singerSongList': {'method': 'GetSingerSongList', 'param': {'order': 1, 'singerMid': `${singerMid}`, 'begin': 0, 'num': 10}, 'module': 'musichall.song_list_server'}}
  })
  return axios.get(url, {
    params: data
  }).then((res) => {
    return Promise.resolve(res.data)
  }).catch((error) => {
    console.log(error)
  })
}

其中这里至关重要,要使用模板字符串动态引入
在这里插入图片描述
每个歌手对应不同的singerMid ,这是从qq返回的json数据中知道的

完成

这样点击不同的歌手,就得到了相应的歌单在这里插入图片描述在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值