From 8a82c5e69a23397ed8cf6cddde2f67987fa2d595 Mon Sep 17 00:00:00 2001 From: libo26 Date: Mon, 17 Feb 2020 19:26:39 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E8=B1=86=E7=93=A3?= =?UTF-8?q?=E7=94=B5=E5=BD=B1=E5=88=86=E7=B1=BBrss=20(#4017)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/social-media.md | 10 ++++++++ lib/router.js | 1 + lib/routes/douban/classification.js | 39 +++++++++++++++++++++++++++++ 3 files changed, 50 insertions(+) create mode 100644 lib/routes/douban/classification.js diff --git a/docs/social-media.md b/docs/social-media.md index 59da2b104e..5653739e53 100644 --- a/docs/social-media.md +++ b/docs/social-media.md @@ -510,6 +510,16 @@ Tiny Tiny RSS 会给所有 iframe 元素添加 `sandbox="allow-scripts"` 属性 +### 豆瓣电影分类 + + + +排序方式可选值如下 + +| 近期热门 | 标记最多 | 评分最高 | 最近上映 | +| -------- | -------- | -------- | -------- | +| U | T | S | R | + ### 豆瓣小组 diff --git a/lib/router.js b/lib/router.js index ac6c23c301..db1d0badc6 100644 --- a/lib/router.js +++ b/lib/router.js @@ -152,6 +152,7 @@ router.get('/douban/movie/playing/:score/:city', require('./routes/douban/playin router.get('/douban/movie/later', require('./routes/douban/later')); router.get('/douban/movie/ustop', require('./routes/douban/ustop')); router.get('/douban/movie/weekly', require('./routes/douban/weekly_best')); +router.get('/douban/movie/classification/:sort?/:score?/:tags?', require('./routes/douban/classification.js')); router.get('/douban/group/:groupid', require('./routes/douban/group')); router.get('/douban/explore', require('./routes/douban/explore')); router.get('/douban/music/latest/:area?', require('./routes/douban/latest_music')); diff --git a/lib/routes/douban/classification.js b/lib/routes/douban/classification.js new file mode 100644 index 0000000000..63600806d7 --- /dev/null +++ b/lib/routes/douban/classification.js @@ -0,0 +1,39 @@ +const got = require('@/utils/got'); + +module.exports = async (ctx) => { + const sort = ctx.params.sort || 'U'; + const score = parseFloat(ctx.params.score) || 0; + const tags = ctx.params.tags || ''; + + const response = await got({ + method: 'get', + url: `https://movie.douban.com/j/new_search_subjects?sort=${sort}&range=0,10&tags=${tags}&start=0`, + }); + + const movies = response.data.data; + + ctx.state.data = { + title: `豆瓣电影分类${score ? `超过 ${score} 分的` : ''}影视`, + link: `https://movie.douban.com/tag/#/?sort=U&range=0,10&tags=`, + item: movies + .map((item) => { + const itemScore = parseFloat(item.rate) || 0; + + if (itemScore >= score) { + return { + title: item.title, + description: `标题:${item.title}
+ 评分:${item.rate}
+ 导演:${item.directors.join(' / ')}
+ 主演:${item.casts.join(' / ')}
+ `, + link: item.url, + }; + } else { + return null; + } + }) + .filter((item) => item), + }; + ctx.state.data.allowEmpty = true; +};