diff --git a/docs/en/new-media.md b/docs/en/new-media.md index 75e17d9530..62f442bb76 100644 --- a/docs/en/new-media.md +++ b/docs/en/new-media.md @@ -163,6 +163,46 @@ Compared to the official one, the RSS feed generated by RSSHub not only has more +## Europa Press + +### Category + + + +| España | Internacional | Economía | Deportes | +| -------- | ------------- | -------- | -------- | +| nacional | internacional | economía | deportes | + +| Cultura | Sociedad | Ciencia | Salud | +| ------- | -------- | ------- | ----- | +| cultura | sociedad | ciencia | salud | + +| Tecnología | Comunicados | Estar donde estés | +| ---------- | ----------- | ----------------- | +| tecnología | comunicados | estar-donde-estes | + +| Andalucía | Aragón | Cantabria | Castilla-La Mancha | +| --------- | ------ | --------- | ------------------ | +| andalucia | aragon | cantabria | castilla-lamancha | + +| Castilla y León | Cataluña | Extremadura | Galicia | +| --------------- | --------- | ----------- | ------- | +| castilla-y-leon | catalunya | extremadura | galicia | + +| Islas Canarias | Islas Baleares | Madrid | País Vasco | +| -------------- | -------------- | ------ | ---------- | +| islas-canarias | illes-balears | madrid | euskadi | + +| La Rioja | C. Valenciana | Navarra | Asturias | +| -------- | -------------------- | ------- | -------- | +| la-rioja | comunitat-valenciana | navarra | asturias | + +| Murcia | Ceuta y Melilla | +| ------ | --------------- | +| murcia | ceuta-y-melilla | + + + ## ezone.hk ### Category diff --git a/docs/new-media.md b/docs/new-media.md index 3d9468cdb5..517266e360 100644 --- a/docs/new-media.md +++ b/docs/new-media.md @@ -224,6 +224,46 @@ pageClass: routes +## Europa Press + +### 分类 + + + +| España | Internacional | Economía | Deportes | +| -------- | ------------- | -------- | -------- | +| nacional | internacional | economía | deportes | + +| Cultura | Sociedad | Ciencia | Salud | +| ------- | -------- | ------- | ----- | +| cultura | sociedad | ciencia | salud | + +| Tecnología | Comunicados | Estar donde estés | +| ---------- | ----------- | ----------------- | +| tecnología | comunicados | estar-donde-estes | + +| Andalucía | Aragón | Cantabria | Castilla-La Mancha | +| --------- | ------ | --------- | ------------------ | +| andalucia | aragon | cantabria | castilla-lamancha | + +| Castilla y León | Cataluña | Extremadura | Galicia | +| --------------- | --------- | ----------- | ------- | +| castilla-y-leon | catalunya | extremadura | galicia | + +| Islas Canarias | Islas Baleares | Madrid | País Vasco | +| -------------- | -------------- | ------ | ---------- | +| islas-canarias | illes-balears | madrid | euskadi | + +| La Rioja | C. Valenciana | Navarra | Asturias | +| -------- | -------------------- | ------- | -------- | +| la-rioja | comunitat-valenciana | navarra | asturias | + +| Murcia | Ceuta y Melilla | +| ------ | --------------- | +| murcia | ceuta-y-melilla | + + + ## ezone.hk ### 分类 diff --git a/lib/router.js b/lib/router.js index dae6604b7a..211d20bc3b 100644 --- a/lib/router.js +++ b/lib/router.js @@ -4158,6 +4158,8 @@ router.get('/tanchinese/:category?', require('./routes/tanchinese')); // Harvard router.get('/harvard/health/blog', require('./routes/universities/harvard/health/blog')); +// Europa Press +router.get('/europapress/:category?', require('./routes/europapress')); // World Happiness Report router.get('/worldhappiness/blog', require('./routes/worldhappiness/blog')); router.get('/worldhappiness/archive', require('./routes/worldhappiness/archive')); diff --git a/lib/routes/europapress/index.js b/lib/routes/europapress/index.js new file mode 100644 index 0000000000..fd4e52f10c --- /dev/null +++ b/lib/routes/europapress/index.js @@ -0,0 +1,53 @@ +const got = require('@/utils/got'); +const cheerio = require('cheerio'); +const { parseDate } = require('@/utils/parse-date'); + +module.exports = async (ctx) => { + const category = ctx.params.category || ''; + + const rootUrl = 'https://www.europapress.es'; + const currentUrl = `${rootUrl}${category ? `/${category}` : ''}`; + + const response = await got({ + method: 'get', + url: currentUrl, + }); + + const $ = cheerio.load(response.data); + + const list = $('.articulo-titulo, .c-item__title, .home-articulo-titulo') + .find('a') + .map((_, item) => { + item = $(item); + + return { + title: item.text(), + link: item.attr('href'), + }; + }) + .get(); + + const items = await Promise.all( + list.map( + async (item) => + await ctx.cache.tryGet(item.link, async () => { + const detailResponse = await got({ + method: 'get', + url: item.link, + }); + const content = cheerio.load(detailResponse.data); + + item.description = content('.full644').html() + content('.NormalTextoNoticia').html(); + item.pubDate = parseDate(content('meta[name="date"]').attr('content').replace(' ', '')); + + return item; + }) + ) + ); + + ctx.state.data = { + title: $('title').text(), + link: currentUrl, + item: items, + }; +};