feat(route): Add PAIR - AI Exploreables (#16786)
* Add PAIR - AI Exploreables * fix: add radar * fix: maintainers and cache scope * fix: missing categoies
This commit is contained in:
parent
09d311b012
commit
d31b3cffcb
|
|
@ -0,0 +1,54 @@
|
|||
import type { Route, DataItem } from '@/types';
|
||||
import cache from '@/utils/cache';
|
||||
import ofetch from '@/utils/ofetch';
|
||||
import { load } from 'cheerio';
|
||||
|
||||
export const route: Route = {
|
||||
name: 'PAIR - AI Exploreables',
|
||||
url: 'pair.withgoogle.com/explorables',
|
||||
path: '/explorables',
|
||||
maintainers: ['cesaryuan'],
|
||||
example: '/withgoogle/explorables',
|
||||
categories: ['blog'],
|
||||
radar: [
|
||||
{
|
||||
source: ['pair.withgoogle.com/explorables'],
|
||||
target: '',
|
||||
},
|
||||
],
|
||||
handler: async () => {
|
||||
const baseUrl = 'https://pair.withgoogle.com';
|
||||
const response = await ofetch(baseUrl + '/explorables', {
|
||||
method: 'GET',
|
||||
});
|
||||
const $ = load(response);
|
||||
const items = await Promise.all(
|
||||
$('div.explorable-card')
|
||||
.map(async (_, el) => {
|
||||
const title = $(el).find('h3').text();
|
||||
const image = $(el).find('img').attr('src');
|
||||
const link = baseUrl + $(el).find('a').attr('href');
|
||||
return (await cache.tryGet(link, async () => {
|
||||
const response = await ofetch(link);
|
||||
const $item = load(response);
|
||||
let description = $item('body').html();
|
||||
if (!description || description.trim() === '') {
|
||||
description = $('p').text();
|
||||
}
|
||||
return {
|
||||
title,
|
||||
link,
|
||||
description,
|
||||
image,
|
||||
};
|
||||
})) as DataItem;
|
||||
})
|
||||
.toArray()
|
||||
);
|
||||
return {
|
||||
title: 'PAIR - AI Exploreables',
|
||||
link: 'https://pair.withgoogle.com/explorables',
|
||||
item: items,
|
||||
};
|
||||
},
|
||||
};
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
import type { Namespace } from '@/types';
|
||||
|
||||
export const namespace: Namespace = {
|
||||
name: 'People + AI Research (PAIR)',
|
||||
url: 'pair.withgoogle.com',
|
||||
};
|
||||
Loading…
Reference in New Issue