系統使用的是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