From f02822e4b64dfe33be0909fa446771795a7553e8 Mon Sep 17 00:00:00 2001 From: Tony Date: Thu, 12 Jun 2025 11:33:35 +0800 Subject: [PATCH] feat(route): add android security bulletins (#19356) --- lib/routes/android/security-bulletin.ts | 61 +++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 lib/routes/android/security-bulletin.ts diff --git a/lib/routes/android/security-bulletin.ts b/lib/routes/android/security-bulletin.ts new file mode 100644 index 0000000000..4f29e7c8ee --- /dev/null +++ b/lib/routes/android/security-bulletin.ts @@ -0,0 +1,61 @@ +import { Route } from '@/types'; +import ofetch from '@/utils/ofetch'; +import { load } from 'cheerio'; +import { parseDate } from '@/utils/parse-date'; +export const route: Route = { + path: '/security-bulletin', + categories: ['program-update'], + example: '/android/security-bulletin', + parameters: {}, + features: { + requireConfig: false, + requirePuppeteer: false, + antiCrawler: false, + supportBT: false, + supportPodcast: false, + supportScihub: false, + }, + radar: [ + { + source: ['source.android.com/docs/security/bulletin', 'source.android.com/docs/security/bulletin/asb-overview', 'source.android.com/'], + }, + ], + name: 'Security Bulletins', + maintainers: ['TonyRL'], + handler, + url: 'source.android.com/docs/security/bulletin/asb-overview', +}; + +async function handler() { + const baseUrl = 'https://source.android.com'; + const link = `${baseUrl}/docs/security/bulletin/asb-overview`; + + const response = await ofetch(link, { + headers: { + Cookie: 'signin=autosignin; cookies_accepted=true; django_language=en;', + }, + }); + + const $ = load(response); + + const items = $('table tr') + .slice(1) + .toArray() + .map((item) => { + const $item = $(item); + const a = $item.find('td:nth-child(1) a'); + return { + title: `Bulletin ${a.text()}`, + description: $item.find('td:nth-child(2)').html(), + link: `${baseUrl}${a.attr('href')}`, + pubDate: parseDate($item.find('td:nth-child(3)').text()), + }; + }); + + return { + title: $('title').text(), + link, + image: $('link[rel="apple-touch-icon"]').attr('href'), + item: items, + }; +}