UNPKG

rsshub

Version:
56 lines (54 loc) 2.36 kB
import { n as init_esm_shims, t as __dirname } from "./esm-shims-CzJ_djXG.mjs"; import { t as config } from "./config-C37vj7VH.mjs"; import { t as parseDate } from "./parse-date-BrP7mxXf.mjs"; import { t as art } from "./render-BQo6B4tL.mjs"; import { t as got_default } from "./got-KxxWdaxq.mjs"; import path from "node:path"; import { load } from "cheerio"; //#region lib/routes/followin/utils.ts init_esm_shims(); const apiUrl = "https://api.followin.io"; const baseUrl = "https://followin.io"; const favicon = `${baseUrl}/favicon.ico`; const getBParam = (lang) => ({ a: "web", b: "", c: lang, d: 0, e: "", f: "", g: "", h: "0.1.0", i: "official" }); const getBuildId = (tryGet) => tryGet("followin:buildId", async () => { const { data: pageResponse } = await got_default(baseUrl); const $ = load(pageResponse); const { buildId } = JSON.parse($("script#__NEXT_DATA__").text()); return buildId; }, config.cache.routeExpire, false); const getGToken = (tryGet) => tryGet("followin:gtoken", async () => { const { data } = await got_default.post(`${apiUrl}/user/gtoken`); return data.data.gtoken; }); const parseList = (list, lang, buildId) => list.map((item) => ({ title: item.translated_title || item.title, description: item.translated_content || item.content, link: `${baseUrl}/${lang === "en" ? "" : `${lang}/`}feed/${item.id}`, pubDate: parseDate(item.publish_time, "x"), category: item.tags.map((tag) => tag.name), author: item.nickname, nextData: `${baseUrl}/_next/data/${buildId}/${lang}/feed/${item.id}.json` })); const parseItem = (item, tryGet) => tryGet(item.link, async () => { const { data } = await got_default(item.nextData); const { queries } = data.pageProps.dehydratedState; const info = queries.find((q) => q.queryKey[0] === "/feed/info").state; const thread = queries.find((q) => q.queryKey[0] === "/feed/thread"); item.description = thread ? art(path.join(__dirname, "templates/thread-1c70519d.art"), { list: thread.state.data.list }) : info.data.translated_full_content || info.data.full_content; item.updated = parseDate(info.dataUpdatedAt, "x"); item.category = [...new Set([...item.category, ...info.data.tags.map((tag) => tag.name)])]; return item; }); //#endregion export { getBuildId as a, parseList as c, getBParam as i, baseUrl as n, getGToken as o, favicon as r, parseItem as s, apiUrl as t };