rsshub
Version:
Make RSS Great Again!
85 lines (83 loc) • 2.77 kB
JavaScript
import "./esm-shims-CzJ_djXG.mjs";
import "./config-C37vj7VH.mjs";
import "./dist-BInvbO1W.mjs";
import "./logger-Czu8UMNd.mjs";
import { t as ofetch_default } from "./ofetch-BIyrKU3Y.mjs";
import { t as parseDate } from "./parse-date-BrP7mxXf.mjs";
import { t as timezone } from "./timezone-D8cuwzTY.mjs";
//#region lib/routes/tver/series.ts
const route = {
path: "/series/:id",
categories: ["traditional-media"],
example: "/tver/series/srx2o7o3c8",
parameters: { id: "Series ID (as it appears in URLs). For example, in https://tver.jp/series/srx2o7o3c8, the ID is \"srx2o7o3c8\"." },
radar: [{
source: ["tver.jp/series/:id"],
target: "/series/:id"
}],
name: "Series",
maintainers: ["yuikisaito"],
handler
};
const commonHeaders = {
Accept: "*/*",
"Accept-Language": "ja,en-US;q=0.7,en;q=0.3",
"Cache-Control": "no-cache",
Pragma: "no-cache",
"Sec-GPC": "1",
"Sec-Fetch-Dest": "empty",
"Sec-Fetch-Mode": "cors",
"Sec-Fetch-Site": "same-site"
};
async function handler(ctx) {
const { id } = ctx.req.param();
const { result: browser } = await ofetch_default("https://platform-api.tver.jp/v2/api/platform_users/browser/create", {
method: "POST",
body: "device_type=pc",
headers: {
...commonHeaders,
"Content-Type": "application/x-www-form-urlencoded"
},
referrer: "https://s.tver.jp/",
credentials: "omit",
mode: "cors"
});
const { platform_uid, platform_token } = browser;
const { title, description, broadcastProvider } = await ofetch_default(`https://statics.tver.jp/content/series/${id}.json`, {
method: "GET",
headers: { ...commonHeaders },
referrer: "https://tver.jp/",
credentials: "omit",
mode: "cors"
});
const { result } = await ofetch_default(`https://platform-api.tver.jp/service/api/v1/callSeriesEpisodes/${id}?platform_uid=${platform_uid}&platform_token=${platform_token}`, {
method: "GET",
headers: {
...commonHeaders,
"x-tver-platform-type": "web"
},
referrer: "https://tver.jp/",
credentials: "omit",
mode: "cors"
});
const items = (result.contents?.[0]?.contents ?? []).filter((i) => i.type === "episode").map((i) => {
const parsedPubDate = timezone(parseDate(i.content.broadcastDateLabel.replaceAll(/\(.*?\)|放送分/g, "").trim(), "M月D日"), 9).toDateString();
return {
title: i.content.title,
link: `https://tver.jp/episodes/${i.content.id}`,
image: `https://statics.tver.jp/images/content/thumbnail/episode/xlarge/${i.content.id}.jpg`,
pubDate: parsedPubDate
};
});
return {
title: "TVer - " + title,
description,
author: broadcastProvider.name,
link: `https://tver.jp/series/${id}`,
image: `https://statics.tver.jp/images/content/thumbnail/series/xlarge/${id}.jpg`,
language: "ja",
item: items
};
}
//#endregion
export { route };