Skip to content

Commit

Permalink
feat(route): Add PAIR - AI Exploreables (DIYgod#16786)
Browse files Browse the repository at this point in the history
* Add PAIR - AI Exploreables

* fix: add radar

* fix: maintainers and cache scope

* fix: missing categoies
  • Loading branch information
cesaryuan authored Sep 19, 2024
1 parent 09d311b commit d31b3cf
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 0 deletions.
54 changes: 54 additions & 0 deletions lib/routes/withgoogle/explorables.ts
Original file line number Diff line number Diff line change
@@ -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,
};
},
};
6 changes: 6 additions & 0 deletions lib/routes/withgoogle/namespace.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import type { Namespace } from '@/types';

export const namespace: Namespace = {
name: 'People + AI Research (PAIR)',
url: 'pair.withgoogle.com',
};

0 comments on commit d31b3cf

Please sign in to comment.