rsshub
Version:
Make RSS Great Again!
54 lines (53 loc) • 1.62 kB
JavaScript
import "./types-DNj6Etbg.mjs";
import { t as parseDate } from "./parse-date-Cr0wQjV_.mjs";
import { t as utils_default } from "./utils-JKAGWZqQ.mjs";
//#region lib/routes/mi/newproducts.ts
const route = {
path: "/newproducts",
categories: ["shopping"],
example: "/mi/newproducts",
name: "小米上新",
maintainers: ["nuomi1"],
handler,
features: {
requireConfig: false,
requirePuppeteer: false,
antiCrawler: false,
supportRadar: false,
supportBT: false,
supportPodcast: false,
supportScihub: false
},
view: 5
};
const getDetails = async (list) => {
const result = list.map((item) => utils_default.getNewProductItem(item));
const details = await Promise.all(result);
return new Map(details.map((detail) => [detail.product.productId, detail]));
};
const getDataItem = (listItem, detail) => ({
title: listItem.product_name,
description: utils_default.renderNewProduct(listItem, detail),
link: `https://m.mi.com/commodity/detail/${listItem.product_id}`,
image: listItem.img,
pubDate: parseDate(listItem.start_time, "X"),
language: "zh-CN"
});
async function handler() {
const list = await utils_default.getNewProductList();
const details = await getDetails(list);
return {
title: "小米上新",
link: "https://m.mi.com/",
item: list.map((item) => {
const detail = details.get(item.product_id);
if (!detail) throw new Error(`Details not found for product ${item.product_id}`);
return getDataItem(item, detail);
}),
allowEmpty: true,
image: "https://m.mi.com/static/img/icons/apple-touch-icon-152x152.png",
language: "zh-CN"
};
}
//#endregion
export { route };