feat(route): add google jules (#20074)
This commit is contained in:
parent
f0c3a2d452
commit
41f611de8e
|
|
@ -0,0 +1,63 @@
|
|||
import { Route } from '@/types';
|
||||
import ofetch from '@/utils/ofetch';
|
||||
import { load } from 'cheerio';
|
||||
import { parseDate } from '@/utils/parse-date';
|
||||
|
||||
export const route: Route = {
|
||||
path: '/jules/changelog',
|
||||
categories: ['program-update'],
|
||||
example: '/google/jules/changelog',
|
||||
features: {
|
||||
requireConfig: false,
|
||||
requirePuppeteer: false,
|
||||
antiCrawler: false,
|
||||
supportBT: false,
|
||||
supportPodcast: false,
|
||||
supportScihub: false,
|
||||
},
|
||||
name: 'Jules Changelog',
|
||||
url: 'jules.google/docs/changelog/',
|
||||
maintainers: ['johan456789'],
|
||||
handler,
|
||||
};
|
||||
|
||||
async function handler() {
|
||||
const url = 'https://jules.google/docs/changelog/';
|
||||
const html = await ofetch(url);
|
||||
const $ = load(html);
|
||||
|
||||
const items = $('main article')
|
||||
.toArray()
|
||||
.map((el) => {
|
||||
const article = $(el);
|
||||
const h2 = article.find('h2').first();
|
||||
const id = h2.attr('id') || article.attr('id');
|
||||
const title = h2.text().trim();
|
||||
const anchor = id ? `${url}#${id}` : url;
|
||||
// Date appears as a bold text node after h2 (no <time> tag)
|
||||
const pubDateText = h2.nextAll('b').first().text().trim();
|
||||
|
||||
// First image if exists
|
||||
const imgEl = article.find('img').first();
|
||||
const imgSrc = imgEl.attr('src');
|
||||
const image = imgSrc ? new URL(imgSrc, url).href : undefined;
|
||||
|
||||
// Full HTML for the item content
|
||||
article.find('h2').first().remove(); // remove title
|
||||
article.find('b').first().remove(); // remove date
|
||||
|
||||
return {
|
||||
title,
|
||||
description: article.html() || undefined,
|
||||
link: anchor,
|
||||
pubDate: pubDateText ? parseDate(pubDateText) : undefined,
|
||||
image,
|
||||
};
|
||||
});
|
||||
|
||||
return {
|
||||
title: 'Jules Changelog',
|
||||
link: url,
|
||||
item: items,
|
||||
};
|
||||
}
|
||||
Loading…
Reference in New Issue