UNPKG

rsshub

Version:
113 lines (110 loc) 3.59 kB
import { t as config } from "./config-C37vj7VH.mjs"; import "./logger-Czu8UMNd.mjs"; import { t as parseDate } from "./parse-date-BrP7mxXf.mjs"; import { t as cache_default } from "./cache-Bo__VnGm.mjs"; import "./proxy-Db7uGcYb.mjs"; import { t as timezone } from "./timezone-D8cuwzTY.mjs"; import { n as puppeteer_default } from "./puppeteer-DGmvuGvT.mjs"; import { load } from "cheerio"; //#region lib/routes/gov/customs/utils.ts const host = "http://www.customs.gov.cn"; const puppeteerGet = async (url, browser) => { const page = await browser.newPage(); await page.setExtraHTTPHeaders({ referer: host }); await page.setRequestInterception(true); page.on("request", (request) => { request.resourceType() === "document" || request.resourceType() === "script" ? request.continue() : request.abort(); }); await page.goto(url, { waitUntil: "domcontentloaded" }); await page.waitForSelector(".pubCon"); return await page.evaluate(() => document.documentElement.innerHTML); }; //#endregion //#region lib/routes/gov/customs/list.ts const route = { path: "/customs/list/:gchannel?", categories: ["government"], example: "/gov/customs/list/paimai", parameters: { gchannel: "支持 `paimai`, `fagui` 及 `latest` 3 个频道,默认为 `paimai`" }, features: { requireConfig: false, requirePuppeteer: true, antiCrawler: true, supportBT: false, supportPodcast: false, supportScihub: false }, radar: [{ source: ["www.customs.gov.cn/"], target: "/customs/list" }], name: "拍卖信息 / 海关法规 / 最新文件", maintainers: [ "Jeason0228", "TonyRL", "he1q" ], handler, url: "www.customs.gov.cn/", description: `::: warning 由于区域限制,建议在国内 IP 的机器上自建 :::` }; async function handler(ctx) { const { gchannel = "paimai" } = ctx.req.param(); let channelName = ""; let link = ""; switch (gchannel) { case "paimai": channelName = "拍卖信息"; link = `${host}/customs/302249/zfxxgk/2799825/2799883/index.html`; break; case "fagui": channelName = "海关法规"; link = `${host}/customs/302249/302266/index.html`; break; case "latest": channelName = "最新文件"; link = `${host}/customs/302249/2480148/index.html`; break; default: channelName = "拍卖信息"; link = `${host}/customs/302249/zfxxgk/2799825/2799883/index.html`; break; } const browser = await puppeteer_default(); const list = await cache_default.tryGet(link, async () => { const $ = load(await puppeteerGet(link, browser)); return $("[class^=\"conList_ul\"] li").toArray().map((item) => { item = $(item); return { title: item.find("a").attr("title"), link: new URL(item.find("a").attr("href"), host).href, date: parseDate(item.find("span").text()) }; }); }, config.cache.routeExpire, false); const out = await Promise.all(list.map((info) => cache_default.tryGet(info.link, async () => { if (info.link.endsWith(".pdf") || info.link.endsWith(".doc")) return info; const $ = load(await puppeteerGet(info.link, browser)); let date; $(".easysite-news-operation").remove(); if (/\d{4}-\d{2}-\d{2} \d{2}:\d{2}/.test($(".easysite-news-describe").text())) date = timezone(parseDate($(".easysite-news-describe").text(), "YYYY-MM-DD HH:mm"), 8); const description = $(".easysite-news-peruse").html(); return { title: info.title, link: info.link, description, pubDate: date || info.date }; }))); await browser.close(); return { title: `中国海关-${channelName}`, link, language: "zh-CN", item: out }; } //#endregion export { route };