diff --git a/danmaku/action.md b/danmaku/action.md
index 13bfa8c..7134e5b 100644
--- a/danmaku/action.md
+++ b/danmaku/action.md
@@ -67,3 +67,46 @@ curl -b "SESSDATA=xxx" -d "type=1&oid=62131&msg=%e5%89%8d%e6%9d%a5%e8%80%83%e5%8
}
```
+
+
+## 撤回弹幕
+
+> http://api.bilibili.com/x/dm/recall
+
+*方式:POST*
+
+仅能撤回自己两分钟内的弹幕,且每天只有3次机会
+
+需要登录(SESSDATA)
+
+**参数( application/x-www-form-urlencoded ):**
+
+| 参数名 | 类型 | 内容 | 必要性 | 备注 |
+| ------ | ---- | ------------------- | ------ | ---- |
+| dmid | data | 弹幕ID | 必要 | |
+| cid | data | 视频CID | 必要 | |
+| csrf | data | cookies中的bili_jct | 必要 | |
+
+**json回复:**
+
+根对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| ------- | ---- | -------- | ------------------------------------------------------------ |
+| code | num | 返回值 | 0:成功
-101:账号未登录
-102:账号被封停
-111:csrf校验失败
-400:请求错误
-404:无此项
36301:撤回失败,弹幕发送已过2分钟
36302:撤回失败,弹幕已经被删除或撤回
36303:撤回失败,今天撤回的机会已经用完
**(其他错误码有待补充)** |
+| message | str | 错误信息 | 成功后显示剩余次数 |
+| ttl | num | 1 | 作用尚不明确 |
+
+**示例:**
+
+撤回视频CID为`168901231`弹幕ID为`32310301474947077`的弹幕
+
+curl -b "SESSDATA=xxx" -d "dmid=32310301474947077&cid=168901231&csrf=xxx" "http://api.bilibili.com/x/dm/recall"
+
+```json
+{
+ "code": 0,
+ "message": "撤回成功,你还有3次撤回机会"
+}
+```
+
diff --git a/history&toview/play_history.md b/history&toview/play_history.md
new file mode 100644
index 0000000..c73ed04
--- /dev/null
+++ b/history&toview/play_history.md
@@ -0,0 +1,373 @@
+# 播放历史
+
+## 查询视频播放历史
+
+> http://api.bilibili.com/x/v2/history
+
+*方式:GET*
+
+需要登录(SESSDATA)
+
+**参数:**
+
+| 参数名 | 类型 | 内容 | 必要性 | 备注 |
+| ------ | ---- | -------- | ------ | --------- |
+| pn | url | 页码 | 非必要 | 默认为1 |
+| ps | url | 每页项数 | 非必要 | 默认为100 |
+
+**json回复:**
+
+根对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| ------- | ------ | ------------ | ------------------------------------------------- |
+| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误 |
+| message | str | 错误信息 | 默认为0 |
+| ttl | num | 1 | 作用尚不明确 |
+| data | arrary | 历史记录列表 | |
+
+`data`数组:
+
+| 项 | 类型 | 内容 | 备注 |
+| ---- | ---- | ------------- | ------------------------------------------ |
+| 0 | obj | 历史观看1 | |
+| n | obj | 历史观看(n+1) | 按照观看顺序排列
项数为总计观看视频数 |
+| …… | obj | …… | …… |
+
+`data`数组中的对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| ------------- | ---- | ------------------------------ | ------------------------------------------------------------ |
+| aid | num | 视频avID | |
+| videos | num | 视频分P总数 | 默认为1 |
+| tid | num | 分区ID | |
+| tname | str | 子分区名称 | |
+| copyright | num | 版权标志 | 1:自制
2:转载 |
+| pic | str | 视频封面图片url | |
+| title | str | 视频标题 | |
+| pubdate | num | 视频上传时间 | 时间戳 |
+| ctime | num | 视频审核通过时间 | 时间戳 |
+| desc | str | 视频简介 | |
+| state | num | 0 | 作用尚不明确 |
+| attribute | num | ??? | 作用尚不明确 |
+| duration | num | 视频总计持续时长(所有分P) | 单位为秒 |
+| rights | obj | 视频属性标志 | |
+| owner | obj | 视频UP主信息 | |
+| stat | obj | 视频状态数 | |
+| dynamic | str | 视频同步发布的的动态的文字内容 | 无为空 |
+| cid | num | 视频1P CID | |
+| dimension | obj | 视频1P分辨率 | |
+| bangumi | obj | 番剧/影视信息 | 非番剧/影视无此项 |
+| cheese | obj | 课程信息 | 非课程无此项 |
+| favorite | bool | 是否已收藏 | true:已收藏
false:未收藏 |
+| type | num | 视频属性 | 3:普通视频
4:番剧/影视
10:课程 |
+| sub_type | num | 附视频属性 | 0:普通视频
1:番剧
2:电影
3:纪录片
4:国创
5:电视剧
7:综艺 |
+| device | num | 观看设备 | 1 3 5 7:手机端
2:PC端
4 6:PAD端
33:TV端
0:其他 |
+| page | obj | 分P信息 | |
+| count | num | 分P数 | 非投稿视频无此项 |
+| progress | num | 观看进度 | 单位为秒 |
+| view_at | num | 观看时间 | 时间戳 |
+| kid | num | 视频avID | |
+| business | str | 视频类型标识 | archive:用户投稿视频
pgc:番剧/影视
cheese:课程 |
+| redirect_link | str | 重定向url | |
+| bvid | str | 视频bvID | |
+
+`data`数组中的对象中的`rights`对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --------------- | ---- | ---------------- | ---------------------------------------- |
+| bp | num | 0 | 作用尚不明确 |
+| elec | num | 0 | 作用尚不明确 |
+| download | num | 允许下载标志 | 0:不允许
1:允许 |
+| movie | num | 视频时电影标志 | 0:否
1:是 |
+| pay | num | 仅会员可观看标志 | 0:无
1:有 |
+| hd5 | num | 有高码率标志 | 0:无
1:有 |
+| no_reprint | num | 禁止转载标志 | 0:无
1:禁止 |
+| autoplay | num | 可自动播放标志 | 0:无
1:有 区别影视番剧与普通视频 |
+| ugc_pay | num | 0 | 作用尚不明确 |
+| is_cooperation | num | 视频合作标志 | 0:无
1:是 |
+| ugc_pay_preview | num | 0 | 作用尚不明确 |
+| no_background | num | 0 | 作用尚不明确 |
+
+`data`数组中的对象中的`owner`对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| ---- | ---- | -------- | ---- |
+| mid | num | UP主UID | |
+| name | str | UP主昵称 | |
+| face | str | UP主头像 | |
+
+`data`数组中的对象中的`stat`对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| ---------- | ---- | ------------------------------ | ------------ |
+| aid | num | 视频avID | |
+| view | num | 普通:观看次数
屏蔽时:-1 | |
+| danmaku | num | 弹幕条数 | |
+| reply | num | 评论条数 | |
+| favorite | num | 收藏人数 | |
+| coin | num | 投币枚数 | |
+| share | num | 分享次数 | |
+| now_rank | num | 0 | 作用尚不明确 |
+| his_rank | num | 历史最高排行 | |
+| like | num | 获赞次数 | |
+| dislike | num | 0 | 作用尚不明确 |
+| evaluation | str | 视频评分 | 默认为空 |
+
+`data`数组中的对象中的`pages`数组:
+
+| 项 | 类型 | 内容 | 备注 |
+| ---- | ---- | ---------- | ------------- |
+| 0 | obj | 1P内容 | 无分P仅有此项 |
+| n | obj | (n+1)P内容 | |
+| …… | obj | …… | …… |
+
+`pages`数组中的对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --------- | ---- | --------------- | ------------------------------------ |
+| cid | num | 当前分P CID | |
+| page | num | 当前分P | |
+| from | str | 视频来源 | vupload:用户上传
hunan:芒果TV |
+| part | str | 当前分P标题 | |
+| duration | num | 当前分P持续时间 | 单位为秒 |
+| vid | str | 空 | 作用尚不明确 |
+| weblink | str | 空 | 作用尚不明确 |
+| dimension | obj | 当前分P分辨率 | |
+
+`pages`数组中的对象中的`dimension`对象(同`data`数组中的对象中的`dimension`对象):
+
+| 字段 | 类型 | 内容 | 备注 |
+| ------ | ---- | ------------ | ------------ |
+| width | num | 当前分P 宽度 | 可能为0 |
+| height | num | 当前分P 高度 | 可能为0 |
+| rotate | num | 0 | 作用尚不明确 |
+
+`data`数组中的对象`bangumi`对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| -------------- | ---- | --------------- | ------------ |
+| cover | str | 番剧封面图片url | |
+| ep_id | num | 番剧epID | |
+| episode_status | num | ??? | |
+| follow | num | 0 | 作用尚不明确 |
+| long_title | str | 单集标题 | |
+| season | obj | 剧集信息 | |
+| title | str | 集数 | |
+
+`bangumi`中的`season`对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --------------- | ---- | ------------ | ---------------------- |
+| is_finish | num | 是否完结 | 0:连载中
1:完结 |
+| newest_ep_id | num | 最细一话epID | |
+| newest_ep_index | str | 最细一话集数 | |
+| season_id | num | 番剧ssID | |
+| season_status | num | ??? | |
+| season_type | num | ??? | |
+| title | str | 番剧标题 | |
+| total_count | num | 总集数 | |
+
+`data`数组中的对象`cheese`对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| ----------- | ---- | --------------- | ---- |
+| cover | str | 课程封面图片url | |
+| long_title | str | 完整标题 | |
+| number | str | 本集数 | |
+| season_id | num | 课程ssID | |
+| update_info | str | 总集数 | |
+
+**示例:**
+
+查询当前视频历史记录列表
+
+http://api.bilibili.com/x/v2/history?ps=5&pn=1
+
+```json
+{
+ "code": 0,
+ "message": "0",
+ "ttl": 1,
+ "data": [
+ {
+ "aid": 96523832,
+ "videos": 1,
+ "tid": 33,
+ "tname": "连载动画",
+ "copyright": 2,
+ "pic": "http://i0.hdslb.com/bfs/archive/dfc29be381565ee041a0ec9cfc7a32f8a63f76cd.jpg",
+ "title": "【1月】异度侵入 ID:INVADED 12【独家正版】",
+ "pubdate": 1584289800,
+ "ctime": 1584289800,
+ "desc": "#12",
+ "state": 0,
+ "attribute": 338688,
+ "duration": 1481,
+ "redirect_url": "https://www.bilibili.com/bangumi/play/ep307457",
+ "rights": {
+ "bp": 0,
+ "elec": 0,
+ "download": 0,
+ "movie": 0,
+ "pay": 1,
+ "hd5": 1,
+ "no_reprint": 0,
+ "autoplay": 0,
+ "ugc_pay": 0,
+ "is_cooperation": 0,
+ "ugc_pay_preview": 0,
+ "no_background": 0
+ },
+ "owner": {
+ "mid": 928123,
+ "name": "哔哩哔哩番剧",
+ "face": "http://i1.hdslb.com/bfs/face/7a8412cbacb9fd18f40ddbbf0ad183e45afc1365.jpg"
+ },
+ "stat": {
+ "aid": 96523832,
+ "view": 4772927,
+ "danmaku": 108890,
+ "reply": 48584,
+ "favorite": 46,
+ "coin": 61768,
+ "share": 290,
+ "now_rank": 0,
+ "his_rank": 0,
+ "like": 1241,
+ "dislike": 0
+ },
+ "dynamic": "",
+ "cid": 164789275,
+ "dimension": {
+ "width": 1920,
+ "height": 1080,
+ "rotate": 0
+ },
+ "favorite": false,
+ "type": 4,
+ "sub_type": 1,
+ "device": 3,
+ "page": {
+ "cid": 164789275,
+ "page": 1,
+ "from": "vupload",
+ "part": "ID_INVADED_112.encoded",
+ "duration": 1481,
+ "vid": "",
+ "weblink": "",
+ "dimension": {
+ "width": 1920,
+ "height": 1080,
+ "rotate": 0
+ }
+ },
+ "bangumi": {
+ "ep_id": 307457,
+ "title": "12",
+ "long_title": "CHANNELED",
+ "episode_status": 13,
+ "follow": 0,
+ "cover": "http://i0.hdslb.com/bfs/archive/dfc29be381565ee041a0ec9cfc7a32f8a63f76cd.jpg",
+ "season": {
+ "season_id": 29310,
+ "title": "异度侵入 ID:INVADED",
+ "season_status": 13,
+ "is_finish": 1,
+ "total_count": 13,
+ "newest_ep_id": 307774,
+ "newest_ep_index": "13",
+ "season_type": 1
+ }
+ },
+ "progress": 277,
+ "view_at": 1588831600,
+ "kid": 29310,
+ "business": "pgc",
+ "redirect_link": "https://www.bilibili.com/bangumi/play/ep307457",
+ "bvid": "BV1K7411f7uu"
+ },
+ {
+ "aid": 497899395,
+ "videos": 1,
+ "tid": 189,
+ "tname": "电脑装机",
+ "copyright": 1,
+ "pic": "http://i0.hdslb.com/bfs/archive/fd4e0893b234ee729cf15198065eced98367ebfe.jpg",
+ "title": "600元的2007款iMac,如今过时了吗?",
+ "pubdate": 1587727345,
+ "ctime": 1587708111,
+ "desc": "苹果东西是真的保值,酷睿2现在都还能卖的这么贵。第一次使用4K画质进行拍摄,应该比以前清楚一些。如有问题请在评论区指出,谢谢!",
+ "state": 0,
+ "attribute": 16768,
+ "duration": 389,
+ "mission_id": 13106,
+ "rights": {
+ "bp": 0,
+ "elec": 0,
+ "download": 0,
+ "movie": 0,
+ "pay": 0,
+ "hd5": 1,
+ "no_reprint": 1,
+ "autoplay": 1,
+ "ugc_pay": 0,
+ "is_cooperation": 0,
+ "ugc_pay_preview": 0,
+ "no_background": 0
+ },
+ "owner": {
+ "mid": 3391089,
+ "name": "数字云糕Official",
+ "face": "http://i2.hdslb.com/bfs/face/238dfbca5dda5de2d5ba95ee4e99804714e2b5e2.jpg"
+ },
+ "stat": {
+ "aid": 497899395,
+ "view": 23325,
+ "danmaku": 92,
+ "reply": 115,
+ "favorite": 195,
+ "coin": 132,
+ "share": 23,
+ "now_rank": 0,
+ "his_rank": 0,
+ "like": 555,
+ "dislike": 0
+ },
+ "dynamic": "#IMAC##APPLE##MAC# 苹果东西是真的保值,酷睿2现在都还能卖的这么贵。第一次使用4K画质进行拍摄,应该比以前清楚一些。",
+ "cid": 182570131,
+ "dimension": {
+ "width": 1920,
+ "height": 1080,
+ "rotate": 0
+ },
+ "favorite": false,
+ "type": 3,
+ "sub_type": 0,
+ "device": 3,
+ "page": {
+ "cid": 182570131,
+ "page": 1,
+ "from": "vupload",
+ "part": "iMac",
+ "duration": 389,
+ "vid": "",
+ "weblink": "",
+ "dimension": {
+ "width": 1920,
+ "height": 1080,
+ "rotate": 0
+ }
+ },
+ "count": 1,
+ "progress": -1,
+ "view_at": 1588828357,
+ "kid": 497899395,
+ "business": "archive",
+ "redirect_link": "https://www.bilibili.com/video/av497899395",
+ "bvid": "BV1NK41157EF"
+ }
+ ]
+}
+```
+
diff --git a/video/info.md b/video/info.md
index db8f352..80a172c 100644
--- a/video/info.md
+++ b/video/info.md
@@ -42,7 +42,7 @@
| ctime | num | 视频审核通过时间 | 时间戳 |
| desc | str | 视频简介 | |
| state | num | 0 | 作用尚不明确 |
-| attribute | num | | 作用尚不明确 |
+| attribute | num | ??? | 作用尚不明确 |
| duration | num | 视频总计持续时长(所有分P) | 单位为秒 |
| mission_id | num | 视频参与的活动ID | 无为0 |
| redirect_url | str | 重定向url | 用于番剧&影视的av->ep |
@@ -107,7 +107,7 @@
| n | obj | (n+1)P内容 | |
| …… | obj | …… | …… |
-数组`pages`中的对象:
+`pages`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ---- | --------------- | ------------------------------------ |
@@ -120,7 +120,7 @@
| weblink | str | 空 | 作用尚不明确 |
| dimension | obj | 当前分P分辨率 | |
-数组`pages`中的对象中的`dimension`对象:(同`data`中的`dimension`对象)
+`pages`数组中的对象中的`dimension`对象(同`data`中的`dimension`对象):
| 字段 | 类型 | 内容 | 备注 |
| ------ | ---- | ------------ | ------------ |
@@ -143,7 +143,7 @@
| n | obj | 字幕(n+1) | |
| …… | obj | …… | …… |
-数组`list`中的对象:
+`list`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------ | ---- | ------------------- | ---- |
@@ -155,7 +155,7 @@
| subtitle_url | str | json格式字幕文件url | |
| author | obj | 字幕上传者信息 | |
-数组`list`中的对象中的`author`对象:
+`list`数组中的对象中的`author`对象:
| 字段 | 类型 | 内容 | 备注 |
| --------------- | ---- | ----------------- | ------------ |
@@ -177,7 +177,7 @@
| n | obj | 合作成员(n+1) | |
| …… | obj | …… | …… |
-数组`staff`中的对象:
+`staff`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | -------------- | ---- |
@@ -189,7 +189,7 @@
| official | obj | 成员认证信息 | |
| follower | num | 成员粉丝数 | |
-数组`staff`中的对象中的`vip`对象:
+`staff`数组中的对象中的`vip`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---------- | ---- | ------------ | ----------------------------------- |
@@ -197,7 +197,7 @@
| status | num | 会员状态 | 0:无
1:有 |
| theme_type | num | 0 | |
-数组`staff`中的对象中的`official`对象:
+`staff`数组中的对象中的`official`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----- | ---- | ------------ | ----------------------------------------------- |