diff --git a/lib/routes/magnumphotos/magazine.ts b/lib/routes/magnumphotos/magazine.ts new file mode 100644 index 00000000000000..6ca90ef7c8d6fe --- /dev/null +++ b/lib/routes/magnumphotos/magazine.ts @@ -0,0 +1,63 @@ +import { Route } from '@/types'; +import cache from '@/utils/cache'; +import parser from '@/utils/rss-parser'; +import ofetch from '@/utils/ofetch'; +import { load } from 'cheerio'; +const host = 'https://www.magnumphotos.com'; +export const route: Route = { + path: '/magazine', + categories: ['picture'], + example: '/magnumphotos/magazine', + parameters: {}, + features: { + requireConfig: false, + requirePuppeteer: false, + antiCrawler: false, + supportBT: false, + supportPodcast: false, + supportScihub: false, + }, + radar: [ + { + source: ['magnumphotos.com/'], + }, + ], + name: 'Magazine', + maintainers: ['EthanWng97'], + handler, + url: 'magnumphotos.com/', +}; + +async function handler() { + const rssUrl = `${host}/feed/`; + const feed = await parser.parseURL(rssUrl); + const items = await Promise.all( + feed.items.map((item) => + cache.tryGet(item.link, async () => { + if (!item.link) { + return; + } + const data = await ofetch(item.link); + const $ = load(data); + const description = $('#content'); + description.find('ul.share').remove(); + description.find('h1').remove(); + + return { + title: item.title, + pubDate: item.pubDate, + link: item.link, + category: item.categories, + description: description.html(), + }; + }) + ) + ); + + return { + title: 'Magnum Photos', + link: host, + description: 'Magnum is a community of thought, a shared human quality, a curiosity about what is going on in the world, a respect for what is going on and a desire to transcribe it visually', + item: items, + }; +} diff --git a/lib/routes/magnumphotos/namespace.ts b/lib/routes/magnumphotos/namespace.ts new file mode 100644 index 00000000000000..36e2f12075e8f9 --- /dev/null +++ b/lib/routes/magnumphotos/namespace.ts @@ -0,0 +1,6 @@ +import type { Namespace } from '@/types'; + +export const namespace: Namespace = { + name: 'Magnum Photos', + url: 'magnumphotos.com', +};