youtube-dl

/

youtube-dlの使い方

タグ youtube-dl yt-dlp


概要

  • youtubeやpornhubや対応するサイトから動画をダウンロードできるツール
  • GitHubでホストされおり、GitHubの理念により、著作権関連でteardownされることはない
  • ffmpegがインストールされていないと、音声と動画を分離している際に合成できない
  • 開発がゆっくりなこともあり、活発なforkとしてyt-dlpがある

公式ドキュメント等

インストール

$ python3 -m pip install youtube-dl -U
$ python3 -m pip install yt-dlp -U

※ YouTubeの最新の構造に対応するために、最新のものを使ったほうが良い

よく使うコマンドとオプション

ダウンロード可能なフォーマット一覧

$ youtube-dl -F "${YOUTUBE_LINK}"
  • 番号とその品質の詳細が記さた出力が得られる

フォーマットを指定してダウンロード

$ youtube-dl -f ${FORMAT_NUM} "${YOUTUBE_LINK}"
  • 超高画質の動画は音声と動画のフォーマットが別々になる

動画と音声のフォーマットをそれぞれ指定してダウンロードしてマージ

$ youtube-dl -f ${FORMAT_NUM1}+${FORMAT_NUM2} --merge-output-format mp4 "${YOUTUBE_LINK}"
  • マージ機能を利用するにはffmpegがインストールされている必要がある
  • webm形式の4kの動画番号を指定し、webm形式の音声番号を指定し、合成することで任意の品質の動画にできる

ベストフォーマットをダウンロード

$ youtube-dl -f best "${YOUTUBE_LINK}"

名前をつけて保存

$ youtube-dl -o ${OUTPUT_NAME} "${YOUTUBE_LINK}"

チャンネルの動画をすべてダウンロードする

$ youtube-dl -f best -ciw -o "%(title)s.%(ext)s" -v https://www.youtube.com/channel/${CHANNEL_ID}

エラーが発生しても継続する

  • 特にyt-dlpでyoutube以外の動画をダウンロードする際に発生しがちで-iオプションを指定しないと、リトライを繰り返してしまう
$ yt-dlp <movie-list> -i

youtube-dlのforkのyt-dlpについて

  • 概要
    • youtube-dlを並列ダウンロード可能にしたもの
    • コマンドや引数がほとんど同じなので、youtube-dlを使うようにして、yt-dlpを使うことができる

proxyを指定してダウンロード

$ youtube-dl --proxy http://{USERNAME}:{PASSWORD}@{HOST}:{PORT} "${YOUTUBE_LINK}"

view_count, like_count等を取得する

ファイル名書き出しオプションにこれらを保存できるフィールドが存在する

以下の例はtitle, id, upload_date, view_count, like_count, dislike_count, durationを保存する

$ youtube-dl -f best "${YOUTUBE_LINK}" -o "%(title)s_%(id)s_%(upload_date)s_%(view_count)s_%(like_count)s_%(dislike_count)s_%(duration)s.mp4"