diff --git a/docs/social-media.md b/docs/social-media.md index 2d8331f0f..821a7ac1b 100644 --- a/docs/social-media.md +++ b/docs/social-media.md @@ -388,7 +388,7 @@ pageClass: routes ### 正在上映的高分电影 - + ### 即将上映的电影 diff --git a/lib/routes/douban/playing.js b/lib/routes/douban/playing.js index 66c1a83e4..4b888acf9 100644 --- a/lib/routes/douban/playing.js +++ b/lib/routes/douban/playing.js @@ -1,22 +1,34 @@ const axios = require('@/utils/axios'); +const cheerio = require('cheerio'); module.exports = async (ctx) => { - const city = ctx.params.city; const score = parseFloat(ctx.params.score, 10); const response = await axios({ method: 'get', - url: 'https://api.douban.com/v2/movie/in_theaters', - params: { city }, + url: `https://movie.douban.com/cinema/nowplaying/beijing`, }); - const movieList = score ? response.data.subjects.filter((item) => item.rating.average >= score) : response.data.subjects; + const $ = cheerio.load(response.data); ctx.state.data = { - title: `${city ? city : ''}正在上映的${score ? `超过 ${score} 分的` : ''}电影`, - link: 'https://movie.douban.com/cinema/nowplaying/', - item: movieList.map((item) => ({ - title: item.title, - description: `标题:${item.title}
影片类型:${item.genres.join(' | ')}
评分:${item.rating.average}
`, - link: item.alt, - })), + title: `正在上映的${score ? `超过 ${score} 分的` : ''}电影`, + link: `https://movie.douban.com/cinema/nowplaying/`, + item: $('.list-item') + .get() + .map((i) => { + const item = $(i); + const itemScore = parseFloat(item.attr('data-score'), 10); + if (itemScore >= score) { + return { + title: item.attr('data-title'), + description: `标题:${item.attr('data-title')}
评分:${itemScore}
片长:${item.attr('data-duration')}
制片国家/地区:${item.attr('data-region')}
导演:${item.attr( + 'data-director' + )}
主演:${item.attr('data-actors')}
`, + link: `https://movie.douban.com/subject/${item.attr('id')}`, + }; + } else { + return null; + } + }) + .filter((item) => item), }; };