# 直播APP电池任务
- [获取任务进度](#获取任务进度)
- [领取电池任务](#领取电池)
> 需要发送五条弹幕才能领取
> 部分用户没有该任务
## 获取任务进度
> https://api.live.bilibili.com/xlive/app-ucenter/v1/userTask/GetUserTaskProgress
_请求方式:GET_
认证方式: APP
**url 参数:**
无
**json 回复:**
根对象:
|字段|类型|内容|备注|
|--|--|--|--|
|code|num|返回值|0:成功
-1002002:参数异常
-500:服务器异常|
|message|str|错误信息|默认为 "0"|
|ttl|str|1||
|data|obj|信息本体||
`data`对象:
|字段|类型|内容|备注|
|--|--|--|--|
|is_surplus|num|任务状态
-1:用户没有此任务
1:任务进行中
||
|status|num|状态:
0:未完成
1:进行中
2:可领取
3:已领取||
|progress|num|每日任务(发送弹幕)进度||
|target|num|每日任务(发送弹幕)数量||
|wallet|obj|钱包||
|linked_actions_progress|?|未知|有时候请求没有此字段|
|week_task|obj|每周任务|有可能为空|
|week_total|num|每周累计天数||
|week_group|num|未知||
|day_task|obj|每日任务||
`wallet`对象:
|字段|类型|内容|备注|
|--|--|--|--|
|gold|num|电池数|后两位为小数,如 `100` = `1电池`|
|silver|num|银瓜子数量||
`week_task`对象:
|字段|类型|内容|备注|
|--|--|--|--|
|reward_num|num|奖励电池数||
|minimal_day|num|需要完成天数||
|status|num|状态:
0:未完成
2:可领取
3:已领取||
|id|num|任务id||
`day_task`对象:
|字段|类型|内容|备注|
|--|--|--|--|
|status|num|状态:
0:未完成
1:进行中
2:可领取
3:已领取||
|progress|num|每日任务(发送弹幕)进度||
|target|num|每日任务(发送弹幕)数量||
查看响应示例:
未开始
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"is_surplus": 1,
"status": 0,
"progress": 0,
"target": 5,
"wallet": {
"gold": 18600,
"silver": 49592
},
"linked_actions_progress": null,
"week_task": [
{
"reward_num": 1,
"minimal_day": 3,
"status": 3,
"id": 1
},
{
"reward_num": 2,
"minimal_day": 5,
"status": 0,
"id": 2
},
{
"reward_num": 3,
"minimal_day": 7,
"status": 0,
"id": 3
}
],
"week_total": 3,
"week_group": 1,
"day_task": {
"status": 0,
"progress": 0,
"target": 5
}
}
}
```
每日任务进行中
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"is_surplus": 1,
"status": 1,
"progress": 2,
"target": 5,
"wallet": {
"gold": 18600,
"silver": 49592
},
"week_task": [
{
"reward_num": 1,
"minimal_day": 3,
"status": 3,
"id": 1
},
{
"reward_num": 2,
"minimal_day": 5,
"status": 0,
"id": 2
},
{
"reward_num": 3,
"minimal_day": 7,
"status": 0,
"id": 3
}
],
"week_total": 3,
"week_group": 1,
"day_task": {
"status": 1,
"progress": 2,
"target": 5
}
}
}
```
每日任务完成
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"is_surplus": 1,
"status": 3,
"progress": 5,
"target": 5,
"wallet": {
"gold": 18700,
"silver": 49592
},
"week_task": [
{
"reward_num": 1,
"minimal_day": 3,
"status": 3,
"id": 1
},
{
"reward_num": 2,
"minimal_day": 5,
"status": 0,
"id": 2
},
{
"reward_num": 3,
"minimal_day": 7,
"status": 0,
"id": 3
}
],
"week_total": 4,
"week_group": 1,
"day_task": {
"status": 3,
"progress": 5,
"target": 5
}
}
}
```
## 领取电池
> https://api.live.bilibili.com/xlive/app-ucenter/v1/userTask/UserTaskReceiveRewards
_请求方式:POST_
认证方式: APP
**url 参数:**
|字段|类型|内容|备注|
|--|--|--|--|
|access_key|str|APP登录Token||
|actionKey|str|appkey||
|appkey|str|1d8b6e7d45233436|[APPKEY,参考这里](https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/other/API_sign.md#%E5%B7%B2%E7%9F%A5%E7%9A%84appkey)|
|build|str|7120200|APP build号|
|c_locale|str|zh_CN||
|channel|str|xiaomi_cn_tv.danmaku.bili_20210930|或其他APP渠道号|
|device|str|android||
|disable_rcmd|num|0||
|mobi_app|str|android||
|platform|str|android||
|s_locale|str|zh_CN||
|statistics|str|{"appId":1,"platform":3,"version":"7.12.0","abtest":""}|需要URLEncoder|
|ts|num|1672917355|时间戳,单位秒|
|target_id|num|1022|可任意直播房间号|
|reward_index|str|0|任务id
0:每日任务
1~3:每周任务id|
|sign|str|签名|将以上内容根据字典顺序键值对进行`md5签名` [签名顺序参考](https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/other/API_sign.md)|
**Header 参数:**
|字段|内容|备注|
|--|--|--|
|APP-KEY|android64||
|Accept-Encoding|gzip, deflate, br||
|Connection|keep-alive||
|Content-Type|application/x-www-form-urlencoded; charset=utf-8||
|Host|api.live.bilibili.com||
|User-Agent|Mozilla/5.0 BiliDroid/7.4.0 (bbcallen@gmail.com) os/android model/22061218C mobi_app/android build/7040300 channel/xiaomi_cn_tv.danmaku.bili_20210930 innerVer/7040310 osVer/12 network/2||
|bili-http-engine|cronet||
|buvid|buvid3|web端为操作登录接口时Cookie中的`buvid3`
若登录设备无`buvid`则留空|
|env|prod||
|fp_local|992219737dd69e7d98864235335347c53476691d4482fc3e57a835e894751811|64位随机|
|fp_remote|992219737dd69e7d98864235335347c53476691d4482fc3e57a835e894751811|64位随机,同fp_local|
|session_id|99221973|fp_local头8个字符|
|x-bili-aurora-eid|WFICRlE=||
|x-bili-aurora-zone||留空|
|x-bili-mid|0|用户uid|
|x-bili-trace-id|992219737dd69e7d98864235335347c5:3476691d4482fc3e:0:0|32随机:16随机:0:0|
x-bili-trace-id、fp_local、session_id字段,建议用两个`md5`来拼接,如:
```java
String md5_1 = getMD5(System.currentTimeMillis());
String md5_2 = getMD5(System.currentTimeMillis());
String trace_id = md5_1 + ":" + md5_2.substring(0, 16) + ":0:0";
String session_id = md5_1.substring(0, 8);
String fp_local = md5_1 + md5_2;
```
**json 回复:**
_需要Brotli解压_
根对象:
|字段|类型|内容|备注|
|--|--|--|--|
|code|num|返回值|0:成功
-1002002:参数异常
-500:服务器异常
27000002:已领取过|
|message|str|错误信息|默认为 "0"|
|ttl|str|1||
|data|obj|信息本体||
`data`对象:
|字段|类型|内容|备注|
|--|--|--|--|
|num|num|领取电池数||
查看响应示例:
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"num": 1
}
}
```
```json
{
"code": 27000002,
"message": "领取失败,请重试",
"ttl": 1,
"data": {
"num": 0
}
}
```