youtube-dl是網上開發的專門用於下載Youtube視頻的軟件,但它真正牛逼的地方在於還支持其它視頻網站的下載,包括愛情動作片們,其中pornhub,xvideo等赫然在列,甚至還有國內的優酷網、B站等。
以下是安裝方法,使用的系統是debian,若因爲時間間隔太久,該方法失效,則可以直接參考軟件作者寫的最新方法(https://rg3.github.io/youtube-dl/download.html),作者用的是sudo,我是直接在root下安裝的,等我什麼時候弄懂了怎麼開sudo再寫篇文吧。
我沒裝curl,所以用的是wget。若wget沒裝,可以先裝wget:
apt-get update
apt-get install wget -y
接下來是安裝youtube-dl兩行代碼:
# 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會下載到當前的目錄,所以需要確保當前的目錄是哪邊,一般如果是root登錄的話,目錄就是/root,如果不想下載到root目錄下,可以用mkdir新建一個目錄,比如如下代碼會新建一個叫Test的目錄:
mkdir Test
然後使用cd命令進入到該目錄下:
cd ./Test
這就進入到root下面新建的Test目錄裏。可以使用點號.來代替當前所在的目錄地址,這樣目錄地址就不用打全了。下面這段代碼的結果和上面是一樣的,點號.取代了/root目錄:
cd /root/Test
若要回到上層目錄可以使用如下代碼:
cd --
進入到Test目錄裏後就可以使用youtube-dl下載視頻了
語法: youtube-dl 視頻網址
代碼: youtube-dl http://...
youtube-dl會自動下載最佳的視頻格式。
若不想現在最佳格式,也可以用以下代碼查看可供下載的格式:
youtube-dl -F https://www.youtube.com/watch?v=lW9Uudkx42g
然後選中想下載的格式,比如想下載138:
youtube-dl -f 138 https://www.youtube.com/watch?v=lW9Uudkx42g
youtube-dl -f 138 https://www.youtube.com/watch?v=lW9Uudkx42g
以上就是youtube-dl的簡單操作,該操作的侷限在於不能離線,也就是說如果SSH終端不小心被關掉,或者甚至網絡連接不穩定導致SSH鏈接斷掉,則下載自動終止。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
每次用youtube-dl下載視頻都需要先去指定的下載文件夾比較麻煩。下面的操作可以自動將下載完成的視頻移動到指定的文件夾。
代碼
youtube-dl -v --exec "mv {} ./Downloads/{}" 視頻地址
參數:
mv :linux移動文件的命令
{} :這個是獲取文件名參數
./Downloads/:此文件夾是當前root目錄下面的Downloads文件夾,當然也可以移動到根目錄下的非root文件夾下
視頻地址接受批量下載
更方便的操作是讓vps將指定的文件夾路徑“記住”,每次下載的時候都調用該路徑。比如我同時還安裝了transmission方便BT離線下載,我可以把下載好的小電影移動到該transmission的下載文件夾,方便我隨時將視頻做種。
方法:
root目錄下有一個.config文件夾,可以在該文件夾下創建一個配置目錄:
mkdir ./.config/youtube-dl/
編輯config文件,加入需要的參數:
vi ./.config/youtube-dl/config
以下是我自己的參數內容:
-o /root/Downloads/%(title)s.%(ext)s
--external-downloader aria2c
--external-downloader-args "-x 16 -k 1M"
--exec "mv {} /var/lib/transmission/Downloads/"
第一行是下載的地址及命名規則:root目錄下的Downloads文件夾
第二行調用aria2c外部命令
第三行設置下載進程數和塊
第四行是目標保存地址:我安裝的transmission設置的Downloads文件夾
保存完config文件後,就可以試運行下載一個視頻看是否保存到了/var/lib/transmission/Downloads:youtube-dl 視頻地址
驗證成功!
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
上面講了youtube-dl在vps上的安裝及簡單操作方法,但該方法其實只相當於一個開着的瀏覽器,瀏覽器關掉後,下載也就停掉了。這一篇主要涉及怎麼利用youtube-dl對愛情動作片進行批量下載,並讓下載在我們離線的時候也一直進行。
這裏面會用到screen、文檔編輯等操作。
準備工作:安裝screen(如果第一次使用)
使用下面代碼安裝screen,Debian下使用apt-get,Centos下使用yum:
apt-get install screen -y
方法一:直接貼網址
使用screen命令開一個session,命名該session,比如就叫video:
screen -S video
注意S要大寫,這時SSH終端會把你帶到一個空窗口。
然後使用語法youtube-dl 鏈接1 鏈接2 鏈接3 … … 就能進行批量下載了,代碼:
youtube-dl https://www.pornhub.com/view_video.php?viewkey=1763364088 https://www.pornhub.com/view_video.php?viewkey=1164813484 https://www.pornhub.com/view_video.php?viewkey=ph565707fb861b7
有多少鏈接就貼多少鏈接。
方法二:將鏈接全部保存到一個txt文件裏,一行一個
這種方法的好處是,SSH不是隨時都能用,碰到好的視頻可以先把它保存下來,然後回到家裏利用FTP上傳到需要下載的目錄。不過下面講的是現場在SSH裏製作txt文件。
首先使用cd命令去到你打算使用的下載文件夾。本例中使用的文件夾名爲Downloads。
使用vi,vim,或者nano命令新建一個txt或bat文件,這裏取名download.txt/download.bat,後者是一個批處理文件格式,將你打算下載的愛情動作片網頁鏈接保存在該txt文件裏,一行一個網址,文件保存在Downloads文件夾下面。
使用以下命令去到該文件夾裏面:
cd ./Downloads
使用screen命令開一個session,然後貼下面的代碼:
youtube-dl -ci --batch-file=download.txt
-ci 可有可無,= 可有可無
這時vps就開始下載了,貼張圖,是我正在下載的小電影:
接下來我們可以退出這個session,讓它安靜的在後臺跑着,我們可以去做其他事了,或者就可以直接關掉SSH。
退出session使用快捷鍵ctr+a, d或者ctr+a,ctr+d,~~注意快捷鍵需要在英文輸入環境下,不能在中文輸入法下,即便現在的中文輸入法在shift操作下會轉換爲英文輸入也不可以。~~退出session叫detach session。從下面的截圖我們甚至可以看出,雖然我們給這個session取名video,但screen會分配一串數字給這個session,然後在screen裏它的全名就是62718.video
使用以下命令可以再進去該session,查看下載進程,速度不是很快,所以很適合離線下載:
screen -r video
下載完後,我們可以使用如下代碼將該session給刪掉,如果不刪的話,這個session會一直保存在vps裏,如果下次再開一個screen,使用同樣一個名字,等我們再打算進去的時候,screen就不知道你打算進哪個video session了,它會把所有取名video的session都給列出來,所以爲了方便起見,最好下載好後還是把進程給殺掉。這裏我把這個取名叫video的session給刪掉:
screen -S video -X kill
或者
screen -S video -X quit
或者進入某個session後,按ctr+a,再按:quit
至於quit和kill兩者有何區別,暫時還在研究中。。。
如果我們不慎沒有把session刪掉,然後開了好幾個session,可以使用下面代碼來列出目前的session清單:
screen -ls
然後就可以使用上面講到的操作把某個session給刪掉了。或者刪掉全部的session:
pkill screen or
killall screen
如果session都已死的話,可以使用:
screen -wipe
下載完後,我們可以用FTP軟件把下載的小電影全部保存到本地硬盤裏。
最後養成良好的打掃衛生習慣,將保存好的小電影全部刪掉,節省vps硬盤空間。我們可以在FTP裏刪除,但如果文件太多的話,速度會非常慢。這時可以使用如下代碼來進行文件刪除:
首先用cd命令進入Downloads文件夾,然後:
rm *.mp4 -f
以上通配符將任何媒體格式是MP4的文件刪掉,當然我們可以使用字母和結合的方式來刪除特定的文件。
以下代碼會將Downloads文件夾下的所有文件全部刪掉:
rm *.*
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
youtube-dl有一個寫入歷史下載鏈接的方法,此方法確保將所有已下載的視頻鏈接地址寫入一個archive文件,這樣在以後下載,特別是批量下載的時候,已經下載過的視頻youtube-dl會自動跳過。語法是–archive-download /…archive文件的保存路徑…/archive.txt,比如root裏Downloads文件夾下有一個批量視頻鏈接文件list.txt,裏面寫了所有打算下載的視頻鏈接地址,使用代碼:
youtube-dl --batch-file /root/Downloads/list.txt --download-archive /root/Downloads/archive.txt
該代碼就會將所有下載後的鏈接寫入archive.txt文件,如果archive.txt文件裏有相同的鏈接,youtube-dl就會跳過下載該鏈接的視頻,同時再結合其它諸如下載視頻自動移動命令等工具,最大化利用youtube-dl的強大功能。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
下載youtube播放列表
youtube-dl -cit https://www.youtube.com/playlist?list=PLCJcQMZOafICYrx7zhFu_RWHRZqpB8fIW
找到列表,複製並替換掉PLCJcQMZOafICYrx7zhFu_RWHRZqpB8fIW即可。
例如下載播放列表選擇質量最好的MP4格式的視頻 -i跳過錯誤
youtube-dl -cit -f mp4 https://www.youtube.com/playlist?list=PLCJcQMZOafICYrx7zhFu_RWHRZqpB8fIW
那如何獲取視頻列表呢?其實我們只需要獲取到這一串列表碼即可,如PLCJcQMZOafIC81DKkddectaYwp20xDMwf。
進入用戶的播放列表界面,例如:https://www.youtube.com/user/GreatOnlineTutorials/playlists,並在源碼中找到每個播放列表的list值,拼接在https://www.youtube.com/playlist/?list=後面即可。
列表按需下載
有時候我們在下載一個不斷更新的視頻,那麼我們可以使用--playlist-start、--playlist-end 參數進行數據的下載。
youtube-dl -f 135 -cit --playlist-start 65 https://www.youtube.com/playlist\?list\=PLrrWFMyom0IocKsc1ukKFxOljEg7IT_W3