背景
由于現(xiàn)在各大網(wǎng)站資源版權的保護性越來越強,很多資源都是無法下載的磷雇,需要開通會員等收費操作偿警,相信很多小伙伴只是為了下載極少部分資源移国,有時候很不情愿去開通會員酥诽,這時候可以給大家推薦兩個好用的命令行下載工具 you-get
和 youtube-dl
要门。下面給大家簡單介紹下Mac OS下如何安裝和使用這兩款工具擒贸。
命令行視頻下載工具 you-get
和 youtube-dl
you-get
和 youtube-dl
都是基于 Python 的命令行媒體文件下載工具,完全開源免費跨平臺誉结。用戶只需使用簡單命令并提供在線視頻的網(wǎng)頁地址即可讓程序自動進行嗅探董虱、下載店煞、合并苞慢、命名和清理诵原,最終得到已經(jīng)命名的完整視頻文件。兩者搭配使用幾乎可以下載所有主流視頻網(wǎng)站的視頻及有關資源挽放,配合本地播放器還可直接播放在線視頻绍赛,徹底避免廣告和瀏覽器插件的困擾。
you-get
官網(wǎng):https://you-get.org/
Github 項目:https://github.com/soimort/you-get
(Windows安裝可參考上面??github 項目骂维,有多種的安裝方法)
安裝方法
前提你的電腦安裝了 Homebrew,在命令行執(zhí)行以下代碼
brew install you-get
下載視頻
- 使用-info/-i選項來查看所有可用的質量和格式贺纲;
$ you-get -i 'https://www.youtube.com/watch?v=jNQXAC9IVRw'
site: YouTube
title: Me at the zoo
streams: # Available quality and codecs
[ DEFAULT ] _________________________________
- itag: 43
container: webm
quality: medium
size: 0.5 MiB (564215 bytes)
# download-with: you-get --itag=43 [URL]
- itag: 18
container: mp4
quality: medium
# download-with: you-get --itag=18 [URL]
- itag: 5
container: flv
quality: small
# download-with: you-get --itag=5 [URL]
- itag: 36
container: 3gp
quality: small
# download-with: you-get --itag=36 [URL]
- itag: 17
container: 3gp
quality: small
# download-with: you-get --itag=17 [URL]
- 下載
$ you-get 'https://www.youtube.com/watch?v=jNQXAC9IVRw'
site: YouTube
title: Me at the zoo
stream:
- itag: 43
container: webm
quality: medium
size: 0.5 MiB (564215 bytes)
# download-with: you-get --itag=43 [URL]
Downloading zoo.webm ...
100.0% ( 0.5/0.5 MB) ├████████████████████████████████████████┤[1/1] 7 MB/s
Saving Me at the zoo.en.srt ...Done.
注意:
- 目前航闺,大多數(shù)支持的網(wǎng)站還沒有實現(xiàn)格式選擇;在這種情況下猴誊,下載的默認格式是質量最高的格式潦刃。
- 在下載和連接多個部分的視頻流(例如在優(yōu)酷等網(wǎng)站上),以及1080p或高分辨率的YouTube視頻懈叹,
ffmpeg
是必需的依賴乖杠。 - 如果你不想在下載后加入視頻部分,可使用
-no-merge/-n
選項澄成。
- 暫停并繼續(xù)下載
- 可以使用Ctrl+C來中斷下載胧洒。
- 要強制重新下載,請使用
-force/-f選項
(警告:這樣做會覆蓋任何同名的現(xiàn)有文件或臨時文件!)
- 設置下載文件的路徑和名稱
使用-output-dir/-o
選項設置路徑墨状,以及-output-filename/ -o
設置下載文件的名稱
$ you-get -o ~/Videos -O zoo.webm 'https://www.youtube.com/watch?v=jNQXAC9IVRw'
以上基本就是常用到的命令了卫漫,還有一些功能的命令不常用,這里就不寫了肾砂,感興趣的可以去參考上面的Github 項目列赎,有詳細的操作指令。
支持的網(wǎng)站
溫馨提示:
如果下載資源時無響應镐确,可 Ctrl+C
暫停包吝,再次重新執(zhí)行下載命令饼煞。
youtube-dl
主頁:http://rg3.github.io/youtube-dl/
github 項目:https://github.com/rg3/youtube-dl
(Windows安裝可參考上面??github 項目,有多種的安裝方法)
安裝方法
方法一:
brew install youtube-dl
方法二:
sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl
方法三:
sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl
下載視頻
- 下載在線視頻
youtube-dl [視頻網(wǎng)址]
- 查看指定網(wǎng)頁所有視頻格式
youtube-dl -F [視頻網(wǎng)址]
- 下載指定格式的媒體文件
youtube-dl -f [format code] [視頻網(wǎng)址]
命令參數(shù)
Usage: youtube-dl [OPTIONS] URL [URL...]
Options:
通用選項:
-h, --help 打印幫助文檔
--version 打印版本信息
-U, --update 更新到最新版(需要權限)
-i, --ignore-errors 遇到下載錯誤時跳過
--abort-on-error 遇到下載錯誤時終止
--dump-user-agent 顯示當前使用的瀏覽器(User-agent)
--list-extractors 列出所有的提取器(支持的網(wǎng)站)
--extractor-descriptions 同上
--force-generic-extractor 強制使用通用提取器下載
--default-search PREFIX 使用此前綴補充不完整的URLs诗越,例如:"ytsearch2 yt-dl" 從youtube搜索并下載兩個關于yt-dl視頻. 使用"auto"youtube-dl就會猜一個砖瞧,一般效果等價于"ytsearch"("auto_warning"猜測時加入警告).我已知支持的PREFIX:ytsearch (youtube), ytsearchdate (youtube), yvsearch (yahoo videos), gvsearch (google videos)
--ignore-config 不讀取配置文件,當時用了全局配置文件/etc/youtube-dl.conf:不再讀取 ~/.config/youtube-dl/config (%APPDATA%/youtube-dl/config.txt on Windows)
--config-location PATH 使用指定路徑下的配置文件
--flat-playlist 列出列表視頻但不下載
--mark-watched 標記看過此視頻 (YouTube only)
--no-mark-watched 不標記看過此視頻 (YouTube only)
--no-color 打印到屏幕上的代碼不帶色
網(wǎng)絡選項:
--proxy URL 使用HTTP/HTTPS/SOCKS協(xié)議的代理.如:socks5://127.0.0.1:1080/.
--socket-timeout SECONDS 放棄連接前等待時間
--source-address IP 綁定的客戶端IP地址
-4, --force-ipv4 所有連接通過IPv4
-6, --force-ipv6 所有連接通過IPv6
地理限制:
--geo-verification-proxy URL 使用此代理地址測試一些有地理限制的地址
--geo-bypass 繞過地理限制通過偽裝X-Forwarded-For HTTP頭部的客戶端ip (實驗)
--no-geo-bypass 不 繞過地理限制通過偽裝X-Forwarded-For HTTP頭部的客戶端ip (實驗)
--geo-bypass-country CODE 強制繞過地理限制通過提供準確的ISO 3166-2標準的國別代碼(實驗)
視頻選擇:
--playlist-start NUMBER 指定列表中開始下載的視頻(默認為1)
--playlist-end NUMBER 指定列表中結束的視頻(默認為last)
--playlist-items ITEM_SPEC 指定列表中要下載的視頻項目編號.如:"--playlist-items 1,2,5,8"或"--playlist-items 1-3,7,10-13"
--match-title REGEX 下載標題匹配的視頻(正則表達式或區(qū)分大小寫的字符串)
--reject-title REGEX 跳過下載標題匹配的視頻(正則表達式或區(qū)分大小寫的字符串)
--max-downloads NUMBER 下載NUMBER個視頻后停止
--min-filesize SIZE 不下載小于SIZE的視頻(e.g. 50k or 44.6m)
--max-filesize SIZE 不下載大于SIZE的視頻(e.g. 50k or 44.6m)
--date DATE 僅下載上傳日期在指定日期的視頻
--datebefore DATE 僅下載上傳日期在指定日期或之前的視頻 (i.e. inclusive)
--dateafter DATE 僅下載上傳日期在指定日期或之后的視頻 (i.e. inclusive)
--min-views COUNT 不下載觀影數(shù)小于指定值的視頻
--max-views COUNT 不下載觀影數(shù)大于指定值的視頻
--match-filter FILTER 通用視頻過濾器. Specify any key (see help for -o for a list of available keys) to match if the key is present, !key to check if the key is not present, key > NUMBER (like "comment_count > 12", also works with >=, <, <=, !=, =) to compare against a number,key = ‘LITERAL‘ (like "uploader = ‘Mike Smith‘", also works with !=) to match against a string literal and & to require multiple matches. Values which are not known are excluded unless you put a question mark (?) after the operator. For example, to only match videos that have been liked more than 100 times and disliked less than 50 times (or the dislike functionality is not available at the given service), but who also have a description, use --match-filter "like_count > 100 & dislike_count <? 50 & description" .
--no-playlist 當視頻鏈接到一個視頻和一個播放列表時掺喻,僅下載視頻
--yes-playlist 當視頻鏈接到一個視頻和一個播放列表時芭届,下載視頻和播放列表
--age-limit YEARS 下載合適上傳年限的視頻
--download-archive FILE 僅下載檔案文件中未列出的影片,已下載的記錄ID
--include-ads 同時下載廣告(實驗)
下載選項:
-r, --limit-rate RATE 最大bps (e.g. 50K or 4.2M)
-R, --retries RETRIES 重試次數(shù) (默認10), or "infinite".
--fragment-retries RETRIES 一個分段的最大重試次數(shù)(default is 10), or "infinite" (DASH, hlsnative and ISM)
--skip-unavailable-fragments 跳過不可用分段(DASH, hlsnative and ISM)
--abort-on-unavailable-fragment 放棄某個分段當不可獲取時
--keep-fragments 下載完成后感耙,將下載的片段保存在磁盤上; 片段默認被刪除
--buffer-size SIZE 設置緩沖區(qū)大小buffer (e.g. 1024 or 16K) (default is 1024)
--no-resize-buffer 不自動調整緩沖區(qū)大小.默認情況下自動調整
--playlist-reverse 以相反的順序下載播放列表視頻
--playlist-random 以隨機的順序下載播放列表視頻
--xattr-set-filesize Set file xattribute ytdl.filesize with expected file size (experimental)
--hls-prefer-native 使用本機默認HLS下載器而不是ffmpeg
--hls-prefer-ffmpeg 使用ffmpeg而不是本機HLS下載器
--hls-use-mpegts 使用TS流容器來存放HLS視頻,一些高級播放器允許在下載的同時播放視頻
--external-downloader COMMAND 使用指定的第三方下載工具,當前支持:aria2c,avconv,axel,curl,ffmpeg,httpie,wget
--external-downloader-args ARGS 給第三方下載工具指定參數(shù)褂乍,如:--external-downloader aria2c --external-downloader-args -j8
文件系統(tǒng)選項:
-a, --batch-file FILE 文件中包含需要下載的URL
--id 僅使用文件名中的視頻ID
-o, --output TEMPLATE Output filename template, see the "OUTPUT TEMPLATE" for all the info
--autonumber-start NUMBER 指定%(autonumber)s的起始值(默認為1)
--restrict-filenames 將文件名限制為ASCII字符,并避免文件名中的“&”和空格
-w, --no-overwrites 不要覆蓋文件
-c, --continue 強制恢復部分下載的文件即硼。 默認情況下逃片,youtube-dl僅在可能時將恢復下載。
--no-continue 不要恢復部分下載的文件(從頭開始重新啟動)
--no-part 不使用.part文件 - 直接寫入輸出文件
--no-mtime 不使用Last-modified header來設置文件最后修改時間
--write-description 將視頻描述寫入.description文件
--write-info-json 將視頻元數(shù)據(jù)寫入.info.json文件
--write-annotations 將視頻注釋寫入.annotations.xml文件
--load-info-json FILE 包含視頻信息的JSON文件(使用“--write-info-json”選項創(chuàng)建)
--cookies FILE 文件從中讀取Cookie(經(jīng)測試只酥,export cookies插件可以使用褥实,但firebug導出的cookies導致錯誤)
--cache-dir DIR 文件存儲位置。youtube-dl需要永久保存一些下載的信息裂允。默認為$XDG_CACHE_HOME/youtube-dl或/.cache/youtube-dl损离。目前,只有YouTube播放器文件(對于具有模糊簽名的視頻)進行緩存绝编,但可能會發(fā)生變化僻澎。
--no-cache-dir 不用緩存
--rm-cache-dir 刪除所有緩存文件
縮略圖:
--write-thumbnail 把縮略圖寫入硬盤
--write-all-thumbnails 將所有縮略圖寫入磁盤
--list-thumbnails 列出所有可用的縮略圖格式
詳細/模擬選項:
-q, --quiet 激活退出模式
--no-warnings 忽略警告
-s, --simulate 不下載不存儲任何文件到硬盤,模擬下載模式
--skip-download 不下載視頻
-g, --get-url 模擬下載獲取視頻直連
-e, --get-title 模擬下載獲取標題
--get-id 模擬下載獲取id
--get-thumbnail 模擬下載獲取縮略圖URL
--get-description 模擬下載獲取視頻描述
--get-duration 模擬下載獲取視頻長度
--get-filename 模擬下載獲取輸出視頻文件名
--get-format 模擬下載獲取輸出視頻格式
-j, --dump-json 模擬下載獲取JSON information.
-J, --dump-single-json 模擬下載獲取每條命令行參數(shù)的JSON information.如果是個播放列表十饥,就獲取整個播放列表的JSON
--print-json 下載的同時獲取視頻信息的JSON
--newline 進度條在新行輸出
--no-progress 不打印進度條
--console-title 在控制臺標題欄顯示進度
-v, --verbose 打印各種調試信息
--dump-pages 打印下載下來的使用base64編碼的頁面來調試問題(非常冗長)
--write-pages 將下載的中間頁以文件的形式寫入當前目錄中以調試問題
--print-traffic 顯示發(fā)送和讀取HTTP流量
-C, --call-home 聯(lián)系youtube-dl服務器進行調試
--no-call-home 不聯(lián)系youtube-dl服務器進行調試
解決方法:
--encoding ENCODING 強制指定編碼(實驗)
--no-check-certificate 禁止HTTPS證書驗證
--prefer-insecure 使用未加密的連接來檢索有關視頻的信息(目前僅支持YouTube)
--user-agent UA 指定user agent
--referer URL 指定自定義的referer,僅限視頻來源于同一網(wǎng)站
--add-header FIELD:VALUE 指定一個自定義值的HTTP頭文件,使用分號分割,可以多次使用此選項
--bidi-workaround 圍繞缺少雙向文本支持的終端工作窟勃。需要在PATH中有bidiv或fribidi可執(zhí)行文件
--sleep-interval SECONDS 在每次下載之前休眠的秒數(shù),或者每次下載之前的隨機睡眠的范圍的下限(最小可能的睡眠秒數(shù))與-max-sleep-interval一起使用逗堵。
--max-sleep-interval SECONDS 每次下載前隨機睡眠范圍的上限(最大可能睡眠秒數(shù))秉氧。只能與--min-sleep-interval一起使用。
視頻格式選項:
-f, --format FORMAT 視頻格式代碼,查看"FORMAT SELECTION"獲取所有信息
--all-formats 獲取所有視頻格式
--prefer-free-formats 開源的視頻格式優(yōu)先蜒秤,除非有特定的請求
-F, --list-formats 列出請求視頻的所有可用格式
--youtube-skip-dash-manifest 不要下載關于YouTube視頻的DASH清單和相關數(shù)據(jù)
--merge-output-format FORMAT 如果需要合并(例如bestvideo + bestaudio)汁咏,則輸出到給定的容器格式。mkv作媚,mp4梆暖,ogg,webm掂骏,flv之一轰驳。如果不需要合并,則忽略
字幕選項:
--write-sub 下載字幕文件
--write-auto-sub 下載自動生成的字幕文件 (YouTube only)
--all-subs 下載所有可用的字幕
--list-subs 列出所有字幕
--sub-format FORMAT 字幕格式,接受格式偏好,如:"srt" or "ass/srt/best"
--sub-lang LANGS 要下載的字幕的語言(可選)用逗號分隔,請使用--list-subs表示可用的語言標簽
驗證選項:
-u, --username USERNAME 使用ID登錄
-p, --password PASSWORD 賬戶密碼,如果此選項未使用,youtube-dl將交互式地詢問。
-2, --twofactor TWOFACTOR 雙因素認證碼
-n, --netrc 使用.netrc認證數(shù)據(jù)
--video-password PASSWORD 視頻密碼(vimeo, smotri, youku)
Adobe Pass Options:
--ap-mso MSO Adobe Pass多系統(tǒng)運營商(電視提供商)標識符,使用--ap-list-mso列出可用的[MSO](https://en.wikipedia.org/wiki/List_of_multiple-system_operators)
--ap-username USERNAME MSO賬號登錄
--ap-password PASSWORD 賬戶密碼,如果此選項未使用,youtube-dl將交互式地詢問级解。
--ap-list-mso 列出所有支持的MSO
后處理選項:
-x, --extract-audio 將視頻文件轉換為純音頻文件(需要ffmpeg或avconv和ffprobe或avprobe)
--audio-format FORMAT 指定音頻格式: "best", "aac", "flac", "mp3", "m4a", "opus", "vorbis", or "wav"; "best" by default;-x存在時無效
--audio-quality QUALITY 指定ffmpeg/avconv音頻質量,為VBR插入一個0(best)-9(worse)的值(默認5),或者指定比特率
--recode-video FORMAT 必要時將視頻轉碼為其他格式(當前支持: mp4|flv|ogg|webm|mkv|avi)
--postprocessor-args ARGS 給后處理器提供這些參數(shù)
-k, --keep-video 視頻文件在后處理后保存在磁盤上; 該視頻默認被刪除
--no-post-overwrites 不要覆蓋后處理文件; 默認情況下,后處理文件將被覆蓋
--embed-subs 在視頻中嵌入字幕(僅適用于mp4,webm和mkv視頻)
--embed-thumbnail 將縮略圖嵌入音頻作為封面藝術
--add-metadata 將元數(shù)據(jù)寫入視頻文件
--metadata-from-title FORMAT 從視頻標題中解析附加元數(shù)據(jù)冒黑,如歌曲標題/藝術家。格式語法和--output相似.也可以使用帶有命名捕獲組的正則表達式勤哗。解析的參數(shù)替換現(xiàn)有值抡爹。Example: --metadata-from-title "%(artist)s - %(title)s" matches a title like "Coldplay - Paradise". Example (regex): --metadata-from-title "(?P<artist>.+?) - (?P<title>.+)"
--xattrs 將元數(shù)據(jù)寫入視頻文件的xattrs(使用dublin core 和 xdg標準)
--fixup POLICY 自動更正文件的已知故障。never(不做警告), warn(只發(fā)出警告), detect_or_warn (默認;如果可以的話修復文件,否則警告)
--prefer-avconv 后處理時相較ffmpeg偏向于avconv
--prefer-ffmpeg 后處理優(yōu)先使用ffmpeg
--ffmpeg-location PATH ffmpeg/avconv程序位置;PATH為二進制所在文件夾或者目錄.
--exec CMD 在下載后對文件執(zhí)行命令,類似于find -exec語法.示例:--exec‘a(chǎn)db push {} /sdcard/Music/ && rm {}‘
--convert-subs FORMAT 轉換字幕格式(當前支持: srt|ass|vtt)
youtube-dl
操作很多芒划,暫未使用冬竟,在此記錄下一并分享給大家,對其他操作有興趣的可自行參看文檔