更新wy评论API

This commit is contained in:
Folltoshe 2023-04-22 16:18:29 +08:00
parent bd44ae9f61
commit e121bb7fa8
3 changed files with 32 additions and 24 deletions

View File

@ -12,5 +12,6 @@
], ],
"i18n-ally.sortKeys": true, "i18n-ally.sortKeys": true,
"javascript.preferences.importModuleSpecifier": "non-relative", "javascript.preferences.importModuleSpecifier": "non-relative",
"typescript.tsdk": "node_modules/typescript/lib" "typescript.tsdk": "node_modules/typescript/lib",
"vue.features.codeActions.enable": false
} }

View File

@ -413,7 +413,7 @@ export default {
switch (codeInfo.type) { switch (codeInfo.type) {
case 2: case 2:
if (!codeInfo.global_collection_id) return this.getListDetailBySpecialId(codeInfo.id, page) if (!codeInfo.global_collection_id) return this.getUserListDetailBySpecialId(codeInfo.id, page)
break break
case 3: case 3:
return this.getListDetailByAlbumId(codeInfo.id, page) return this.getListDetailByAlbumId(codeInfo.id, page)
@ -452,7 +452,7 @@ export default {
* @param {*} id * @param {*} id
* @param {*} page * @param {*} page
*/ */
async getListDetailBySpecialId(id, page = 1) { async getUserListDetailBySpecialId(id, page = 1) {
const globalSpecialId = await this.getCollectionIdBySpecialId(id) const globalSpecialId = await this.getCollectionIdBySpecialId(id)
return this.getUserListDetailByCollectionId(globalSpecialId, page) return this.getUserListDetailByCollectionId(globalSpecialId, page)
}, },
@ -746,9 +746,10 @@ export default {
// fix https://www.kugou.com/songlist/xxx/?uid=xxx&chl=qq_client&cover=http%3A%2F%2Fimge.kugou.com%xxx.jpg&iszlist=1 // fix https://www.kugou.com/songlist/xxx/?uid=xxx&chl=qq_client&cover=http%3A%2F%2Fimge.kugou.com%xxx.jpg&iszlist=1
if (/https?:/.test(id)) return this.getUserListDetail(id.replace(/^.*?http/, 'http'), page) if (/https?:/.test(id)) return this.getUserListDetail(id.replace(/^.*?http/, 'http'), page)
if (/^\d+$/.test(id)) return this.getUserListDetailByCode(id, page) if (/^\d+$/.test(id)) return this.getUserListDetailByCode(id, page)
if (id.startsWith('id_')) id = id.replace('id_', '') if (id.startsWith('gid_')) return this.getUserListDetailByCollectionId(id.replace('gid_', ''), page)
if (id.startsWith('id_')) return this.getUserListDetailBySpecialId(id.replace('id_', ''), page)
return this.getUserListDetailByCollectionId(id, page) return new Error('Failed.')
}, },
filterData(rawList) { filterData(rawList) {
@ -939,7 +940,7 @@ export default {
list: body.lists.map(item => { list: body.lists.map(item => {
return { return {
play_count: this.formatPlayCount(item.total_play_count), play_count: this.formatPlayCount(item.total_play_count),
id: 'id_' + item.gid, id: item.gid ? `gid_${item.gid}` : `id_${item.specialid}`,
author: item.nickname, author: item.nickname,
name: item.specialname, name: item.specialname,
time: dateFormat(item.publish_time, 'Y-M-D'), time: dateFormat(item.publish_time, 'Y-M-D'),

View File

@ -2,6 +2,7 @@ import { httpFetch } from '../../request'
import { weapi } from './utils/crypto' import { weapi } from './utils/crypto'
import { dateFormat2 } from '../../index' import { dateFormat2 } from '../../index'
const idPrefix = 'R_SO_4_'
const emojis = [ const emojis = [
['大笑', '😃'], ['大笑', '😃'],
['可爱', '😊'], ['可爱', '😊'],
@ -118,14 +119,12 @@ export default {
_requestObj: null, _requestObj: null,
_requestObj2: null, _requestObj2: null,
async getComment({ songmid }, page = 1, limit = 20) { async getComment({ songmid }, page = 1, limit = 20) {
if (this._requestObj) this._requestObj.cancelHttp()
const id = 'R_SO_4_' + songmid const id = 'R_SO_4_' + songmid
const cursorInfo = cursorTools.getCursor(songmid, page, limit) const cursorInfo = cursorTools.getCursor(songmid, page, limit)
if (this._requestObj) this._requestObj.cancelHttp()
const _requestObj = httpFetch('https://music.163.com/weapi/comment/resource/comments/get', { const _requestObj = httpFetch('https://music.163.com/weapi/comment/resource/comments/get', {
method: 'post', method: 'POST',
headers: { headers: {
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36', 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36',
origin: 'https://music.163.com', origin: 'https://music.163.com',
@ -144,36 +143,43 @@ export default {
const { body, statusCode } = await _requestObj.promise const { body, statusCode } = await _requestObj.promise
// console.log(body) // console.log(body)
if (statusCode != 200 || body.code !== 200) throw new Error('获取评论失败') if (statusCode != 200 || body.code !== 200) throw new Error('获取评论失败')
cursorTools.setCursor(songmid, body.data.cursor, cursorInfo.orderType, cursorInfo.offset, page) cursorTools.setCursor(songmid, body.data.cursor, cursorInfo.orderType, cursorInfo.offset, page)
return { source: 'wy', comments: this.filterComment(body.data.comments), total: body.data.totalCount, page, limit, maxPage: Math.ceil(body.data.totalCount / limit) || 1 } return { source: 'wy', comments: this.filterComment(body.data.comments), total: body.data.totalCount, page, limit, maxPage: Math.ceil(body.data.totalCount / limit) || 1 }
}, },
async getHotComment({ songmid }, page = 1, limit = 100) { async getHotComment({ songmid }, page = 1, limit = 10) {
// 这个API每次最多获取10个
if (limit > 10) limit = 10
const id = idPrefix + songmid
if (this._requestObj2) this._requestObj2.cancelHttp() if (this._requestObj2) this._requestObj2.cancelHttp()
const _requestObj2 = httpFetch(`https://music.163.com/weapi/v1/resource/hotcomments/${id}`, {
const id = 'R_SO_4_' + songmid method: 'POST',
const _requestObj2 = httpFetch('https://music.163.com/weapi/comment/resource/comments/get', {
method: 'post',
headers: { headers: {
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36', 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36',
origin: 'https://music.163.com', origin: 'https://music.163.com',
Refere: 'http://music.163.com/', Refere: 'http://music.163.com/',
}, },
form: weapi({ form: weapi({
cursor: Date.now().toString(),
offset: 0,
orderType: 1,
pageNo: page,
pageSize: limit,
rid: id, rid: id,
threadId: id, beforeTime: Date.now().toString(),
offset: page === 1 ? 0 : (page - 1) * limit,
pageSize: limit,
}), }),
}) })
const { body, statusCode } = await _requestObj2.promise const { body, statusCode } = await _requestObj2.promise
if (statusCode != 200 || body.code !== 200) throw new Error('获取热门评论失败') if (statusCode != 200 || body.code !== 200) throw new Error('获取热门评论失败')
// console.log(body) // console.log(body)
const total = body.data.hotComments?.length ?? 0
return { source: 'wy', comments: this.filterComment(body.data.hotComments), total, page, limit, maxPage: 1 } return {
source: 'wy',
comments: this.filterComment(body.hotComments),
total: body.total,
page,
limit,
maxPage: Math.ceil(body.total / limit) || 1,
}
}, },
filterComment(rawList) { filterComment(rawList) {
return rawList.map(item => { return rawList.map(item => {