使用VPS下載YouTube視頻並上傳至百度雲網盤

系統使用的是centos 6.5,其餘unix繫系統相似python

安裝youtube-dl


傳說中的第一個大殺器終於粗線了:youtube-dl。這個工具能夠用來下載一系列國外網站的在線視頻,如油管家的。它既有本地客戶端,也能夠被部署在服務器上。


用Putty登入VPS後,依次執行如下兩條命令:


wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl


chmod a+rx /usr/local/bin/youtube-dl


而後就沒了。是的就是這麼簡單,如今你已經裝完youtube-dl,能夠在VPS上遠程下載指定的YouTube視頻了。


最簡單的命令以下:


youtube-dl video-url


把上面的這個video-url換成具體某個YouTube視頻的URL就能夠直接下載了。注意,youtube-dl會默認下載視頻到當前執行命令的目錄下。


YouTube有Playlist功能,即播放列表,你能夠用Google帳號登陸,而後就能夠把若干視頻添加保存到Playlist。若是你想要批量下載某個Playlist的視頻,就能夠把前面那條下載命令中的 video-url換成具體Playlist的連接。話句話說,想要一次下載多個YouTube視頻,你能夠考慮用這個Playlist功能。


不過呢,像本文開頭提到的這個任務,若是我要手動添加幾百個視頻到Playlist那得累到手抽筋:我得先點開每個視頻的具體連接,而後再點兩下鼠標才能將之添加進Playlist。好了不繞彎了,說這麼多,就是想烘托出youtube-dl的另外一個激動人心的功能:支持讀取下載連接列表文件。這意味着我能夠先把全部下載連接整理好後放進一個txt文件,而後讓youtube-dl去讀取這個txt文件就好了,接下來它就會自動下載所有的視頻。該方法的命令以下:


youtube-dl -a video_url.txt


這裏的 -a 參數表示讀取外部連接文件。


具體細節操做在後面會提到,請耐心往下看……


2 安裝byby


Byby是一個百度雲網盤的Python客戶端,可在Linux環境下經過命令行來操做。


在本文的操做環境下,安裝byby須要更多的步驟,byby官網沒有介紹那麼詳細,因此我參考了其餘網友的教程。


# 安裝Git


yum install git


# 安裝Python Pip


yum -y install epel-release


yum -y install python-pip


yum clean all


說明:先裝擴展源EPEL再裝Python Pip纔不會報錯。


# 安裝Requests


pip install requests


完成以上步驟後,纔開始正式安裝bypy。


依次執行如下三行命令:


git clone https://github.com/houtianze/bypy byby/


cd byby/


python bypy.py list


此時的命令行界面會出現提示,按照如下步驟來受權你的百度雲帳號使用bypy客戶端:


左鍵選中用於百度帳號受權的那行URL,便可複製該文本(在Putty中選中便可複製,不用Ctrl+C),在瀏覽器中打開此連接。
登陸你的百度帳號,而後複製受權碼。
回到Putty命令行界面,粘貼受權碼進去,回車便可開始啓動受權操做。


稍等幾秒,受權便可成功。


爲了方便在任意目錄下使用bypy命令,還須要設置以下:


cd /byby


cp bypy.py /usr/bin


完成以上設置後,若是要將VPS某個文件夾下的全部文件上傳到百度雲,最簡單的命令以下:


bypy.py upload


還能夠加參數,如 -v 能夠顯示上傳進度:


bypy.py upload -v


默認狀況下,本方案上傳到百度雲的文件所有存放在「個人應用數據 --> bypy」路徑下。


3 下載與上傳視頻


在Putty命令行界面中建立一個專門的目錄用於存放下載的視頻文件,而後CD至此目錄下,建立一個包含全部下載連接的txt文件(使用vi命令便可)。在此目錄下,執行下載命令:


youtube-dl -c -i -a video_url.txt


呃,眼尖的你可能已經發現了,上面這條命令好像多出了兩個參數?沒錯,youtube-dl提供了不少有用的附加參數,這裏用到的是:


-c 斷點續傳(若是因爲意外緣由下載中斷了,再次啓動下載命令時,能夠實現斷點續傳)
-i 忽略報錯(若是出現某些連接沒法打開或者下載的問題,會自動繞過,繼續下載其餘視頻)


下載的話通常很快,可是上傳到百度雲並無那麼快。爲了防止關閉Putty窗口後,下載/上傳進程就斷掉了,能夠考慮使用Screen遠程會話管理功能。簡單介紹就是,有了這玩意兒,你能夠在Putty中啓動下載或者上傳進程,讓其在後臺運行,而後關掉Putty離開電腦旁該幹啥幹啥去,有須要的話回來從新打開窗口就能夠看到進程依然在跑。


要檢查操做系統是否支持screen,能夠直接輸入screen而後回車,若是提示找不到這個命令,那就是系統還沒安裝好這個東西。在CentOS 7中安裝screen很簡單,一條命令而已:


yum install screen


安裝完畢後,輸入 screen -S sessionname 便可建立一個名爲 sessionname 的screen會話窗口。在此窗口中執行想要作的任務,而後同時按下 ctrl + a,鬆開後按下 d,便可將此session放到後臺去運行,並回到以前的對話窗口。在非screen對話窗口中,輸入 screen -ls 能夠列舉已有的screen進程。輸入 「screen -r 進程代碼」 就能夠再次調出正在運行的screen進程。


因爲我要上傳到百度雲的文件太多了,我不可能守在電腦前等它完成全部任務,因此screen這個功能仍是很是實用的。


本文主要參考連接:


https://github.com/rg3/youtube-dl/


https://github.com/houtianze/bypy


http://yesido.info/2015/03/linux-upload-document-to-baidu-cloud/linux

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息