關於qq音樂audio標籤裡src的獲取問題
最近學習黃毅老師的移動端音樂 WebApp時,在使用audio 的url時發現地址已經被禁了,在網上各種找終於找到了解決辦法。
剛開始的時候我是直接使用url,比如類似於這樣
// url: `http://ws.stream.qqmusic.qq.com/C100${musicData.songmid}.m4a?fromtag=0&guid=126548448` // 歌曲地址
但是發現這個url只有極少部分的歌曲可以播放,大部分的歌曲還是gg了
然後我去qq音樂官網看了一下
<audio src="http://dl.stream.qqmusic.qq.com/C400003mAan70zUy5O.m4a?guid=6255522206&vkey=4406ED3CA6EB48D8312EE05B773EBEA3FE17CFD0A6365CCCCADA200473FE031CA3C174725B65C8EEDB122627F43371D405931B972070704B&uin=0&fromtag=3&r=006445306898875014" autoplay="" preload="load"></audio>
發現這裡的url裡多了個vkey,所以關鍵就是怎麼獲取vkey
最終解決方案:
1.在webpack.dev.config.js中配置代理獲取vkey app.get('/api/music', function(req, res) { var url = 'https://c.y.qq.com/base/fcgi-bin/fcg_music_express_mobile3.fcg' axios.get(url, { headers: { referer: 'https://c.y.qq.com/', host: 'c.y.qq.com' }, params: req.query }).then((response) => { res.json(response.data) }).catch((e) => { console.log(e) }) })
然後繼續在api/song.js中配置:
export function getMusic(mid) { const url = '/api/music' const data = Object.assign({}, commonParams, { songmid: mid, filename:'C400' + mid +'.m4a', guid:6442406400, platform:'yqq', loginUin:0, hostUin: 0, needNewCode: 0, g_tk:5381, uin:0, cid:205361747, format: 'json' }) return axios.get(url, { params: data }).then((res) => { return Promise.resolve(res.data) }) }
2. 在有獲取url的地方進行呼叫,比如singer-detail.vue裡:
_normalizeSongs(list) {
let ret = []
list.forEach((item) => {
let {musicData} = item
if (musicData.songid && musicData.albummid) {
getMusic(musicData.songmid).then((res) => { // 這裡需要先獲取vkey
if (res.code === ERR_OK) {
const svkey = res.data.items
const songVkey = svkey[0].vkey
const newSong = createSong(musicData, songVkey) // 在這裡把vkey和musicData傳進去
ret.push(newSong)
}
})
}
})
return ret
}
3.最後在common/js/song.js裡改變一下url:
return new Song({
id: musicData.songid,
mid: musicData.songmid,
singer: filterSinger(musicData.singer),
name: musicData.songname,
album: musicData.albumname,
duration: musicData.interval,
image: `https://y.gtimg.cn/music/photo_new/T002R300x300M000${musicData.albummid}.jpg?max_age=2592000`,
url: `http://dl.stream.qqmusic.qq.com/C400${musicData.songmid}.m4a?vkey=${songVkey}&guid=6442406400&uin=0&fromtag=66`
})
相關文章
- 關於 a 標籤跳轉問題
- 關於a標籤的字型顏色問題
- 關於html的a標籤的target="__blank "的安全漏洞問題HTML
- 獲取標籤全部文字的方式
- 如何使用 metaflac 管理音樂標籤
- vue專案中jsonp跨域獲取qq音樂首頁推薦VueJSON跨域
- 織夢標籤標題關鍵詞描述的調取方法
- ios系統上h5頁面播放audio標籤聲音有延遲問題處理iOSH5
- Tagr for Mac(音樂標籤編輯器)Mac
- QQ音樂音質加密加密
- python爬蟲用bs4獲取標籤中間的文字內容以及標籤裡的屬性Python爬蟲
- 關於音樂品味
- 可視區、標籤寬高的獲取
- Yate for Mac(音樂標籤管理工具)Mac
- python爬取qq音樂歌手排行熱度資料Python
- Music Tag Editor Mac(音樂標籤編輯器)Mac
- vue裡a標籤從後臺獲取連結並實現跳轉Vue
- 模仿qq音樂頁面
- 關於陣列的物件獲取及排序問題/小程式的多層頁面返回問題陣列物件排序
- 10、 在QQ音樂中爬取某首歌曲的歌詞
- 求助帖:關於 python 操作 Word 文件獲取書籤名集合Python
- JavaScript 獲取指定標籤一級子元素JavaScript
- Music Tag Editor Pro Mac(音樂標籤管理軟體)Mac
- 關於施加在 div 標籤上的 ngTemplateOutlet 指令讓 div class 丟失的問題除錯除錯
- 解決img標籤與其它標籤間隙問題?
- 關於二維陣列指標的問題陣列指標
- 關於hexo部落格的note標籤美化Hexo
- 關於語義類標籤的新理解
- 關於 GO 中 flag.StringVar 或者 flag.String 都獲取不到值的問題Go
- jQuery實現高仿QQ音樂jQuery
- 微信小程式-仿QQ音樂微信小程式
- 關於快取命中率的幾個關鍵問題!快取
- **【求助】關於抽樣和標準化的問題**
- 關於th,td,tr的一些相關標籤
- [20211220]關於標量子查詢問題.txt
- 關於element ui input標籤的改造樣式UI
- python中pyquery無法獲取標籤名的dom節點Python
- SpringMVC的資料獲取問題SpringMVC