2020-08-11: init 本文的工具都是这个时候的 可能后面有些支持.
最近看到这个视频课程: 【吴恩达团队Tensorflow2.0实践系列课程第一课】TensorFlow2.0中基于TensorFlow2.0的人工智能、机器学习和深度学习简 就想下载到本地 防止被和谐… 所以就使用you-get 下载. you-get 这个 repo clone下来就可以了: 官方repo. 想着以前也提交过代码 再看看也没啥大问题.
使用如下命令:
you-get --debug --playlist https://www.bilibili.com/video/BV1zE411T7nb
这个下载没有问题, 但是我发现中文字幕没有了.
curl 'https://api.bilibili.com/x/player.so?id=cid%3A162260003&aid=95051759&bvid=BV1zE411T7nb&buvid=FB2BB46F-B1F3-4BDA-A589-333489Q4e0411A155830infoc' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:78.0) Gecko/20100101 Firefox/78.0' -H 'Accept: */*' -H 'Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2' --compressed -H 'Origin: https://www.bilibili.com' -H 'Referer: https://www.bilibili.com/video/BV1zE411T7nb' -H 'Connection: keep-alive' -H $'Cookie: _uuid=3FFA2652-F830-7C37-F9A4-333489Q4e0411A155830infoc; buvid3=FB2BB46F-B1F3-4BDA-A589-33348940411A155830infoc; sid=cejpsw6m; CURRENT_FNVAL=16; LIVE_BUVID=AUTO9515820831073003; rpdid=|(k)~RY~mkk|0J\'ul)k|)Juuk; im_notify_type_11615329=0; DedeUserID=11615329; DedeUserID__ckMd5=7c197013cd07c4b6; SESSDATA=b2ce8c5b%2C1600861501%2Ca9549*31; bili_jct=b7000d5d160ed086c798d55808a55f75; PVID=2; CURRENT_QUALITY=80; bsource=search_google; flash_player_gray=false; html5_player_gray=false; bfe_id=6f285c892d9d3c1f8f020adad8bed553' -H 'Pragma: no-cache' -H 'Cache-Control: no-cache' -H 'TE: Trailers'
这里面需要cid, aid, bvid和 buvid. 只有最后这个buvid不知道是干啥的, 折腾了很久 发现 这个是cookie 中的uuid. 然后经过一些测试后 发现该请求 还需要一个Reffer 不然会报错-412 (应该就是412 估计是b站自己定义的错误码, 412 意味着前置条件未满足):
所以获取该url的最简单地请求是:
https://api.bilibili.com/x/player.so?id=cid%3A162260003&aid=95051759&bvid=BV1zE411T7nb&buvid=FB2BB46F-B1F3-4BDA-A589-333489Q4e0411A155830infoc
with header -H 'Referer: https://www.bilibili.com/video/BV1zE411T7nb' 后面这个是bv号
<ip>110.184.137.149ip>
<zoneid>4538384zoneid>
<zoneip>zoneip>
<country>中国country>
<login>truelogin>
<time>1597112522time>
<name>scugxlname>
<user>11615329user>
<user_hash>3f9ed8c9user_hash>
<money>681.20money>
<face>//i0.hdslb.com/bfs/face/member/noface.jpgface>
<isadmin>falseisadmin>
<permission>10000,1001permission>
<level>level>
<level_info>{"current_level":4,"current_min":4500,"current_exp":8127,"next_exp":10800}level_info>
<answer_status>0answer_status>
<vip>{"vipType":0,"vipDueDate":0,"dueRemark":"","accessStatus":0,"vipStatus":0,"vipStatusWarn":""}vip>
<official_verify>{"type":-1,"desc":""}official_verify>
<block_time>0block_time>
<lastplaytime>18000lastplaytime>
<lastcid>162260003lastcid>
<aid>95051759aid>
<bvid>BV1zE411T7nbbvid>
<typeid>201typeid>
<vtype>vuploadvtype>
<oriurl>oriurl>
<suggest_comment>falsesuggest_comment>
<server>chat.bilibili.comserver>
<maxlimit>1000maxlimit>
<chatid>162260003chatid>
<pid>1pid>
<duration>75:37duration>
<arctype>Originalarctype>
<allow_bp>falseallow_bp>
<bottom>0bottom>
<shot>falseshot>
<sinapi>1sinapi>
<acceptguest>falseacceptguest>
<acceptaccel>falseacceptaccel>
<cache>falsecache>
<broadcast_tcp>broadcast.chat.bilibili.com:4080broadcast_tcp>
<broadcast_ws>broadcast.chat.bilibili.com:4090broadcast_ws>
<broadcast_wss>broadcast.chat.bilibili.com:4095broadcast_wss>
<default_dm>0default_dm>
<dm_host>0://comment.bilibili.com,1://comment.bilibili.com/rcdm_host>
<role>0role>
<has_next>1has_next>
<online_count>6online_count>
<dm_mask>dm_mask>
<mask_new>mask_new>
<subtitle>{"allow_submit":false,"lan":"","lan_doc":"","subtitles":[{"id":23916631605379079,"lan":"zh-CN","lan_doc":"中文(中国)","is_lock":false,"subtitle_url":"//i0.hdslb.com/bfs/subtitle/dfb81041cf92b5c2ebce2540cd14c9e49674f460.json"}]}subtitle>
<player_icon>player_icon>
<view_points>view_points>
<is_pay_preview>falseis_pay_preview>
<preview_toast>为创作付费,购买观看完整视频|购买观看preview_toast>
<interaction>interaction>
<pugv_watch_status>0pugv_watch_status>
<pugv_pay_status>0pugv_pay_status>
<pugv_season_status>0pugv_season_status>
<pcdn>pcdn>
<pcdn_loader>{"flv":{"vendor":"xl","script_url":"\/\/s1.hdslb.com\/bfs\/static\/pcdnjs\/pcdn-xlflv-20.07.20.min.js","group":"eg","labels":{"pcdn_video_type":"flv","pcdn_stage":"release","pcdn_group":"eg","pcdn_version":"20.07.20","pcdn_vendor":"xl"}},"dash":{"vendor":"yf","script_url":"\/\/s1.hdslb.com\/bfs\/static\/pcdnjs\/pcdn-yfdash-20.07.03.min.js","group":"eg","labels":{"pcdn_video_type":"dash","pcdn_stage":"release","pcdn_group":"eg","pcdn_version":"20.07.03","pcdn_vendor":"yf"}}}pcdn_loader>
<options>{"is_360":false}options>
<guide_attention>guide_attention>
<new_broadcast>1new_broadcast>
<realtime_dm>1realtime_dm>
<enable_gray_dash_playback>500enable_gray_dash_playback>
上面的输出有个很重要的url就是 subtitles中的json url:
{"allow_submit":false,"lan":"","lan_doc":"","subtitles":[{"id":23916631605379079,"lan":"zh-CN","lan_doc":"中文(中国)","is_lock":false,"subtitle_url":"//i0.hdslb.com/bfs/subtitle/dfb81041cf92b5c2ebce2540cd14c9e49674f460.json"}]}
下载这个json后 我找到了最终的中文字幕:
格式如下:
4. 将json转为srt字幕
参考的: 这里