• home
  • about
  • 全ての投稿
  • ソフトウェア・ハードウェアの設定のまとめ
  • 分析関連のまとめ
  • ヘルスケア関連のまとめ
  • 生涯学習関連のまとめ

youtube-dl

date: 2021-02-10 excerpt: youtube-dlの使い方

tag: youtubepythonyoutube-dlyt-dlp


youtube-dlの使い方

概要

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

公式ドキュメント等

  • youtube-dl/github.com
  • yt-dlp/github.com

インストール

$ 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"


youtubepythonyoutube-dlyt-dlp Share Tweet