feat(route): add zyw今日热榜 (#12527)
* feat(route): add zyw今日热榜 * fix typo * fix: remove cache.tryGet * fix radar params * update lib/v2/zyw/radar.js ---------
This commit is contained in:
parent
0e6941e653
commit
ad33615e48
|
|
@ -1545,6 +1545,23 @@ Supported sub-sites:
|
|||
|
||||
<Route author="AlexdanerZe TonyRL" example="/zaker/focusread" path="/zaker/focusread" />
|
||||
|
||||
## zyw
|
||||
|
||||
### 今日热榜
|
||||
|
||||
<Route author="nczitzk" example="/zyw/hot" path="/zyw/hot/:site?" :paramsDesc="['站点,见下表,默认为空,即全部']">
|
||||
|
||||
::: tip 提示
|
||||
|
||||
全部站点请见 [此处](https://hot.zyw.asia/#/list)
|
||||
|
||||
:::
|
||||
|
||||
| 哔哩哔哩 | 微博 | 知乎 | 36氪 | 百度 | 少数派 | IT之家 | 澎湃新闻 | 今日头条 | 百度贴吧 | 稀土掘金 | 腾讯新闻 |
|
||||
| -------- | ---- | ---- | ---- | ---- | ------ | ------ | -------- | -------- | -------- | -------- | -------- |
|
||||
|
||||
</Route>
|
||||
|
||||
## 阿里研究院
|
||||
|
||||
### 资讯
|
||||
|
|
|
|||
|
|
@ -0,0 +1,63 @@
|
|||
const got = require('@/utils/got');
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
const site = ctx.params.site ?? '';
|
||||
|
||||
const rootUrl = 'https://hot.zyw.asia';
|
||||
const apiRootUrl = 'https://api-hot.zyw.asia';
|
||||
|
||||
let response = await got({
|
||||
method: 'get',
|
||||
url: rootUrl,
|
||||
});
|
||||
|
||||
const jsUrl = `${rootUrl}${response.data.match(/crossorigin src="(\/assets\/index-\w+\.js)">/)[1]}`;
|
||||
|
||||
response = await got({
|
||||
method: 'get',
|
||||
url: jsUrl,
|
||||
});
|
||||
|
||||
const sites = response.data
|
||||
.match(/label:"(.*?)",value:"(.*?)",order/g)
|
||||
.map((a) => {
|
||||
const matches = a.match(/label:"(.*?)",value:"(.*?)"/);
|
||||
return {
|
||||
label: matches[1],
|
||||
value: matches[2],
|
||||
};
|
||||
})
|
||||
.filter((a) => (site ? a.label === site || a.value === site : true));
|
||||
|
||||
const currentUrl = `${rootUrl}${site ? `/#/list?type=${sites[0].value}` : ''}`;
|
||||
|
||||
const items = [];
|
||||
|
||||
await Promise.all(
|
||||
sites.map(async (a) => {
|
||||
const detailResponse = await got({
|
||||
method: 'get',
|
||||
url: `${apiRootUrl}/${a.value}`,
|
||||
headers: {
|
||||
referer: rootUrl,
|
||||
},
|
||||
});
|
||||
|
||||
for (const d of detailResponse.data.data) {
|
||||
items.push({
|
||||
link: d.url,
|
||||
title: d.title,
|
||||
description: d.desc,
|
||||
});
|
||||
}
|
||||
|
||||
return;
|
||||
})
|
||||
);
|
||||
|
||||
ctx.state.data = {
|
||||
title: `今日热榜${site ? ` - ${sites[0].label}` : ''}`,
|
||||
link: currentUrl,
|
||||
item: items,
|
||||
};
|
||||
};
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
module.exports = {
|
||||
'/hot/:site?': ['nczitzk'],
|
||||
};
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
module.exports = {
|
||||
'zyw.asia': {
|
||||
_name: 'zyw',
|
||||
hot: [
|
||||
{
|
||||
title: '今日热榜',
|
||||
docs: 'https://docs.rsshub.app/new-media.html#zyw-jin-ri-re-bang',
|
||||
source: ['/'],
|
||||
target: (params, url) => {
|
||||
const matches = new URL(url).href.match(/type=(\w+)/);
|
||||
return `/zyw/hot${matches ? `/${matches[1]}` : ''}`;
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
};
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
module.exports = function (router) {
|
||||
router.get('/hot/:site?', require('./hot'));
|
||||
};
|
||||
Loading…
Reference in New Issue