UNPKG

rsshub

Version:
47 lines (46 loc) 1.82 kB
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/av01/util.ts const baseUrl = "https://www.av01.media"; const allNames = (named) => [.../* @__PURE__ */ new Set([named.name, ...Object.values(named.name_translations ?? {})])].join(" / "); const resolveId = (endpoint, name) => cache_default.tryGet(`av01:${endpoint}:${name}`, async () => { const { aggregations } = await rofetch(`${baseUrl}/api/v1/videos/search`, { method: "POST", query: { lang: "jp", include_facets: true }, body: { query: name, pagination: { page: 1, limit: 20 } } }); const candidates = aggregations[endpoint === "actress" ? "actresses" : "tags"]; return String((candidates.find((c) => c.name === name) ?? candidates[0]).id); }); const fetchVideos = async (ctx, endpoint, key) => { const id = /^\d+$/.test(key) ? key : await resolveId(endpoint, key); const limit = ctx.req.query("limit") ?? "20"; const response = await rofetch(`${baseUrl}/api/v1/videos/${endpoint}/${id}`, { query: { page: 1, limit } }); return { title: `${response[endpoint].name} - AV01`, link: `${baseUrl}/jp/${endpoint}/${id}`, item: response.videos.map((video) => ({ title: `${video.dvd_id} ${video.title}`, description: [video.description, ...Object.entries(video.description_translations ?? {}).map(([lang, text]) => `${lang}: ${text}`)].join("<br><br>"), link: `${baseUrl}/jp/video/${video.id}/${video.dvd_id.toLowerCase()}`, pubDate: parseDate(video.uploaded_time), author: video.actresses.map((actress) => allNames(actress)).join(", ") || video.maker, category: video.tags.map((tag) => allNames(tag)) })) }; }; //#endregion export { fetchVideos as t };