diff --git a/publish/changeLog.md b/publish/changeLog.md
index 8b5a381e..1a073c23 100644
--- a/publish/changeLog.md
+++ b/publish/changeLog.md
@@ -3,7 +3,6 @@
对于日常使用 LX Music 的人可以试试迁移到 Any Listen,若遇到任何问题可以发 issue 反馈。
Any Listen 的项目地址为 https://github.com/any-listen/any-listen
-### 修复
+### 优化
-- 修复自定义主题编辑器的颜色选择器默认值显示异常的问题(#2957)
-- 修复下载的 MP3 文件内嵌歌曲数据失败的问题(#2959)
+- 优化 tx 推荐歌单列表
diff --git a/src/renderer/utils/musicSdk/tx/songList.js b/src/renderer/utils/musicSdk/tx/songList.js
index f3a09530..a146909e 100644
--- a/src/renderer/utils/musicSdk/tx/songList.js
+++ b/src/renderer/utils/musicSdk/tx/songList.js
@@ -10,9 +10,13 @@ export default {
limit_song: 100000,
successCode: 0,
sortList: [
+ {
+ name: '推荐',
+ id: -1,
+ },
{
name: '最热',
- id: 5,
+ id: 3,
},
{
name: '最新',
@@ -30,10 +34,9 @@ export default {
},
tagsUrl: 'https://u.y.qq.com/cgi-bin/musicu.fcg?loginUin=0&hostUin=0&format=json&inCharset=utf-8&outCharset=utf-8¬ice=0&platform=wk_v15.json&needNewCode=0&data=%7B%22tags%22%3A%7B%22method%22%3A%22get_all_categories%22%2C%22param%22%3A%7B%22qq%22%3A%22%22%7D%2C%22module%22%3A%22playlist.PlaylistAllCategoriesServer%22%7D%7D',
hotTagUrl: 'https://c.y.qq.com/node/pc/wk_v15/category_playlist.html',
- getListUrl(sortId, id, page) {
- if (id) {
- id = parseInt(id)
- return `https://u.y.qq.com/cgi-bin/musicu.fcg?loginUin=0&hostUin=0&format=json&inCharset=utf-8&outCharset=utf-8¬ice=0&platform=wk_v15.json&needNewCode=0&data=${encodeURIComponent(JSON.stringify({
+ getListUrl(id, page) {
+ id = parseInt(id)
+ return `https://u.y.qq.com/cgi-bin/musicu.fcg?loginUin=0&hostUin=0&format=json&inCharset=utf-8&outCharset=utf-8¬ice=0&platform=wk_v15.json&needNewCode=0&data=${encodeURIComponent(JSON.stringify({
comm: { cv: 1602, ct: 20 },
playlist: {
method: 'get_category_content',
@@ -48,15 +51,14 @@ export default {
module: 'playlist.PlayListCategoryServer',
},
}))}`
- }
- return `https://u.y.qq.com/cgi-bin/musicu.fcg?loginUin=0&hostUin=0&format=json&inCharset=utf-8&outCharset=utf-8¬ice=0&platform=wk_v15.json&needNewCode=0&data=${encodeURIComponent(JSON.stringify({
- comm: { cv: 1602, ct: 20 },
- playlist: {
- method: 'get_playlist_by_tag',
- param: { id: 10000000, sin: this.limit_list * (page - 1), size: this.limit_list, order: sortId, cur_page: page },
- module: 'playlist.PlayListPlazaServer',
- },
- }))}`
+ // return `https://u.y.qq.com/cgi-bin/musicu.fcg?loginUin=0&hostUin=0&format=json&inCharset=utf-8&outCharset=utf-8&data=${encodeURIComponent(JSON.stringify({
+ // comm: { cv: 1602, ct: 20 },
+ // playlist: {
+ // method: 'get_playlist_by_tag',
+ // param: { id: 10000000, sin: this.limit_list * (page - 1), size: this.limit_list, order: sortId, cur_page: page },
+ // module: 'playlist.PlayListPlazaServer',
+ // },
+ // }))}`
},
getListDetailUrl(id) {
return `https://c.y.qq.com/qzone/fcg-bin/fcg_ucc_getcdinfo_byids_cp.fcg?type=1&json=1&utf8=1&onlysong=0&new_format=1&disstid=${id}&loginUin=0&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8¬ice=0&platform=yqq.json&needNewCode=0`
@@ -112,41 +114,85 @@ export default {
}))
},
+ async getRecommendList(page) {
+ const { body } = await httpFetch(
+ `https://u.y.qq.com/cgi-bin/musicu.fcg?loginUin=0&hostUin=0&format=json&inCharset=utf-8&outCharset=utf-8¬ice=0&platform=wk_v15.json&needNewCode=0&data=${encodeURIComponent(
+ JSON.stringify({
+ comm: { cv: 1602, ct: 20 },
+ playlist: {
+ module: 'music.playlist.PlaylistSquare',
+ method: 'GetRecommendWhole',
+ param: {
+ IsReqFeed: true,
+ FeedReq: {
+ From: (page - 1) * this.limit_list,
+ Size: this.limit_list,
+ },
+ },
+ },
+ }),
+ )}`,
+ ).promise
+ if (body.code !== this.successCode) throw new Error('tx getRecommendList failed')
+ return {
+ list:
+ body.playlist.data.FeedRsp.List?.map(({ Playlist }) => ({
+ play_count: formatPlayCount(Playlist.basic.play_cnt),
+ id: String(Playlist.basic.tid),
+ author: decodeName(Playlist.basic.creator.nick),
+ name: decodeName(Playlist.basic.title),
+ time: Playlist.basic.modify_time ? dateFormat(Playlist.basic.modify_time * 1000, 'Y-M-D') : '',
+ img: Playlist.basic.cover.medium_url || Playlist.basic.cover.default_url,
+ total: Playlist.basic.song_cnt,
+ desc: decodeName(Playlist.basic.desc).replace(/
/g, '\n'),
+ source: 'tx',
+ })) || [],
+ total: body.playlist.data.FeedRsp.FromLimit,
+ limit: this.limit_list,
+ page,
+ source: 'tx',
+ }
+ },
+
// 获取列表数据
getList(sortId, tagId, page, tryNum = 0) {
if (this._requestObj_list) this._requestObj_list.cancelHttp()
if (tryNum > 2) return Promise.reject(new Error('try max num'))
+ if (!tagId) {
+ if (!tagId && sortId == -1) return this.getRecommendList(page)
+ tagId = sortId
+ }
this._requestObj_list = httpFetch(
- this.getListUrl(sortId, tagId, page),
+ this.getListUrl(tagId, page),
)
// console.log(this.getListUrl(sortId, tagId, page))
return this._requestObj_list.promise.then(({ body }) => {
if (body.code !== this.successCode) return this.getList(sortId, tagId, page, ++tryNum)
- return tagId ? this.filterList2(body.playlist.data, page) : this.filterList(body.playlist.data, page)
+ return this.filterList(body.playlist.data, page)
})
},
- filterList(data, page) {
- return {
- list: data.v_playlist.map(item => ({
- play_count: formatPlayCount(item.access_num),
- id: String(item.tid),
- author: item.creator_info.nick,
- name: item.title,
- time: item.modify_time ? dateFormat(item.modify_time * 1000, 'Y-M-D') : '',
- img: item.cover_url_medium,
- // grade: item.favorcnt / 10,
- total: item.song_ids?.length,
- desc: decodeName(item.desc).replace(/
/g, '\n'),
- source: 'tx',
- })),
- total: data.total,
- page,
- limit: this.limit_list,
- source: 'tx',
- }
- },
- filterList2({ content }, page) {
+ // filterList(data, page) {
+ // return {
+ // list: data.v_playlist.map(item => ({
+ // play_count: formatPlayCount(item.access_num),
+ // id: String(item.tid),
+ // author: item.creator_info.nick,
+ // name: item.title,
+ // time: item.modify_time ? dateFormat(item.modify_time * 1000, 'Y-M-D') : '',
+ // img: item.cover_url_medium,
+ // // grade: item.favorcnt / 10,
+ // total: item.song_ids?.length,
+ // desc: decodeName(item.desc).replace(/
/g, '\n'),
+ // source: 'tx',
+ // })),
+ // total: data.total,
+ // page,
+ // limit: this.limit_list,
+ // source: 'tx',
+ // }
+ // },
+ filterList({ content }, page) {
// console.log(content.v_item)
return {
list: content.v_item.map(({ basic }) => ({