diff --git a/README.MD b/README.MD
index f17ea49..9655a57 100644
--- a/README.MD
+++ b/README.MD
@@ -435,6 +435,18 @@ banner({ type: 0 }).then((res) => {
289. 歌曲是否喜爱
290. 用户是否互相关注
291. 歌曲动态封面
+292. 用户徽章
+293. 用户状态
+294. 用户状态 - 支持设置的状态
+295. 用户状态 - 相同状态的用户
+296. 用户状态 - 编辑
+297. 听歌足迹 - 年度听歌足迹
+298. 听歌足迹 - 今日收听
+299. 听歌足迹 - 总收听时长
+300. 听歌足迹 - 本周/本月收听时长
+301. 听歌足迹 - 周/月/年收听报告
+302. 歌单导入 - 元数据/文字/链接导入
+303. 歌单导入 - 任务状态
## 单元测试
diff --git a/module/listen_data_realtime_report.js b/module/listen_data_realtime_report.js
new file mode 100644
index 0000000..e415ca9
--- /dev/null
+++ b/module/listen_data_realtime_report.js
@@ -0,0 +1,11 @@
+// 听歌足迹 - 本周/本月收听时长
+const createOption = require('../util/option.js')
+module.exports = (query, request) => {
+ return request(
+ `/api/content/activity/listen/data/realtime/report`,
+ {
+ type: query.type || 'week', //周 week 月 month
+ },
+ createOption(query),
+ )
+}
diff --git a/module/listen_data_report.js b/module/listen_data_report.js
new file mode 100644
index 0000000..21aef52
--- /dev/null
+++ b/module/listen_data_report.js
@@ -0,0 +1,12 @@
+// 听歌足迹 - 周/月/年收听报告
+const createOption = require('../util/option.js')
+module.exports = (query, request) => {
+ return request(
+ `/api/content/activity/listen/data/report`,
+ {
+ type: query.type || 'week', //周 week 月 month 年 year
+ endTime: query.endTime, // 不填就是本周/月的
+ },
+ createOption(query),
+ )
+}
diff --git a/module/listen_data_today_song.js b/module/listen_data_today_song.js
new file mode 100644
index 0000000..9c2f7e6
--- /dev/null
+++ b/module/listen_data_today_song.js
@@ -0,0 +1,9 @@
+// 听歌足迹 - 今日收听
+const createOption = require('../util/option.js')
+module.exports = (query, request) => {
+ return request(
+ `/api/content/activity/listen/data/today/song/play/rank`,
+ {},
+ createOption(query),
+ )
+}
diff --git a/module/listen_data_total.js b/module/listen_data_total.js
new file mode 100644
index 0000000..83472ba
--- /dev/null
+++ b/module/listen_data_total.js
@@ -0,0 +1,9 @@
+// 听歌足迹 - 总收听时长
+const createOption = require('../util/option.js')
+module.exports = (query, request) => {
+ return request(
+ `/api/content/activity/listen/data/total`,
+ {},
+ createOption(query),
+ )
+}
diff --git a/module/listen_data_year_report.js b/module/listen_data_year_report.js
new file mode 100644
index 0000000..ba32cb9
--- /dev/null
+++ b/module/listen_data_year_report.js
@@ -0,0 +1,9 @@
+// 听歌足迹 - 年度听歌足迹
+const createOption = require('../util/option.js')
+module.exports = (query, request) => {
+ return request(
+ `/api/content/activity/listen/data/year/report`,
+ {},
+ createOption(query),
+ )
+}
diff --git a/module/playlist_import_name_task_create.js b/module/playlist_import_name_task_create.js
new file mode 100644
index 0000000..5554a82
--- /dev/null
+++ b/module/playlist_import_name_task_create.js
@@ -0,0 +1,62 @@
+// 歌单导入 - 元数据/文字/链接导入
+const createOption = require('../util/option.js')
+module.exports = (query, request) => {
+ let data = {
+ importStarPlaylist: query.importStarPlaylist || false, // 导入我喜欢的音乐
+ }
+
+ if (query.local) {
+ // 元数据导入
+ let local = JSON.parse(query.local)
+ let multiSongs = JSON.stringify(
+ local.map(function (e) {
+ return {
+ songName: e.name,
+ artistName: e.artist,
+ albumName: e.album,
+ }
+ }),
+ )
+ data = {
+ ...data,
+ multiSongs: multiSongs,
+ }
+ } else {
+ let playlistName = // 歌单名称
+ query.playlistName || '导入音乐 '.concat(new Date().toLocaleString())
+ let songs = ''
+ if (query.text) {
+ // 文字导入
+ songs = JSON.stringify([
+ {
+ name: playlistName,
+ type: '',
+ url: encodeURI('rpc://playlist/import?text='.concat(query.text)),
+ },
+ ])
+ }
+
+ if (query.link) {
+ // 链接导入
+ let link = JSON.parse(query.link)
+ songs = JSON.stringify(
+ link.map(function (e) {
+ return { name: playlistName, type: '', url: encodeURI(e) }
+ }),
+ )
+ }
+ data = {
+ ...data,
+ playlistName: playlistName,
+ createBusinessCode: undefined,
+ extParam: undefined,
+ taskIdForLog: '',
+ songs: songs,
+ }
+ }
+ return request(
+ `/api/playlist/import/name/task/create`,
+ data,
+ createOption(query),
+ )
+}
diff --git a/module/playlist_import_task_status.js b/module/playlist_import_task_status.js
new file mode 100644
index 0000000..50fbe6b
--- /dev/null
+++ b/module/playlist_import_task_status.js
@@ -0,0 +1,11 @@
+// 歌单导入 - 任务状态
+const createOption = require('../util/option.js')
+module.exports = (query, request) => {
+ return request(
+ `/api/playlist/import/task/status/v2`,
+ {
+ taskIds: JSON.stringify([query.id]),
+ },
+ createOption(query),
+ )
+}
diff --git a/module/user_medal.js b/module/user_medal.js
new file mode 100644
index 0000000..f9509f1
--- /dev/null
+++ b/module/user_medal.js
@@ -0,0 +1,11 @@
+// 用户徽章
+const createOption = require('../util/option.js')
+module.exports = (query, request) => {
+ return request(
+ `/api/medal/user/page`,
+ {
+ uid: query.uid,
+ },
+ createOption(query),
+ )
+}
diff --git a/module/user_social_status.js b/module/user_social_status.js
new file mode 100644
index 0000000..97a929b
--- /dev/null
+++ b/module/user_social_status.js
@@ -0,0 +1,11 @@
+// 用户状态
+const createOption = require('../util/option.js')
+module.exports = (query, request) => {
+ return request(
+ `/api/social/user/status`,
+ {
+ visitorId: query.uid,
+ },
+ createOption(query),
+ )
+}
diff --git a/module/user_social_status_edit.js b/module/user_social_status_edit.js
new file mode 100644
index 0000000..4e53b82
--- /dev/null
+++ b/module/user_social_status_edit.js
@@ -0,0 +1,16 @@
+// 用户状态 - 编辑
+const createOption = require('../util/option.js')
+module.exports = (query, request) => {
+ return request(
+ `/api/social/user/status/edit`,
+ {
+ content: JSON.stringify({
+ type: query.type,
+ iconUrl: query.iconUrl,
+ content: query.content,
+ actionUrl: query.actionUrl,
+ }),
+ },
+ createOption(query),
+ )
+}
diff --git a/module/user_social_status_rcmd.js b/module/user_social_status_rcmd.js
new file mode 100644
index 0000000..a3b7b38
--- /dev/null
+++ b/module/user_social_status_rcmd.js
@@ -0,0 +1,5 @@
+// 用户状态 - 相同状态的用户
+const createOption = require('../util/option.js')
+module.exports = (query, request) => {
+ return request(`/api/social/user/status/rcmd`, {}, createOption(query))
+}
diff --git a/module/user_social_status_support.js b/module/user_social_status_support.js
new file mode 100644
index 0000000..1b688e8
--- /dev/null
+++ b/module/user_social_status_support.js
@@ -0,0 +1,5 @@
+// 用户状态 - 支持设置的状态
+const createOption = require('../util/option.js')
+module.exports = (query, request) => {
+ return request(`/api/social/user/status/support`, {}, createOption(query))
+}
diff --git a/public/api.html b/public/api.html
index 0912882..ee0c9d5 100644
--- a/public/api.html
+++ b/public/api.html
@@ -97,7 +97,7 @@
-
+
-
+
+
-
+
+
+
+