rsshub
Version:
Make RSS Great Again!
46 lines (45 loc) • 1.64 kB
JavaScript
import { t as rofetch } from "./ofetch-W1aeTHCo.mjs";
import { t as parseDate } from "./parse-date-CjhZE69i.mjs";
import { t as cache_default } from "./cache-CiDoUSLo.mjs";
//#region lib/routes/missevan/drama.ts
const route = {
path: "/drama/:id",
categories: ["multimedia"],
example: "/missevan/drama/43922",
parameters: { id: "剧集 id,在剧集主页 URL 中可以找到" },
name: "广播剧",
maintainers: ["FlashWingShadow"],
handler
};
const host = "www.missevan.com";
async function handler(ctx) {
const { id } = ctx.req.param();
const dramaResp = await rofetch(`https://${host}/dramaapi/getdrama?drama_id=${id}`);
const items = await Promise.all(dramaResp.info.episodes.episode.map((item) => {
const soundUrl = `https://www.missevan.com/sound/getsound?soundid=${item.sound_id}`;
return cache_default.tryGet(soundUrl, async () => {
const soundData = (await rofetch(soundUrl)).info.sound;
return {
title: item.name,
enclosure_url: soundData.soundurl,
itunes_duration: Math.trunc(soundData.duration / 1e3),
enclosure_type: "audio/mpeg",
image: dramaResp.info.drama.cover,
itunes_author: soundData.username,
itunes_category: "",
link: `https://www.missevan.com/sound/player?id=${item.sound_id}`,
description: `<img src=${dramaResp.info.drama.cover}><br>${soundData.intro}`,
pubDate: parseDate(soundData.last_update_time * 1e3)
};
});
}));
return {
title: dramaResp.info.drama.name,
link: `https://${host}/mdrama/drama/${id}`,
image: dramaResp.info.drama.cover,
description: dramaResp.info.drama.abstract,
item: items
};
}
//#endregion
export { route };