2017年12月28日 星期四

[python]youtube-dl 選擇最好 quality 並使用 ffmpeg 合併 與 加上 playlist_index 與下載範圍

python 裡有個小工具叫做 youtube-dl,可以從 youtube 下載影片。

一般來說,只要安裝之後,在命令列輸入 youtube-dl 再加上 youtube 網址就解決了。

而我這裡算是一個綜合題。

(1) 選擇最好影片:

有兩種,一個是影音檔可選擇最好的那個檔案下載,那就是使用:

youtube-dl -f bestvideo+bestaudio --format mp4 "這裡接youtube網址"

另一個是影片中選最好的,音樂中選最好的,然後合併,那就是用:

youtube-dl -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio" --merge-output-format mp4

然而,這個需要ffmpeg/avconv 的幫忙,在 windows 的話,就是去下載 ffmpeg 的執行檔包,然後把也就是 ffmpeg.exe 與它的好朋友們放到與 youtube-dl.exe 同一層目錄裡。

(2) 下載 playlist 裡所有影片並且加上編號:

有個線上課程有存成 playlist,下載之後因為沒有順序編號而亂掉怎辦?
其實 -o 參數可以改變存檔的檔名規則,預設是 %(title)s-%(id)s.%(ext)s,所以參考說明,就加上:%(playlist_index)s,也就是:

-o  "%(playlist_index)03d-%(title)s-%(id)s.%(ext)s"

注意:如果在批次檔使用的話,% 要用 % 跳脫,所以會是:

-o  "%%(playlist_index)03d-%%(title)s-%%(id)s.%%(ext)s"
WINDOWS使用者注意,在官方說明中,使用單引號的地方,都要換成雙引號。

(3) 下載 playlist 裡的某部份

也許是下載失敗要從失敗的地方繼續,或是只要某些部份,有三個參數可用:

--playlist-start NUMBER
--playlist-end NUMBER
--playlist-items ITEM_SPEC 

(4) 只要聲音

--extract-audio
--audio-format mp3 


參考:
https://askubuntu.com/questions/486297/how-to-select-video-quality-from-youtube-dl

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

https://github.com/rg3/youtube-dl/blob/master/README.md

https://github.com/ytdl-org/youtube-dl/blob/master/README.md