最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

600行寫了個Python視頻下載器? 聊聊現(xiàn)在的B站視頻下載方法

2020-08-04 07:20 作者:ZHY2020  | 我要投稿

先看看現(xiàn)在的B站視頻下載方法

大家刷B站的時候遇到想要下載下來的視頻。我們都知道電腦網(wǎng)頁上是不提供下載緩存功能的。

目前本人已知有以下幾種辦法下載緩存B站的視頻:

  • ?手機APP緩存:這是官方的緩存功能,但是它所緩存下來文件是音視頻分開的兩個文件,且后綴是m4s,其實這個文件并不是什么加密后的文件,只是一般的MP4換了個擴展名,m4s文件用視頻播放器就可以直接打開,想要轉(zhuǎn)成我們正常本地觀看的視頻,需經(jīng)過音視頻合并操作。

  • ?Win10?UWP客戶端緩存:這個也是官方的客戶端,雖然界面看起來相比手機APP比較簡陋,但它在某些功能上卻強于手機APP,比如視頻緩存。它可以緩存視頻為flv格式和mp4格式。mp4其實是和手機APP一樣會將音視頻分開下載,但它又可以在下載完成后自動將音視頻合并。

兩個官方客戶端在緩存視頻方面都有一個共同的缺點,他們緩存后的文件是按照稿件的aid(也就是av號),以及稿件下面每個分頁視頻的cid來存儲。這樣的方式方便程序進行識別,但對于下載的我們用戶進行歸檔非常不便。因為我們緩存的往往不會單個視頻,而是一系列。比如我需要從B站上緩存一部有100多個分P的視頻課程,每個P都有自己的子標題,用APP全部緩存后得到的是一個用aid命名的文件夾,里面又有1-100編號的子文件夾,每個文件夾內(nèi)又存著對應分頁視頻的音視頻和彈幕文件。雖然這樣用APP直接觀看沒什么問題,但這些文件依然在APP的管理下,APP隨時都有可能刪掉它們,所以我們就要自行復制出來歸檔,但一百個分頁,我不可能一個一個把它們的子標題手動重新加上。這需要下載時自動對它們重命名。

APP的緩存目錄,只有av號標識,歸檔不便

