rsshub
Version:
Make RSS Great Again!
59 lines (57 loc) • 1.89 kB
JavaScript
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 };