From 40240adb5efe55d446b43be5c3e9aae36b809fa4 Mon Sep 17 00:00:00 2001 From: Henry Wang Date: Fri, 21 Sep 2018 11:40:02 +0100 Subject: [PATCH] =?UTF-8?q?=E6=87=82=E7=90=83=E5=B8=9D=E8=B7=AF=E7=94=B1?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E5=A4=8D=E7=94=A8=EF=BC=8C=E5=A4=96=E9=93=BE?= =?UTF-8?q?=E8=A7=86=E9=A2=91=E5=A4=84=E7=90=86=20(#757)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- routes/dongqiudi/player_news.js | 51 ++-------------------------- routes/dongqiudi/team_news.js | 51 ++-------------------------- routes/dongqiudi/utils.js | 60 +++++++++++++++++++++++++++++++++ 3 files changed, 64 insertions(+), 98 deletions(-) create mode 100644 routes/dongqiudi/utils.js diff --git a/routes/dongqiudi/player_news.js b/routes/dongqiudi/player_news.js index cdf24f1dba..09791ec288 100644 --- a/routes/dongqiudi/player_news.js +++ b/routes/dongqiudi/player_news.js @@ -1,56 +1,9 @@ -const axios = require('../../utils/axios'); -const cheerio = require('cheerio'); -const dayjs = require('dayjs'); +const utils = require('./utils'); module.exports = async (ctx) => { const id = ctx.params.id; const link = `https://www.dongqiudi.com/player/${id}.html`; const api = `https://www.dongqiudi.com/data/person/archive?person=${id}`; - const axios_ins = axios.create({ - headers: { - 'X-Requested-With': 'XMLHttpRequest', - Referer: link, - }, - }); - - const response = await axios_ins.get(link); - const $ = cheerio.load(response.data); - const playerName = `${$('h1.name').text()} ${$('span.en_name').text()}`; - - const list = (await axios_ins.get(api)).data.data; - - const out = await Promise.all( - list.map(async (item) => { - const itemUrl = item.web_url; - const res = await axios_ins.get(itemUrl); - const content = cheerio.load(res.data); - - if (itemUrl.includes('/video/')) { - content('div.video').each((i, v) => { - const link = v.attribs.src; - content('div.video').replaceWith(``); - }); - } - - const serverOffset = new Date().getTimezoneOffset() / 60; - const single = { - title: content('h1').text(), - guid: itemUrl, - link: itemUrl, - description: content('#con > div.left > div.detail > div:nth-child(3)').html(), - pubDate: dayjs(content('#con h4 span.time').text()) - .add(-8 - serverOffset, 'hour') - .toISOString(), - author: content('#con h4 span.name').text(), - }; - return Promise.resolve(single); - }) - ); - - ctx.state.data = { - title: `${playerName} - 相关新闻`, - link, - item: out, - }; + await utils.ProcessFeed(ctx, link, api); }; diff --git a/routes/dongqiudi/team_news.js b/routes/dongqiudi/team_news.js index e1ba77a5cf..5ad8638805 100644 --- a/routes/dongqiudi/team_news.js +++ b/routes/dongqiudi/team_news.js @@ -1,56 +1,9 @@ -const axios = require('../../utils/axios'); -const cheerio = require('cheerio'); -const dayjs = require('dayjs'); +const utils = require('./utils'); module.exports = async (ctx) => { const team = ctx.params.team; const link = `https://www.dongqiudi.com/team/${team}.html`; const api = `https://www.dongqiudi.com/data/team/archive?team=${team}`; - const axios_ins = axios.create({ - headers: { - 'X-Requested-With': 'XMLHttpRequest', - Referer: link, - }, - }); - - const response = await axios_ins.get(link); - const $ = cheerio.load(response.data); - const teamName = $('h1.name').text(); - - const list = (await axios_ins.get(api)).data.data; - - const out = await Promise.all( - list.map(async (item) => { - const itemUrl = item.web_url; - const res = await axios_ins.get(itemUrl); - const content = cheerio.load(res.data); - - if (itemUrl.includes('/video/')) { - content('div.video').each((i, v) => { - const link = v.attribs.src; - content('div.video').replaceWith(``); - }); - } - - const serverOffset = new Date().getTimezoneOffset() / 60; - const single = { - title: content('h1').text(), - guid: itemUrl, - link: itemUrl, - description: content('#con > div.left > div.detail > div:nth-child(3)').html(), - pubDate: dayjs(content('#con h4 span.time').text()) - .add(-8 - serverOffset, 'hour') - .toISOString(), - author: content('#con h4 span.name').text(), - }; - return Promise.resolve(single); - }) - ); - - ctx.state.data = { - title: `${teamName} - 相关新闻`, - link, - item: out, - }; + await utils.ProcessFeed(ctx, link, api); }; diff --git a/routes/dongqiudi/utils.js b/routes/dongqiudi/utils.js new file mode 100644 index 0000000000..dae1eff608 --- /dev/null +++ b/routes/dongqiudi/utils.js @@ -0,0 +1,60 @@ +const dayjs = require('dayjs'); +const cheerio = require('cheerio'); +const axios = require('../../utils/axios'); + +module.exports = { + ProcessFeed: async (ctx, link, api) => { + const axios_ins = axios.create({ + headers: { + 'X-Requested-With': 'XMLHttpRequest', + Referer: link, + }, + }); + + const response = await axios_ins.get(link); + const $ = cheerio.load(response.data); + const name = `${$('h1.name').text()} ${$('span.en_name').text()}`; + + const list = (await axios_ins.get(api)).data.data; + const out = await Promise.all( + list.map(async (item) => { + const itemUrl = item.web_url; + const res = await axios_ins.get(itemUrl); + const content = cheerio.load(res.data); + + content('div.video').each((i, v) => { + const link = v.attribs.src; + switch (v.attribs.site) { + case 'qiniu': + content('div.video').replaceWith(``); + break; + case 'youku': + content('div.video').replaceWith(``); + break; + default: + break; + } + }); + + const serverOffset = new Date().getTimezoneOffset() / 60; + const single = { + title: content('h1').text(), + guid: itemUrl, + link: itemUrl, + description: content('#con > div.left > div.detail > div:nth-child(3)').html(), + pubDate: dayjs(content('#con h4 span.time').text()) + .add(-8 - serverOffset, 'hour') + .toISOString(), + author: content('#con h4 span.name').text(), + }; + return Promise.resolve(single); + }) + ); + + ctx.state.data = { + title: `${name} - 相关新闻`, + link, + item: out, + }; + }, +};