fix(route): twreporter (category) (#11243)

* Update topics.js

* update doc(cn) for nautilus

* update doc(en) for nautilus

* refactor: use cache.tryGet

* refactor:

migrate to v2

* Update category.js

* Revert "refactor:"

This reverts commit 963d065833e5877d5200c3b07502b9ecc09eb9e6.

* Revert "refactor: use cache.tryGet"

This reverts commit 879bc58b8c917a144ac3670d3f2bc294e955bb60.

* Revert "update doc(en) for nautilus"

This reverts commit 41ce3f8f5637f5b8aaa211d8f169fb996b7834f4.

* Revert "update doc(cn) for nautilus"

This reverts commit 74458c78b5ac5df2aeb219d202c6e7a75d172e30.

* Revert "Update topics.js"

This reverts commit 988c443264189707d75645541c1be8ff01131f03.
This commit is contained in:
Enoch Ma 2022-11-23 17:42:36 +01:00 committed by GitHub
parent aaf3d95a5d
commit b9d59de81a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 17 additions and 8 deletions

View File

@ -8,16 +8,25 @@ module.exports = async (ctx) => {
const url = baseURL + `/categories/${ctx.params.cid}`;
const res = await got(url);
const $ = cheerio.load(res.data);
const list = $('.lnKPLr').get();
const category = $('.kCfkTU').text();
const regexp = /^window\.__REDUX_STATE__=(.*);$/gm;
const raw = $('script[charset="UTF-8"]').html().replace(regexp, '$1');
const list = JSON.parse(raw);
const ids = list.entities.posts.allIds;
const links = [];
const titles = [];
const category = list.entities.posts.byId[ids[0]].categories[0].name;
for (const id of ids) {
links.push(baseURL + '/a/' + list.entities.posts.byId[id].slug);
titles.push(list.entities.posts.byId[id].title);
}
const out = await Promise.all(
list.map((item) => {
const $ = cheerio.load(item);
const address = baseURL + $('a').attr('href');
const title = $('.list-item__Title-sc-1dx5lew-5').text();
return ctx.cache.tryGet(address, async () => {
const single = await fetch(address);
links.map((item, index) => {
const title = titles[index];
return ctx.cache.tryGet(item, async () => {
const single = await fetch(item);
single.title = title;
return single;
});