日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何用you-get 下载bilibili 视频以及字幕

發布時間:2024/3/24 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何用you-get 下载bilibili 视频以及字幕 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 版本
  • 概述
  • 使用下載
  • 所以繼續研究了下 如何下載
  • 結論

版本

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

這個下載沒有問題, 但是我發現中文字幕沒有了.

所以繼續研究了下 如何下載

  • 觀察視頻, 發現字幕是可以拖動的, 于是加上firefox 斷點
  • 加上斷點后攔截請求, 發現有一個請求會初始化對應的subtitles
  • 像上面這個復制為curl 就可以測試:

    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-333489Q4e0411A155830infocwith header -H 'Referer: https://www.bilibili.com/video/BV1zE411T7nb' 后面這個是bv號
  • 解析上面的xml輸出
  • <ip>110.184.137.149</ip> <zoneid>4538384</zoneid> <zoneip></zoneip> <country>中國</country> <login>true</login> <time>1597112522</time> <name>scugxl</name> <user>11615329</user> <user_hash>3f9ed8c9</user_hash> <money>681.20</money> <face>//i0.hdslb.com/bfs/face/member/noface.jpg</face> <isadmin>false</isadmin> <permission>10000,1001</permission> <level></level> <level_info>{"current_level":4,"current_min":4500,"current_exp":8127,"next_exp":10800}</level_info> <answer_status>0</answer_status> <vip>{"vipType":0,"vipDueDate":0,"dueRemark":"","accessStatus":0,"vipStatus":0,"vipStatusWarn":""}</vip> <official_verify>{"type":-1,"desc":""}</official_verify> <block_time>0</block_time> <lastplaytime>18000</lastplaytime> <lastcid>162260003</lastcid> <aid>95051759</aid> <bvid>BV1zE411T7nb</bvid> <typeid>201</typeid> <vtype>vupload</vtype> <oriurl></oriurl> <suggest_comment>false</suggest_comment> <server>chat.bilibili.com</server> <maxlimit>1000</maxlimit> <chatid>162260003</chatid> <pid>1</pid> <duration>75:37</duration> <arctype>Original</arctype> <allow_bp>false</allow_bp> <bottom>0</bottom> <shot>false</shot> <sinapi>1</sinapi> <acceptguest>false</acceptguest> <acceptaccel>false</acceptaccel> <cache>false</cache> <broadcast_tcp>broadcast.chat.bilibili.com:4080</broadcast_tcp> <broadcast_ws>broadcast.chat.bilibili.com:4090</broadcast_ws> <broadcast_wss>broadcast.chat.bilibili.com:4095</broadcast_wss> <default_dm>0</default_dm> <dm_host>0://comment.bilibili.com,1://comment.bilibili.com/rc</dm_host> <role>0</role> <has_next>1</has_next> <online_count>6</online_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>false</is_pay_preview> <preview_toast>為創作付費,購買觀看完整視頻|購買觀看</preview_toast> <interaction></interaction> <pugv_watch_status>0</pugv_watch_status> <pugv_pay_status>0</pugv_pay_status> <pugv_season_status>0</pugv_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>1</new_broadcast> <realtime_dm>1</realtime_dm> <enable_gray_dash_playback>500</enable_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字幕
    參考的: 這里

  • 修改you-get 代碼
    修改之后的commit在這里 可以直接用我的repo. (可能需要修改下buvid的值 每個人應該不一樣 或者用 you-get的cookie file 應該也可以 我沒去測試).
  • 結論

  • 下載了所有課程并共享到百度云了 百度云 鏈接: https://pan.baidu.com/s/1S93he0skiUwAihUH309-2Q 密碼: sn5a
  • 以后有時間了把代碼merge到 you-get 中 現在懶得提PR了.
  • 有個小疑問, 有沒有什么快速的辦法在FIREFOX中搜索某個字符串是哪個url返回的呢? 可能前端的同學更加清楚
  • 修改后的代碼 在: https://github.com/gaoxingliang/you-get/
  • 總結

    以上是生活随笔為你收集整理的如何用you-get 下载bilibili 视频以及字幕的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。