-
Notifications
You must be signed in to change notification settings - Fork 7.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(route): 新增 米游社 - 同人榜 路由 (#13153)
* feat(route): 添加 百度股市通 * fix: 修改 百度股市通 路径 * docs: 添加 百度股市通 文档 * feat: 添加 radar 支持 * fix: 按字母顺序插入新路由 * feat(route): 新增 腾讯新闻 - 新型冠状病毒肺炎疫情实时追踪 * fix: 优化 腾讯新闻 - 新型冠状病毒肺炎疫情实时追踪 的标题 * fix: 修复 腾讯新闻 - 新型冠状病毒肺炎疫情实时追踪 部分情况下的非空判断 * fix: 修复 地区名称标题的问题 * fix: 腾讯新闻 - 新型冠状病毒肺炎疫情实时追踪 的 guid 增加 pubDate * fix: 修复 腾讯新闻 - 新型冠状病毒肺炎疫情实时追踪 guid 中添加 pubDate * fix: 修改 腾讯新闻 - 新型冠状病毒肺炎疫情实时追踪 的 title * feat(route): 修复 HelloGitHub 的 月刊 路由 * fix: remove guid * feat(route): 新增 bilibili 热搜 * feat(route): 完善 bilibili热搜 的 radar * fix: 优化 bilibili热搜 list 的非空判断 * fix: 修复 bilibili热搜路由失效 fix #12632 * fix(route): 修复 bilibili热搜路由 的校验逻辑计算 * fix: 优化 bilibili/utils 的 addVerifyInfo 逻辑 * feat(route): bilibili 动态中的视频链接默认改为 BV 号并增加配置参数;修改 专栏显示全文 的参数来源 * fix(route): 修复 fulltext 来源错误;修复 addVerifyInfo 逻辑错误 * fix(route): 移除不必要的参数 * feat(route): 新增 米游社 - 同人榜 路由 * fix: 修复 崩坏二 默认排行榜类型错误;修复 art 模板路径错误 * fix: 提取 静态数据;优化入参形式 * fix(docs): 更新 bilibili 文档 * docs(docs): 修复 掘金文档错误 * fix(route): 修复 参数风格问题;修改 query 的处理 * docs(docs): 回退 last_id --------- Co-authored-by: pull[bot] <39814207+pull[bot]@users.noreply.github.com>
- Loading branch information
1 parent
d5f916c
commit 90a2db4
Showing
10 changed files
with
302 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,106 @@ | ||
const got = require('@/utils/got'); | ||
const { art } = require('@/utils/render'); | ||
const path = require('path'); | ||
const { parseDate } = require('@/utils/parse-date'); | ||
const { DATA_MAP, RANKING_TYPE_MAP } = require('./static-data'); | ||
|
||
const renderDescription = (description, images) => art(path.join(__dirname, '../templates/description.art'), { description, images }); | ||
|
||
const getGameInfo = (game) => ({ | ||
gids: DATA_MAP[game]?.gids, | ||
title: DATA_MAP[game]?.title, | ||
}); | ||
const getForumInfo = (game, forum_type) => { | ||
forum_type = forum_type || DATA_MAP[game]?.default_forum || 'tongren'; | ||
const forum = DATA_MAP[game]?.forums?.[forum_type]; | ||
return { | ||
forum_id: forum?.forum_id, | ||
title: `${forum?.title}榜`, | ||
}; | ||
}; | ||
const getCateInfo = (game, forum_type, cate_type) => { | ||
forum_type = forum_type || DATA_MAP[game]?.default_forum || 'tongren'; | ||
const forum = DATA_MAP[game]?.forums?.[forum_type]; | ||
const default_cate = forum?.default_cate; | ||
if (!default_cate) { | ||
return { | ||
title: '', | ||
cate_id: '0', | ||
}; | ||
} | ||
cate_type = cate_type || default_cate; | ||
return { | ||
title: `${forum?.cates?.[cate_type]?.title}榜`, | ||
cate_id: forum?.cates?.[cate_type]?.cate_id, | ||
}; | ||
}; | ||
const getRankingTypeInfo = (game, ranking_type) => { | ||
ranking_type = ranking_type || DATA_MAP[game]?.default_ranking_type || 'daily'; | ||
return { | ||
id: RANKING_TYPE_MAP[ranking_type]?.id, | ||
title: RANKING_TYPE_MAP[ranking_type]?.title, | ||
}; | ||
}; | ||
|
||
module.exports = async (ctx) => { | ||
const { game } = ctx.params; | ||
const routeParams = Object.fromEntries(new URLSearchParams(ctx.params.routeParams)); | ||
const { forumType: forum_type = 'tongren', cateType: cate_type, rankingType: ranking_type, lastId: last_id = '' } = routeParams; | ||
const page_size = ctx.query.limit || '20'; | ||
const { gids, title: game_title } = getGameInfo(game); | ||
if (!gids) { | ||
throw new Error('未知的游戏!'); | ||
} | ||
const { forum_id, title: forum_title } = getForumInfo(game, forum_type); | ||
if (!forum_id) { | ||
throw new Error(`${game_title} 的排行榜不存在!`); | ||
} | ||
const { cate_id, title: cate_title } = getCateInfo(game, forum_type, cate_type); | ||
const { id: type, title: type_title } = getRankingTypeInfo(game, ranking_type); | ||
const query = new URLSearchParams({ | ||
gids, | ||
forum_id, | ||
cate_id, | ||
type, | ||
page_size, | ||
last_id, | ||
}).toString(); | ||
const url = `https://bbs-api.miyoushe.com/post/wapi/getImagePostList?${query}`; | ||
const response = await got({ | ||
method: 'get', | ||
url, | ||
}); | ||
const list = response?.data?.data?.list; | ||
if (!list) { | ||
throw new Error('未获取到数据!'); | ||
} | ||
const title = `米游社-${game_title}-${forum_title}${cate_title ? `-${cate_title}` : ''}-${type_title}`; | ||
const items = list.map((e) => { | ||
const author = e.user.nickname; | ||
const title = e.post.subject; | ||
const link = `https://bbs.mihoyo.com/ys/article/${e.post.post_id}`; | ||
let describe = e.post.content || ''; | ||
try { | ||
describe = JSON.parse(e.post.content).describe; | ||
} catch (error) { | ||
if (!(error instanceof SyntaxError)) { | ||
throw error; | ||
} | ||
} | ||
const description = renderDescription(describe || '', [e.post.cover, ...e.post.images]); | ||
const pubDate = parseDate(e.post.created_at * 1000); | ||
return { | ||
author, | ||
title, | ||
link, | ||
description, | ||
pubDate, | ||
}; | ||
}); | ||
const data = { | ||
title, | ||
link: url, | ||
item: items, | ||
}; | ||
ctx.state.data = data; | ||
}; |
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,137 @@ | ||
// 排行榜基本数据 | ||
const DATA_MAP = { | ||
bh2: { | ||
title: '崩坏学园2', | ||
gids: 3, | ||
default_forum: 'tongren', | ||
default_ranking_type: 'weekly', | ||
forums: { | ||
tongren: { | ||
title: '同人', | ||
forum_id: 40, | ||
}, | ||
}, | ||
}, | ||
bh3: { | ||
title: '崩坏3', | ||
gids: 1, | ||
default_forum: 'tongren', | ||
forums: { | ||
tongren: { | ||
title: '同人', | ||
forum_id: 4, | ||
default_cate: 'illustration', | ||
cates: { | ||
comic: { | ||
title: '漫画', | ||
cate_id: 3, | ||
}, | ||
illustration: { | ||
title: '插画', | ||
cate_id: 4, | ||
}, | ||
cos: { | ||
title: 'COS', | ||
cate_id: 17, | ||
}, | ||
}, | ||
}, | ||
}, | ||
}, | ||
ys: { | ||
title: '原神', | ||
gids: 2, | ||
default_forum: 'tongren', | ||
forums: { | ||
tongren: { | ||
title: '同人', | ||
forum_id: 29, | ||
default_cate: 'illustration', | ||
cates: { | ||
manual: { | ||
title: '手工', | ||
cate_id: 1, | ||
}, | ||
qute: { | ||
title: 'Q版', | ||
cate_id: 2, | ||
}, | ||
comic: { | ||
title: '漫画', | ||
cate_id: 3, | ||
}, | ||
illustration: { | ||
title: '插画', | ||
cate_id: 4, | ||
}, | ||
}, | ||
}, | ||
cos: { | ||
title: 'COS', | ||
forum_id: 49, | ||
}, | ||
}, | ||
}, | ||
wd: { | ||
title: '未定事件簿', | ||
gids: 4, | ||
default_forum: 'tongren', | ||
forums: { | ||
tongren: { | ||
title: '同人', | ||
forum_id: 38, | ||
}, | ||
}, | ||
}, | ||
sr: { | ||
title: '崩坏:星穹铁道', | ||
gids: 6, | ||
default_forum: 'tongren', | ||
forums: { | ||
tongren: { | ||
title: '同人', | ||
forum_id: 56, | ||
}, | ||
}, | ||
}, | ||
zzz: { | ||
title: '绝区零', | ||
gids: 8, | ||
}, | ||
dby: { | ||
title: '大别野', | ||
gids: 5, | ||
default_forum: 'tongren', | ||
forums: { | ||
tongren: { | ||
title: '同人', | ||
forum_id: 39, | ||
}, | ||
cos: { | ||
title: 'COS', | ||
forum_id: 47, | ||
}, | ||
}, | ||
}, | ||
}; | ||
|
||
// 排行榜分类 | ||
const RANKING_TYPE_MAP = { | ||
daily: { | ||
id: 1, | ||
title: '日榜', | ||
}, | ||
weekly: { | ||
id: 2, | ||
title: '周榜', | ||
}, | ||
monthly: { | ||
id: 3, | ||
title: '月榜', | ||
}, | ||
}; | ||
|
||
module.exports = { | ||
DATA_MAP, | ||
RANKING_TYPE_MAP, | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,6 @@ | ||
module.exports = function (router) { | ||
router.get('/bbs/official/:gids/:type?/:page_size?/:last_id?', require('./bbs')); | ||
router.get('/bbs/img-ranking/:game/:routeParams?', require('./bbs/img-ranking')); | ||
router.get('/bbs/official/:gids/:type?/:page_size?/:last_id?', require('./bbs/official')); | ||
router.get('/sr/:location?/:category?', require('./sr/news')); | ||
router.get('/ys/:location?/:category?', require('./ys/news')); | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters