diff --git a/lib/routes/digitalcameraworld/namespace.ts b/lib/routes/digitalcameraworld/namespace.ts new file mode 100644 index 000000000..287b9be9b --- /dev/null +++ b/lib/routes/digitalcameraworld/namespace.ts @@ -0,0 +1,6 @@ +import type { Namespace } from '@/types'; + +export const namespace: Namespace = { + name: 'Digital Camera World', + url: 'digitalcameraworld.com', +}; diff --git a/lib/routes/digitalcameraworld/news.ts b/lib/routes/digitalcameraworld/news.ts new file mode 100644 index 000000000..21ce68e7f --- /dev/null +++ b/lib/routes/digitalcameraworld/news.ts @@ -0,0 +1,61 @@ +import { Route } from '@/types'; +import { load } from 'cheerio'; +import { ofetch } from 'ofetch'; +import { parseDate } from '@/utils/parse-date'; +const host = 'https://www.digitalcameraworld.com'; +export const route: Route = { + path: '/news', + categories: ['new-media'], + example: '/digitalcameraworld/news', + parameters: {}, + features: { + requireConfig: false, + requirePuppeteer: false, + antiCrawler: false, + supportBT: false, + supportPodcast: false, + supportScihub: false, + }, + radar: [ + { + source: ['digitalcameraworld.com/'], + }, + ], + name: 'News', + maintainers: ['EthanWng97'], + handler, +}; + +async function handler() { + const rssUrl = `${host}/feeds.xml`; + + const response = await ofetch(rssUrl); + + const $ = load(response, { + xmlMode: true, + }); + + const items = $('item') + .toArray() + .map((item) => { + item = $(item); + let description = item.find('dc\\:content').text(); + description = $('