下面是兩個第三方的方法:

  • 嗶哩嗶哩助手瀏覽器插件(https://github.com/bilibili-helper/bilibili-helper-o):這個直接在網(wǎng)頁上提供了下載按鈕,并擁有自動簽到,直播開播提醒等多種功能。但它不具備一次性下載一個稿件下所有分頁的功能,且目前版本無法緩存4K畫質(zhì)(這個下個版本會支持)

bilbibili-helper
  • you-get?這個是個Python編寫的視頻下載器(https://github.com/soimort/you-get)。它不僅可以下載B站視頻,也支持其他網(wǎng)站,并可以導入cookie來下載會員內(nèi)容。但是它作為一個開源項目,支持的視頻網(wǎng)站基本是不同的coder貢獻代碼,導致其兼容程度層次不齊,有些網(wǎng)站已無法解析到視頻,卻已長時間得不到更新。雖然它對B站的支持性還算比較完善,在看過其針對B站的源碼后發(fā)現(xiàn)除去視頻它還能解析音樂資源,并且它下載得到的視頻文件也比較適合歸檔,但是他還是會有一定的bug:比如無法獲取會員畫質(zhì)的flv視頻,以及部分視頻無法獲得1080p60、720p60、1080p+畫質(zhì)。并且它的運行效率有點低。而且它是用命令操作的,雖然比較簡單且有充分的提示信息,但對小白并不友好。

you-get?命令

正好之前研究了下B站下載視頻的接口:

雖然能達成下載的目的,但這直接調(diào)接口的方法,除去裝個B,好像沒啥用,我自己也不會日常用它來緩存視頻。這分明是給程序調(diào)用準備的啊。

于是就有了長達三周的Python下載器開發(fā)工程(三周才600行,主要時間用在測試上了),8月2日終于達成了初步目標

我的PythonB站視頻下載器

1.獲取

先放上下載地址:https://github.com/Daniel2022/bilibili-downloader-py/releases (下最新的)

優(yōu)先下載zip包,保證可運行,不需要另外安裝Python解釋器等其他支持

下載對應系統(tǒng)位數(shù)即可

解壓到一個文件夾,會得到三個exe程序

不下載會員內(nèi)容,也還是建議導入一下cookie,這需要用火狐瀏覽器登錄下你的賬號

方法為視頻:BV1WT4y1j7XN?的2P?把cookies.sqlite文件復制到上面的文件夾里

不加cookie部分功能受限
如圖放置cookies.sqlite

雙擊downloader即可開啟,進入主界面

主界面

2.添加稿件(劇集)

所有輸入指令有提示(字母不區(qū)分大小寫)

現(xiàn)在還沒有添加稿件或者番劇集

鍵入“a”回車,進入添加界面

在添加界面可批量添加av號BV號以及劇集的ep_id season_id media_id

av號BV號好理解,劇集的標識又是什么?以超炮第一季舉例

我們進入觀看界面:

地址欄中為https://www.bilibili.com/bangumi/play/ss425/?ss425即season_id

任選一集觀看:

地址欄中為https://www.bilibili.com/bangumi/play/ep84340?ep84340為該集的ep_id

進入番劇介紹頁:

地址欄中為:https://www.bilibili.com/bangumi/media/md425?md425為該季media_id(這里的數(shù)值與season_id一致,而有新番會不一樣)

以上的三種編號在本程序中會均指向超炮第一季!

演示下:

3.全列表批量下載

添加好了輸入“x”返回主界面

剛才添加的已經(jīng)顯示出來了,這時候輸入指令“z”,并選擇畫質(zhì),會進入全列表下載:

最終程序目錄下會產(chǎn)生downloads目錄:(內(nèi)容類似)

文件夾名為稿件名或劇集名
每個文件夾內(nèi)容類似這樣

當前版本批量下載僅可下載flv格式

4.單獨稿件劇集下載

從主界面輸入數(shù)字選擇:

由av或BV號添加的普通稿件會提示如下:

劇集會提示如下:

這時候輸入指令“a”會把當前稿件或劇集的所有P的flv下載下來,過程與之前全列表下載類似,視頻文件存檔形式與之前一樣,不做演示

單獨輸入數(shù)字選擇P或集,會先提示選擇畫質(zhì)(此時顯示的都是該視頻可用的畫質(zhì)),接下來會提示選擇封裝flv或者MP4(這個MP4和APP緩存一樣先分開下載音視頻再合并)

選flv會直接開始下載,選擇mp4程序會檢測該畫質(zhì)下是否存在h265編碼的視頻源(h265是B站正在測試的流媒體編碼,僅在移動APP或UWP客戶端上會使用,特點節(jié)省流量),如果存在會詢問是否下載h265編碼,否則會直接下載通用的h264編碼

演示

最后關閉程序之前添加的內(nèi)容會被存儲下來,下次運行無需在此添加。

主要功能就介紹到這兒,其實還有些功能想做,比如稿件信息刷新功能。

本項目使用開源軟件aria2作下載內(nèi)核,ffmpeg合并音視頻

源碼倉庫:https://github.com/Daniel2022/bilibili-downloader-py

源碼中cookie處理部分引用了you-get以及@UnGrown?的https://github.com/mo-han/mo-han-toolbox中的相關函數(shù)。

這只是介紹我這小程序的基本功能使用。

后續(xù)會更新其的概念產(chǎn)生,設計的框架等更深的內(nèi)容,敬請期待。

Copyright @ZHY2020

600行寫了個Python視頻下載器? 聊聊現(xiàn)在的B站視頻下載方法的評論 (共 條)

分享到微博請遵守國家法律
沙河市| 福贡县| 迁安市| 鄯善县| 泰顺县| 城口县| 寻甸| 台南市| 铁岭县| 长宁县| 六安市| 安吉县| 岳西县| 湄潭县| 修文县| 宁阳县| 健康| 卢氏县| 东乡族自治县| 邵阳市| 深水埗区| 额济纳旗| 响水县| 勃利县| 威远县| 高台县| 上犹县| 兴海县| 都昌县| 莲花县| 紫金县| 金溪县| 洪雅县| 嘉禾县| 柳河县| 平凉市| 民权县| 安吉县| 罗山县| 抚宁县| 隆德县|