From 065ddbfd0786105d86bb675725d6d3001ba0814d Mon Sep 17 00:00:00 2001 From: Henry Wang Date: Tue, 7 Jul 2020 10:39:45 +0100 Subject: [PATCH] fix: ProductHunt Today (#5140) --- lib/routes/coronavirus/dxy-data.js | 3 +-- lib/routes/coronavirus/dxy.js | 3 +-- lib/routes/dongqiudi/utils.js | 3 +-- lib/routes/nintendo/utils.js | 3 +-- lib/routes/producthunt/today.js | 26 +++++++++++++------------- lib/routes/tencent/egame/room.js | 3 +-- 6 files changed, 18 insertions(+), 23 deletions(-) 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 = {};