UNPKG

rsshub

Version:
85 lines (83 loc) 2.77 kB
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 };