rsshub
Version:
Make RSS Great Again!
35 lines (34 loc) • 1.29 kB
JavaScript
import { t as parseDate } from "./parse-date-Cr0wQjV_.mjs";
import { n as fetchJson, r as getNextBuildId, t as baseUrl } from "./utils-B5WzD6Oc.mjs";
//#region lib/routes/makerworld/user-upload.ts
const route = {
path: "/user/:handle/upload",
categories: ["design"],
example: "/makerworld/user/@Wcad00/upload",
parameters: { handle: "User handle" },
name: "User Uploads",
maintainers: ["TonyRL"],
handler,
radar: [{ source: ["makerworld.com/:lang/:handle/upload", "makerworld.com/:lang/:handle"] }]
};
async function handler(ctx) {
const { handle } = ctx.req.param();
const { userInfo, designs } = (await fetchJson(`${baseUrl}/_next/data/${await getNextBuildId()}/en/${handle}/upload.json`, { handle })).pageProps;
const items = designs.map((d) => ({
title: d.title,
link: `${baseUrl}/en/models/${d.id}-${d.slug}`,
pubDate: parseDate(d.createTime),
author: d.designCreator.name,
category: d.tags,
description: d.instances.map((i) => `<figure><img src="${i.cover}" alt="${d.title}"><figcaption>${i.title}</figcaption></figure>`).join("")
}));
return {
title: `${userInfo.name} | Published - MakerWorld`,
link: `${baseUrl}/en/${handle}/upload`,
description: userInfo.personal.bio,
image: userInfo.avatar,
item: items
};
}
//#endregion
export { route };