rsshub
Version:
Make RSS Great Again!
62 lines (57 loc) • 2.21 kB
text/typescript
import { Route } from '@/types';
import ofetch from '@/utils/ofetch';
import { parseDate } from '@/utils/parse-date';
export const route: Route = {
path: '/artistBrandlist/:grpNo/:grpNo2?',
categories: ['shopping'],
example: '/ktown4u/artistBrandlist/234590/1723449',
parameters: { grpNo: 'artist id (Get in url)', grpNo2: 'product category id (Get in url), empty for all categories' },
features: {
requireConfig: false,
requirePuppeteer: false,
antiCrawler: false,
supportBT: false,
supportPodcast: false,
supportScihub: false,
},
radar: [
{
source: [],
target: '/artistBrandlist/:grpNo/:grpNo2',
},
],
name: 'Get the products on sale',
maintainers: ['JamesWDGu'],
handler: async (ctx) => {
const { grpNo, grpNo2 = '' } = ctx.req.param();
const data = await ofetch(`https://cn.ktown4u.com/selectArtistBrandList?cateGrpNo=${grpNo2}¤tPage=1&goodsSearch=newgoods&grpNo=${grpNo}&searchType=ARTIST`, {
method: 'POST',
headers: {
accept: 'application/json, text/plain, */*',
'accept-language': 'en,zh-CN;q=0.9,zh;q=0.8',
},
parseResponse: JSON.parse,
});
const items = data.map((item) => ({
title: item.GOODS_NM,
url: item.IMG_PATH,
link: `https://cn.ktown4u.com/iteminfo?goods_no=${item.GOODS_NO}`,
description: desc(item),
pubDate: parseDate(item.RELEASE_DT),
}));
return {
title: rssTitle(data),
link: `https://cn.ktown4u.com/artistBrandlist?grp_no=${grpNo}&grp_no2=${grpNo2}`,
item: items,
};
},
};
const rssTitle = (data) => `ktown4u ${data[0].GRP_NM}`;
const desc = (item) => {
const saleState = item.SALE_YN === 'N' ? '【售罄】' : '';
let price = `${item.CURR_F_CD}${item.DISP_PRICE}`;
if (item.DISP_PRICE !== item.DISP_DC_PRICE) {
price = `${item.CURR_F_CD}${item.DISP_DC_PRICE} / 原价:${price}`;
}
return `${saleState} ${price} <br> <img src=${item.IMG_PATH}> <br> ${item.GOODS_NM}`;
};