diff --git a/docs/social-media.md b/docs/social-media.md
index 2825c43ba..d144b011d 100644
--- a/docs/social-media.md
+++ b/docs/social-media.md
@@ -244,7 +244,13 @@ Tiny Tiny RSS 会给所有 iframe 元素添加 `sandbox="allow-scripts"` 属性
### 会员购新品上架
-
+
+
+| 全部 | 手办 | 魔力赏 | 周边 | 游戏 |
+| ---- | ---- | ------ | ---- | ---- |
+| 0 | 1 | 7 | 3 | 6 |
+
+
### 会员购作品
diff --git a/lib/router.js b/lib/router.js
index 87c681e2c..d38157bb2 100644
--- a/lib/router.js
+++ b/lib/router.js
@@ -64,7 +64,7 @@ router.get('/bilibili/live/search/:key/:order', require('./routes/bilibili/liveS
router.get('/bilibili/live/area/:areaID/:order', require('./routes/bilibili/liveArea'));
router.get('/bilibili/fav/:uid/:fid/:disableEmbed?', require('./routes/bilibili/fav'));
router.get('/bilibili/blackboard', require('./routes/bilibili/blackboard'));
-router.get('/bilibili/mall/new', require('./routes/bilibili/mallNew'));
+router.get('/bilibili/mall/new/:category?', require('./routes/bilibili/mallNew'));
router.get('/bilibili/mall/ip/:id', require('./routes/bilibili/mallIP'));
router.get('/bilibili/ranking/:rid?/:day?/:arc_type?/:disableEmbed?', require('./routes/bilibili/ranking'));
router.get('/bilibili/user/channel/:uid/:cid/:disableEmbed?', require('./routes/bilibili/userChannel'));
diff --git a/lib/routes/bilibili/mallNew.js b/lib/routes/bilibili/mallNew.js
index 1064a70bd..1f0f0ab11 100644
--- a/lib/routes/bilibili/mallNew.js
+++ b/lib/routes/bilibili/mallNew.js
@@ -1,24 +1,27 @@
const got = require('@/utils/got');
module.exports = async (ctx) => {
+ const category = ctx.params.category || 0;
+
const response = await got({
method: 'get',
- url: 'https://mall.bilibili.com/mall-c/home/calendar/list?page=new&startWeekNO=0&limitWeekSize=3',
+ url: `https://mall.bilibili.com/mall-c-search/home/new_items/list?pageNum=1&pageSize=20&version=1.0&cityId=0&cateType=${category}`,
headers: {
- Referer: 'https://mall.bilibili.com/date.html?page=new',
+ Referer: 'https://mall.bilibili.com/newdate.html?noTitleBar=1&page=new&from=new_product&loadingShow=1',
},
});
- const data = response.data.data.vo.weeks;
- const days = [...data[0].days, ...data[1].days];
+ const days = response.data.data.vo.days;
const items = [];
days.forEach((day) => {
items.push(...day.presaleItems);
});
+ const type = response.data.data.vo.cateTabs.find((item) => item.cateType === response.data.data.vo.currentCateType).cateName;
+
ctx.state.data = {
- title: '会员购新品上架',
- link: 'https://mall.bilibili.com/date.html?page=new',
+ title: `会员购新品上架-${type}`,
+ link: 'https://mall.bilibili.com/newdate.html?noTitleBar=1&page=new&from=new_product&loadingShow=1',
item: items.map((item) => ({
title: item.name,
description: `${item.name}
${item.priceDesc ? `${item.pricePrefix}${item.priceSymbol}${item.priceDesc[0]}` : ''}

APP 内打开`,