From e2aa7c2347106fd39e5ceb4978af45965fa09e83 Mon Sep 17 00:00:00 2001 From: Ethan Shen Date: Fri, 30 Oct 2020 17:11:33 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20add=20=E8=B1=86=E7=93=A3=E4=B8=80?= =?UTF-8?q?=E5=91=A8=E5=8F=A3=E7=A2=91=E6=A6=9C=20(#6049)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/social-media.md | 8 +++++++- lib/router.js | 2 +- lib/routes/douban/weekly_best.js | 27 +++++++++++++++++++-------- 3 files changed, 27 insertions(+), 10 deletions(-) diff --git a/docs/social-media.md b/docs/social-media.md index 92556d388..c7abb1e0e 100644 --- a/docs/social-media.md +++ b/docs/social-media.md @@ -624,7 +624,13 @@ Tiny Tiny RSS 会给所有 iframe 元素添加 `sandbox="allow-scripts"` 属性 ### 一周口碑榜 - + + +| 一周口碑电影榜 | 一周口碑剧集榜 | 华语口碑剧集榜 | +| ----------------- | -------------- | ---------------------- | +| movie_weekly_best | tv_weekly_best | tv_chinese_best_weekly | + + ### 豆瓣电影分类 diff --git a/lib/router.js b/lib/router.js index 65670ed64..92df6c1a2 100644 --- a/lib/router.js +++ b/lib/router.js @@ -171,7 +171,7 @@ router.get('/douban/movie/playing/:score', require('./routes/douban/playing')); router.get('/douban/movie/playing/:score/:city', require('./routes/douban/playing')); 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/weekly/:type?', 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')); diff --git a/lib/routes/douban/weekly_best.js b/lib/routes/douban/weekly_best.js index e086a9f70..3f7eae60f 100644 --- a/lib/routes/douban/weekly_best.js +++ b/lib/routes/douban/weekly_best.js @@ -1,27 +1,38 @@ const got = require('@/utils/got'); module.exports = async (ctx) => { + const type = ctx.params.type || 'movie_weekly_best'; + const link = 'https://m.douban.com/movie'; - const response = await got({ + const apiUrl = `https://m.douban.com/rexxar/api/v2/subject_collection/${type}`; + + const itemResponse = await got({ method: 'get', - url: 'https://m.douban.com/rexxar/api/v2/subject_collection/movie_weekly_best/items?start=0&count=10', + url: `${apiUrl}/items?start=0&count=10`, + headers: { + Referer: link, + }, + }); + const infoResponse = await got({ + method: 'get', + url: apiUrl, headers: { Referer: link, }, }); - const data = response.data.subject_collection_items; + const data = itemResponse.data.subject_collection_items; ctx.state.data = { - title: '豆瓣一周口碑电影榜', - link: 'https://movie.douban.com/chart', - description: '每周五更新', + title: infoResponse.data.title, + link: `https://m.douban.com/subject_collection/${type}`, + description: infoResponse.data.description, - item: data.map(({ title, info, cover, url, rating, year, release_date, null_rating_reason }) => { + item: data.map(({ title, info, cover, url, rating, year, release_date, null_rating_reason, description }) => { const release = `${year}.${release_date}`; const rate = rating ? `${rating.value.toFixed(1)}分` : null_rating_reason; - const description = `标题:${title}
影片信息:${info}
上映日期:${release}
评分:${rate}
`; + description = `标题:${title}
影片信息:${info}
上映日期:${release}
评分:${rate}

${description}

`; return { title,