From 02fda1c9104c662b1ca7ae7be429aae1444c8d31 Mon Sep 17 00:00:00 2001 From: song-zhou Date: Sat, 27 Nov 2021 17:13:01 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E7=8C=AB=E7=9C=BC=E7=94=B5=E5=BD=B1?= =?UTF-8?q?=E6=AD=A3=E5=9C=A8=E7=83=AD=E6=92=AD=E5=AE=8C=E6=95=B4=E5=88=97?= =?UTF-8?q?=E8=A1=A8=20(#8587)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- docs/multimedia.md | 4 ++ lib/router.js | 3 ++ lib/routes/maoyan/hotComplete.js | 87 ++++++++++++++++++++++++++++++++ 3 files changed, 94 insertions(+) create mode 100644 lib/routes/maoyan/hotComplete.js diff --git a/docs/multimedia.md b/docs/multimedia.md index 7d0062cf7..02960209f 100644 --- a/docs/multimedia.md +++ b/docs/multimedia.md @@ -1034,6 +1034,10 @@ JavDB 有多个备用域名,本路由以 为默认域名 +### 正在热映 - 完整版 + + + ## 奈菲影视 ### 分区 diff --git a/lib/router.js b/lib/router.js index 3be263790..3de66db7a 100644 --- a/lib/router.js +++ b/lib/router.js @@ -1821,6 +1821,9 @@ router.get('/aqicn/:city/:pollution?', lazyloadRouteHandler('./routes/aqicn/inde // 猫眼电影 router.get('/maoyan/hot', lazyloadRouteHandler('./routes/maoyan/hot')); router.get('/maoyan/upcoming', lazyloadRouteHandler('./routes/maoyan/upcoming')); +router.get('/maoyan/hot', require('./routes/maoyan/hot')); +router.get('/maoyan/upcoming', require('./routes/maoyan/upcoming')); +router.get('/maoyan/hotComplete/:orderby?/:ascOrDesc?/:top?', require('./routes/maoyan/hotComplete')); // cnBeta router.get('/cnbeta', lazyloadRouteHandler('./routes/cnbeta/home')); diff --git a/lib/routes/maoyan/hotComplete.js b/lib/routes/maoyan/hotComplete.js new file mode 100644 index 000000000..46544679b --- /dev/null +++ b/lib/routes/maoyan/hotComplete.js @@ -0,0 +1,87 @@ +const got = require('@/utils/got'); + +function sleep(time) { + return new Promise((resolve) => setTimeout(resolve, time)); +} + +module.exports = async (ctx) => { + const orderby = ctx.params.orderby; + const ascOrDesc = ctx.params.ascOrDesc; + const top = ctx.params.top; + + const response = await got({ + method: 'get', + url: 'https://m.maoyan.com/ajax/movieOnInfoList', + headers: { + Referer: 'https://m.maoyan.com/', + }, + }); + let data = response.data.movieList; + const movieIds = response.data.movieIds; + + const movieIdsArr = []; + for (let i = data.length; i < movieIds.length; i += 10) { + const movieIdsTemp = movieIds.slice(i, i + 10); + movieIdsArr.push(movieIdsTemp); + } + + const dataArrs = await Promise.all( + movieIdsArr.map(async (idsTemp) => { + await sleep(500); + const responseTemp = await got({ + method: 'get', + url: 'https://m.maoyan.com/ajax/moreComingList', + searchParams: { + movieIds: idsTemp.toString(), + token: '', + }, + headers: { + Referer: 'https://m.maoyan.com/', + }, + }); + const dataTemp = responseTemp.data.coming; + if (dataTemp && dataTemp.length > 0) { + return dataTemp; + } else { + return []; + } + }) + ); + + for (let i = 0; i < dataArrs.length; i++) { + data.push(...dataArrs[i]); + } + + if (orderby) { + data.sort((a, b) => { + if (orderby === 'pubDate') { + return ascOrDesc === 'asc' ? new Date(a.rt).getTime() - new Date(b.rt).getTime() : new Date(b.rt).getTime() - new Date(a.rt).getTime(); + } else { + return ascOrDesc === 'asc' ? a.sc - b.sc : b.sc - a.sc; + } + }); + } + if (top && top > 0 && top < data.length) { + data = data.slice(0, top - 1); + } + + const items = await Promise.all( + data.map((item) => { + const rating = item.sc > 0 ? `评分:${item.sc}` : ''; + + return { + title: `${item.nm} ${rating}`, + description: `
${rating}
演员:${item.star}
上映信息:${item.showInfo}`, + link: `https://maoyan.com/films/${item.id}`, + pubDate: new Date(item.rt).toUTCString(), + }; + }) + ); + + ctx.state.data = { + title: `猫眼电影 - 正在热映 - 完整版`, + link: `https://maoyan.com/films`, + description: `猫眼电影 - 正在热映`, + item: items, + }; +};