diff --git a/lib/routes/coronavirus/dxy-data.js b/lib/routes/coronavirus/dxy-data.js
index 65fe16494..36ee5d780 100644
--- a/lib/routes/coronavirus/dxy-data.js
+++ b/lib/routes/coronavirus/dxy-data.js
@@ -1,6 +1,5 @@
const got = require('@/utils/got');
-const jsdom = require('jsdom');
-const { JSDOM } = jsdom;
+const { JSDOM } = require('jsdom');
module.exports = async (ctx) => {
const PROVINCE = ctx.params.province || '国内';
diff --git a/lib/routes/coronavirus/dxy.js b/lib/routes/coronavirus/dxy.js
index de9fa7b86..da546f5f0 100644
--- a/lib/routes/coronavirus/dxy.js
+++ b/lib/routes/coronavirus/dxy.js
@@ -1,6 +1,5 @@
const got = require('@/utils/got');
-const jsdom = require('jsdom');
-const { JSDOM } = jsdom;
+const { JSDOM } = require('jsdom');
module.exports = async (ctx) => {
const response = await got({
diff --git a/lib/routes/dongqiudi/utils.js b/lib/routes/dongqiudi/utils.js
index 26c846c30..f4a8f2420 100644
--- a/lib/routes/dongqiudi/utils.js
+++ b/lib/routes/dongqiudi/utils.js
@@ -1,8 +1,7 @@
const cheerio = require('cheerio');
const got = require('@/utils/got');
const url = require('url');
-const jsdom = require('jsdom');
-const { JSDOM } = jsdom;
+const { JSDOM } = require('jsdom');
const ProcessVideo = (content) => {
content('div.video').each((i, v) => {
diff --git a/lib/routes/nintendo/utils.js b/lib/routes/nintendo/utils.js
index 4b5fc355e..715d879fc 100644
--- a/lib/routes/nintendo/utils.js
+++ b/lib/routes/nintendo/utils.js
@@ -1,7 +1,6 @@
const got = require('@/utils/got');
const cheerio = require('cheerio');
-const jsdom = require('jsdom');
-const { JSDOM } = jsdom;
+const { JSDOM } = require('jsdom');
async function nuxtReader(data) {
let nuxt = {};
diff --git a/lib/routes/producthunt/today.js b/lib/routes/producthunt/today.js
index df79d51f3..bf3799b54 100644
--- a/lib/routes/producthunt/today.js
+++ b/lib/routes/producthunt/today.js
@@ -1,24 +1,24 @@
const got = require('@/utils/got');
-const cheerio = require('cheerio');
module.exports = async (ctx) => {
const response = await got.get('https://www.producthunt.com/');
- const $ = cheerio.load(response.data);
+ const data = JSON.parse(response.data.match(/(?<=window\.__APOLLO_STATE__ =)(.*?)(?=;<\/script>)/)[0]);
+
+ const list = Object.values(data).filter((o) => o.__typename === 'Post');
- const list = $('ul[class^="postsList"] li');
ctx.state.data = {
title: 'Product Hunt Today Popular',
link: 'https://www.producthunt.com/',
- item: list
- .map((i, item) => {
- const itemDom = $(item);
- return {
- title: itemDom.find('h3').text(),
- description: `${itemDom.find('h3 + p').text()}
`,
- link: 'https://www.producthunt.com' + itemDom.find('a').attr('href'),
- };
- })
- .get(),
+ item: list.map((l) => {
+ const img = `https://ph-files.imgix.net/${data[l.thumbnail.id].image_uuid}?auto=format&auto=compress&codec=mozjpeg&cs=strip&w=150&h=150&fit=crop`;
+
+ return {
+ title: l.name,
+ description: `${l.tagline}
`,
+ link: 'https://www.producthunt.com/post/' + l.slug,
+ pubDate: new Date(l.updated_at),
+ };
+ }),
};
};
diff --git a/lib/routes/tencent/egame/room.js b/lib/routes/tencent/egame/room.js
index 6b47455ed..375c32116 100644
--- a/lib/routes/tencent/egame/room.js
+++ b/lib/routes/tencent/egame/room.js
@@ -1,6 +1,5 @@
const got = require('@/utils/got');
-const jsdom = require('jsdom');
-const { JSDOM } = jsdom;
+const { JSDOM } = require('jsdom');
async function nuxtReader(data) {
let nuxt = {};