Skip to content

Commit

Permalink
feat(router): timednews 时刻新闻 (#8279)
Browse files Browse the repository at this point in the history
Co-authored-by: Tony <[email protected]>
  • Loading branch information
linbuxiao and TonyRL authored Nov 27, 2021
1 parent d1c84c1 commit daf95a4
Show file tree
Hide file tree
Showing 5 changed files with 184 additions and 0 deletions.
15 changes: 15 additions & 0 deletions docs/new-media.md
Original file line number Diff line number Diff line change
Expand Up @@ -2985,3 +2985,18 @@ QueryString:
| | zh-hk | zh-tw |

</Route>

## 时刻新闻

### 新闻

<Route author="linbuxiao" example="/timednews/news" path="/timednews/news/:type?" :paramsDesc="['子分类,见下表,默认为全部']">

子分类

| 全部 | 时政 | 财经 | 科技 | 社会 | 体娱 | 国际 | 美国 | 中国 | 欧洲 | 评论 |
|-----|----------------|---------|------------|-------|--------|---------------|-----|-----|--------|----------|
| all | currentAffairs | finance | technology | social| sports | international | usa | cn | europe | comments |

</Route>

3 changes: 3 additions & 0 deletions lib/v2/timednews/maintainer.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
module.exports = {
'/news/:type?': ['linbuxiao'],
};
106 changes: 106 additions & 0 deletions lib/v2/timednews/news.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
const got = require('@/utils/got');
const cheerio = require('cheerio');
const { parseDate } = require('@/utils/parse-date');

const BASE = 'https://www.timednews.com/topic';

const PATH_LIST = {
all: {
name: '全部',
path: 'cat/1.html',
},
currentAffairs: {
name: '时政',
path: 'subcat/1.html',
},
finance: {
name: '财经',
path: 'subcat/2.html',
},
technology: {
name: '科技',
path: 'subcat/3.html',
},
social: {
name: '社会',
path: 'subcat/4.html',
},
sports: {
name: '体娱',
path: 'subcat/5.html',
},
international: {
name: '国际',
path: 'subcat/6.html',
},
usa: {
name: '美国',
path: 'subcat/7.html',
},
cn: {
name: '中国',
path: 'subcat/8.html',
},
europe: {
name: '欧洲',
path: 'subcat/9.html',
},
comments: {
name: '评论',
path: 'subcat/14.html',
},
};

module.exports = async (ctx) => {
const type = ctx.params.type ?? 'all';
const url = `${BASE}/${PATH_LIST[type].path}`;
const res = await got({
method: 'get',
url,
});

const $ = cheerio.load(res.data);

const list = $('#content li')
.map((i, e) => {
const c = cheerio.load(e);
return {
title: c('a').text().trim(),
link: c('a').attr('href'),
};
})
.get();

const items = await Promise.all(
list.map((item) =>
ctx.cache.tryGet(item.link, async () => {
const detailResponse = await got({
method: 'get',
url: item.link,
});

const c = cheerio.load(detailResponse.data, { decodeEntities: false });
c('.event .twitter').remove();
item.pubDate = parseDate(c('.datetime #publishdate').text(), 'YYYY-MM-DD');
item.author = c('.datetime #author').text();
item.description = c('.event').html();

return item;
})
)
);

ctx.state.data = {
title: '时刻新闻',
link: url,
description: `时刻新闻 ${PATH_LIST[type].name}`,
item: items,
};

ctx.state.json = {
title: '时刻新闻',
link: url,
description: `时刻新闻 ${PATH_LIST[type].name}`,
item: items,
};
};
57 changes: 57 additions & 0 deletions lib/v2/timednews/radar.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
module.exports = {
'timednews.com': {
_name: '时刻新闻',
'.': [
{
title: '新闻',
docs: 'https://docs.rsshub.app/new-media.html#shi-ke-xin-wen',
source: ['/topic/:type/:id'],
target: ({ type, id }) => {
let name = '';
if (type === 'cat') {
if (id === '1') {
name = 'all';
}
} else if (type === 'subcat') {
switch (id) {
case '1':
name = 'currentAffairs';
break;
case '2':
name = 'finance';
break;
case '3':
name = 'technology';
break;
case '4':
name = 'social';
break;
case '5':
name = 'sports';
break;
case '6':
name = 'international';
break;
case '7':
name = 'usa';
break;
case '8':
name = 'cn';
break;
case '9':
name = 'europe';
break;
case '14':
name = 'comments';
break;
default:
break;
}
}

return `/timednews/news/${name}`;
},
},
],
},
};
3 changes: 3 additions & 0 deletions lib/v2/timednews/router.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
module.exports = function (router) {
router.get('/news/:type?', require('./news'));
};

0 comments on commit daf95a4

Please sign in to comment.