UNPKG

rsshub

Version:
99 lines (97 loc) 2.81 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 { load } from "cheerio"; //#region lib/routes/meta/ai-blog.ts const route = { path: "/ai/blog", categories: ["programming"], example: "/meta/ai/blog", name: "AI Blog", maintainers: ["TonyRL"], url: "ai.meta.com/blog/", radar: [{ source: ["ai.meta.com/blog/", "ai.meta.com"] }], handler }; async function handler(ctx) { const limit = Number.parseInt(ctx.req.query("limit") || 12, 10); const link = "https://ai.meta.com/blog/"; const $ = load(await ofetch_default(link, { headers: { "sec-fetch-dest": "document", "sec-fetch-mode": "navigate", "sec-fetch-site": "none", "sec-fetch-user": "?1" } })); const script = $("script:contains(\"DTSGInitialData\"):first").text(); const serverJs = JSON.parse(script.match(/\(new ServerJS\(\)\)\.handle\((\{[\s\S]*?\})\);/)?.[1] || "{}"); const server = { LSD: { token: "" }, SiteData: { haste_session: "", hsi: "", __spin_r: 0, __spin_b: "trunk", __spin_t: Date.now() } }; for (const obj of serverJs.define) { const key = obj[0]; server[key] = obj[2]; } const items = (await ofetch_default("https://ai.meta.com/api/graphql/", { method: "POST", headers: { "content-type": "application/x-www-form-urlencoded", "sec-fetch-dest": "empty", "sec-fetch-mode": "cors", "sec-fetch-site": "same-origin", "x-asbd-id": "359341", "x-fb-friendly-name": "MetaAIBlogRecentPostSearchQuery", "x-fb-lsd": server.LSD.token }, body: new URLSearchParams({ av: "0", __user: "0", __a: "1", __req: "1", dpr: "1", __ccg: "EXCELLENT", __rev: String(server.SiteData.__spin_r || ""), lsd: server.LSD.token, __spin_r: String(server.SiteData.__spin_r || ""), __spin_b: String(server.SiteData.__spin_b || "trunk"), __spin_t: String(server.SiteData.__spin_t || Date.now()), fb_api_caller_class: "RelayModern", fb_api_req_friendly_name: "MetaAIBlogRecentPostSearchQuery", variables: JSON.stringify({ input: { query: "", from: 0, limit, tags: [], excludeObjectIDs: ["27568536916124137"] } }), server_timestamps: "true", doc_id: "9516719638450392" }), parseResponse: JSON.parse })).data.query.map((item) => ({ title: item.title, description: item.description, link: item.href, pubDate: parseDate(item.date), category: [item.research_area], image: item.image })); return { title: $("#pageTitle").text(), description: $("meta[name=\"description\"]").attr("content"), image: $("link[rel=\"icon\"]").attr("href"), link, item: items }; } //#endregion export { route };