UNPKG

rsshub

Version:
59 lines (57 loc) 1.89 kB
import "./config-MQ-7ebJ_.mjs"; import { t as logger_default } from "./logger-C4avouvV.mjs"; import "./proxy-CjvoY5ys.mjs"; import { n as puppeteer_default } from "./puppeteer-9J9JS5H4.mjs"; import { c as parseCompanyPosts, s as parseCompanyName, t as BASE_URL } from "./utils-Clasnm2u.mjs"; import { load } from "cheerio"; //#region lib/routes/linkedin/posts.ts const route = { path: "/company/:company_id/posts", categories: ["social-media"], example: "/linkedin/company/google/posts", parameters: { company_id: "Company's LinkedIn profile ID" }, description: "Get company's LinkedIn posts by company ID", features: { requireConfig: false, requirePuppeteer: true, antiCrawler: false, supportRadar: false, supportBT: false, supportPodcast: false, supportScihub: false }, name: "Company Posts", maintainers: ["saifazmi"], handler: async (ctx) => { const company_id = ctx.req.param("company_id"); const browser = await puppeteer_default(); const page = await browser.newPage(); await page.setRequestInterception(true); page.on("request", (request) => { request.resourceType() === "document" ? request.continue() : request.abort(); }); const url = new URL(`${BASE_URL}/company/${company_id}`); logger_default.http(`Requesting ${url.href}`); await page.goto(url.href, { waitUntil: "domcontentloaded" }); const response = await page.content(); await page.close(); const $ = load(response); const companyName = parseCompanyName($); const posts = parseCompanyPosts($); await browser.close(); return { title: `LinkedIn - ${companyName}'s Posts`, link: url.href, description: `This feed gets ${companyName}'s posts from LinkedIn`, item: posts.map((post) => ({ title: post.text, description: post.text, link: post.link, pubDate: post.date, updated: post.date })) }; } }; //#endregion export { route };