From 4a634710ef299c087a8f0b4f62ad02e2c6239792 Mon Sep 17 00:00:00 2001 From: OceanJiang Date: Mon, 5 Dec 2022 08:52:40 +0800 Subject: [PATCH] =?UTF-8?q?Create=20Season.md=20=E6=BC=AB=E7=94=BB?= =?UTF-8?q?=E8=B5=9B=E5=AD=A3=20(#539)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Create season.md * Create Season.md * Update README.md * Update Season.md --- README.md | 1 + manga/Season.md | 439 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 440 insertions(+) create mode 100644 manga/Season.md diff --git a/README.md b/README.md index 0ba3e07..903e44d 100644 --- a/README.md +++ b/README.md @@ -205,6 +205,7 @@ PS:所有 rest api 均可使用 https,文档中为了统一写作`http` (除 - [x] [签到](manga/ClockIn.md) - [x] [积分商城](manga/point_shop.md) - [x] [漫画操作](manga/Comic.md) + - [x] [漫画赛季](manga/Season.md) - [x] [漫读券/已购相关](manga/User.md) - [x] [下载](manga/Download.md) - [x] [data.index解析](manga/index_file.md) diff --git a/manga/Season.md b/manga/Season.md new file mode 100644 index 0000000..225144c --- /dev/null +++ b/manga/Season.md @@ -0,0 +1,439 @@ +# 漫画赛季 + +- [漫画赛季](#漫画赛季) + - [获取赛季信息](#获取赛季信息) + - [赛季奖励领取](#赛季奖励领取) + +_漫画赛季仅在 app 端可见,但可以使用 Cookie 鉴权_ + +## 获取赛季信息 + +> https://manga.bilibili.com/twirp/user.v1.Season/GetSeasonInfo + +_请求方式:POST_ + +接口不鉴权可查看基本信息,鉴权后可查看赛季个人信息和赛季规则。 + +认证方式:Cookie(SESSDATA)/ APP + +**json 回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | -------- | ---- | +| code | num | 返回值 | | +| msg | str | 错误信息 | | +| data | obj | 信息本体 | | + +`data` 对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------------ | ----- | ------------------ | -------------------------- | +| current_time | str | 当前时间字符串 | ISO 8601 | +| start_time | str | 赛季开始 | ISO 8601 | +| end_time | str | 赛季结束 | ISO 8601 | +| remain_amount | num | 拥有积分 | 未登录为 `0` | +| season_id | str | 第几个赛季 | | +| tasks | array | 待领取奖励的任务 | 未登录/没有可领取时为 `[]` | +| welfare | array | 赛季奖励 | | +| next | obj | 未知 | 未登录为 `null` | +| cover | str | 版头图片 | | +| today_tasks | array | 今日的任务完成情况 | | +| text | obj | 赛季相关文案 | 未登录为 `null` | +| season_clock_in | obj | | | +| announcement | obj | 未知 | 未登录为 `null` | +| lottery | obj | | | +| mission_point_rate | str | | | +| season_title | str | 赛季标题 | | +| point_rate | obj | | | +| rank | obj | | | + +`data` 对象的 `rank`: + +| 字段 | 类型 | 内容 | 备注 | +| ---------- | ---- | ----- | ---- | +| is_visible | bool | false | | + +`data` 对象的 `tasks`: + +| 字段 | 类型 | 内容 | 备注 | +| ------ | ---- | ---------- | ----------------------- | +| title | str | 任务描述 | | +| id | str | | | +| status | num | 任务状态 | 应该都是`1`:待领取奖励 | +| type | num | | 与 today_tasks 的一致 | +| amount | num | 可获取积分 | | +| ctime | str | 完成时间 | ISO 8601 | + +`data` 对象的 `next`: + +| 字段 | 类型 | 内容 | 备注 | +| ------------ | ---- | ---- | ---- | +| title | str | 空 | | +| amount | num | 0 | | +| gap_time | num | 0 | | +| current_time | num | 0 | | + +`data` 对象的 `text`: + +| 字段 | 类型 | 内容 | 备注 | +| ------------ | ---- | ------------ | ---- | +| notice | str | 赛季公告 | | +| clonckInRule | str | 赛季签到规则 | | + +`data` 对象的 `announcement`: + +| 字段 | 类型 | 内容 | 备注 | +| -------- | ---- | ----- | ---- | +| title | str | 空 | | +| jump_url | str | 空 | | +| enable | bool | false | | + +`data` 对象的 `point_rate`: + +| 字段 | 类型 | 内容 | 备注 | +| ------------- | ---- | ---- | ---- | +| sign_in | num | 0 | | +| game | num | 0 | | +| daily_mission | num | 0 | | +| week_mission | num | 0 | | + +`data` 对象的 `lottery`: + +| 字段 | 类型 | 内容 | 备注 | +| ---------------------- | ---- | ------------ | ---- | +| lottery_act_id | str | '0' | | +| enable_lottery | bool | 是否开启抽奖 | | +| lottery_id | str | '0' | | +| advance_lottery_act_id | str | '0' | | +| advance_pool_id | str | '0' | | + +`data` 对象的 `season_clock_in`: + +| 字段 | 类型 | 内容 | 备注 | +| ----------------- | ---- | ---------------- | ---- | +| is_super_luck | bool | | | +| draw_luck_time | str | | | +| prize_type | num | | | +| prize_title | str | | | +| add_up_sign | num | 赛季连续签到天数 | | +| title | str | 签到标题 | | +| sign_old_amount | num | | | +| preluck_amount | num | | | +| continuous_days | num | 连续签到天数 | | +| address_id | str | | | +| has_super_prize | bool | | | +| subtitle | str | 签到子标题 | | +| prize_image | str | | | +| prize_target_days | num | | | +| prize_amount | num | | | +| tomorrow_amount | num | 明日签到积分 | | +| entrance_tag | str | | | + +`data` 对象的 `today_tasks`: + +| 字段 | 类型 | 内容 | 备注 | +| ---------- | ---------- | ------------ | ------------------------------------------- | +| type | num | | | +| title | str | 任务标题 | 可能为空字符串 | +| amount | num | 可获得积分 | | +| status | num | 完成状态 | 0:未完成
1:待领取奖励
2:已完成 | +| duration | num | 耗时(分) | 直接完成的为 0 | +| comics | comic 数组 | 任务指定漫画 | 仅`type=22`时有内容,所有账号是一致的 | +| page_url | str | 空 | | +| progress | num | 已完成进度 | | +| sub_id | num | | `type` 一致时有效 | +| share_type | num | `0` | | + +`today_tasks`对象的 `comics`: + +| 字段 | 类型 | 内容 | 备注 | +| -------------- | -------- | -------- | ---- | +| comic_id | num | 漫画 id | | +| title | str | 漫画名称 | | +| vertical_cover | str | 漫画封面 | | +| styles | str 数组 | 漫画类型 | | + +`data` 对象的 `welfare`: + +| 字段 | 类型 | 内容 | 备注 | +| --------------- | ---- | ------------ | --------------------------------------------------------- | +| type | num | 奖励类型 | 200-限免卡
202-漫读券
203-优惠券
205-最终宝箱 | +| success | num | 兑换状态 | 0-未兑换
2-已兑换 | +| exchange_amount | num | 积分消耗 | | +| boss_welfare | bool | 最终奖励 | | +| boss_remain | num | 最终奖励剩余 | | +| rank | num | 顺序 | | +| title | str | 空 | | +| url | str | 空 | | +| kind_address_id | str | '0' | | + +**示例:** + +```bash +curl -X POST https://manga.bilibili.com/twirp/user.v1.Season/GetSeasonInfo +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "msg": "", + "data": { + "current_time": "2022-11-30T15:12:00+08:00", + "start_time": "2022-11-14T00:00:00+08:00", + "end_time": "2022-12-11T23:59:00+08:00", + "remain_amount": 0, + "season_id": "35", + "tasks": [], + "welfare": [ + { + "type": 200, + "success": 0, + "exchange_amount": 100, + "boss_welfare": false, + "boss_remain": 0, + "rank": 1, + "title": "", + "url": "", + "kind_address_id": "0" + }, + // 中间的省略 + { + "type": 205, + "success": 0, + "exchange_amount": 0, + "boss_welfare": true, + "boss_remain": 0, + "rank": 21, + "title": "", + "url": "", + "kind_address_id": "0" + } + ], + "next": null, + "cover": "https://i0.hdslb.com/bfs/manga-static/b81fcd291cff74965b71d67e7df261de5790c2cd.png", + "today_tasks": [ + { + "type": 18, + "title": "", + "amount": 20, + "status": 0, + "duration": 30, + "comics": [], + "page_url": "", + "progress": 0, + "sub_id": 1, + "share_type": 0 + }, + { + "type": 20, + "title": "", + "amount": 20, + "status": 0, + "duration": 3, + "comics": [], + "page_url": "", + "progress": 0, + "sub_id": 1, + "share_type": 0 + }, + { + "type": 22, + "title": "", + "amount": 50, + "status": 0, + "duration": 15, + "comics": [ + { + "comic_id": 32190, + "title": "我的成就有点多", + "vertical_cover": "https://i0.hdslb.com/bfs/manga-static/efc403e323656fad24335aef007af5f318879597.png", + "styles": ["都市"] + }, + { + "comic_id": 30538, + "title": "我知道你的秘密", + "vertical_cover": "https://i0.hdslb.com/bfs/manga-static/607f2c13afcf82ebba98f18213033d93bba7d58a.jpg", + "styles": ["悬疑"] + }, + { + "comic_id": 25874, + "title": "桃花宝典", + "vertical_cover": "http://i0.hdslb.com/bfs/manga-static/bb1d33004af7dfbf197572cb9ef1c5fdd19e17a8.jpg", + "styles": ["都市"] + } + ], + "page_url": "", + "progress": 0, + "sub_id": 1, + "share_type": 0 + }, + { + "type": 17, + "title": "阅读3分钟", + "amount": 10, + "status": 0, + "duration": 3, + "comics": [], + "page_url": "", + "progress": 0, + "sub_id": 1, + "share_type": 0 + }, + { + "type": 17, + "title": "阅读5分钟", + "amount": 10, + "status": 0, + "duration": 5, + "comics": [], + "page_url": "", + "progress": 0, + "sub_id": 2, + "share_type": 0 + }, + { + "type": 17, + "title": "阅读10分钟", + "amount": 20, + "status": 0, + "duration": 10, + "comics": [], + "page_url": "", + "progress": 0, + "sub_id": 3, + "share_type": 0 + }, + { + "type": 17, + "title": "阅读20分钟", + "amount": 40, + "status": 0, + "duration": 20, + "comics": [], + "page_url": "", + "progress": 0, + "sub_id": 4, + "share_type": 0 + }, + { + "type": 17, + "title": "阅读30分钟", + "amount": 60, + "status": 0, + "duration": 30, + "comics": [], + "page_url": "", + "progress": 0, + "sub_id": 5, + "share_type": 0 + }, + { + "type": 19, + "title": "每日首次玩猜拳", + "amount": 5, + "status": 0, + "duration": 1, + "comics": [], + "page_url": "", + "progress": 0, + "sub_id": 1, + "share_type": 0 + }, + { + "type": 1, + "title": "打开系统通知", + "amount": 5, + "status": 0, + "duration": 0, + "comics": [], + "page_url": "", + "progress": 0, + "sub_id": 0, + "share_type": 0 + }, + { + "type": 2, + "title": "设置个人偏好", + "amount": 5, + "status": 0, + "duration": 0, + "comics": [], + "page_url": "", + "progress": 0, + "sub_id": 0, + "share_type": 0 + } + ], + "text": null, + "season_clock_in": { + "is_super_luck": false, + "draw_luck_time": "", + "prize_type": 0, + "prize_title": "", + "add_up_sign": 0, + "title": "", + "sign_old_amount": 0, + "preluck_amount": 0, + "continuous_days": 0, + "address_id": "0", + "has_super_prize": false, + "subtitle": "", + "prize_image": "", + "prize_target_days": 0, + "prize_amount": 0, + "tomorrow_amount": 0, + "entrance_tag": "" + }, + "announcement": null, + "lottery": { + "lottery_act_id": "0", + "enable_lottery": true, + "lottery_id": "0", + "advance_lottery_act_id": "0", + "advance_pool_id": "0" + }, + "mission_point_rate": 0, + "season_title": "初冬赛季", + "point_rate": { "sign_in": 0, "game": 0, "daily_mission": 0, "week_mission": 0 }, + "rank": { "is_visible": false } + } +} +``` + +
+ +## 赛季奖励领取 + +> https://manga.bilibili.com/twirp/user.v1.Season/TakeSeasonGifts + +_请求方式:POST_ + +认证方式:Cookie(SESSDATA)/ APP + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| --------- | ---- | ------- | ------ | --------------- | +| season_id | num | 赛季 id | 必要 | 必须为本赛季 id | + +**json 回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | -------- | ---- | +| code | num | 返回值 | | +| msg | str | 错误信息 | | + +`code` - `msg` 对照表: + +| code | msg | 备注 | +| ---- | ------------------------------------ | ---------------------------- | +| 0 | | 领取成功 | +| 2 | 当前没有正在进行的赛季,无法兑换奖励 | season_id 字段不正确 | +| 7 | 任务已领取或者未完成 | 没有已经完成的 `today_tasks` |