mixcloudにあるルイ・ベガのミックスを聴いてます。外出先で聴くとギガを消費してしまうので、ダウンロードしたいと考えました。

検索で出てくるようなwebサービスだとうまくダウンロードできないので、対応できるツールを探しました。そしたらyt-dlpというツールがありました。

便利だったので、記録します。

yt-dlp について詳しく

yt-dlpは、YouTubeやMixcloud、ニコニコ動画、SoundCloud、Vimeo、Bilibili、Twitter(X)など、数百種類以上の動画・音声配信サイトから動画や音声をダウンロードできる強力なオープンソースツールです。yt-dlpは、もともと有名なyoutube-dlのフォーク(派生プロジェクト)であり、より活発な開発と最新サイトへの対応、追加機能の充実が特徴です。

主な特徴

主な特徴は以下です。

  • 多様なサイト対応: YouTubeだけでなく、MixcloudやTwitch、ニコニコ動画、Bilibili、SoundCloudなど、世界中の主要な配信サービスに対応しています。
  • 高機能なオプション: 動画・音声のフォーマット選択、画質・音質の指定、プレイリストやチャンネル全体の一括ダウンロード、字幕やメタデータの取得、サムネイル画像の保存など、多彩なオプションが用意されています。
  • ffmpegとの連携: HLS(m3u8)やDASH(mpd)などのストリーミング形式にも対応し、ffmpegと連携して自動的にセグメントの結合や音声抽出、フォーマット変換を行います。
  • 認証・Cookie対応: ログインが必要なコンテンツも、Cookieファイルやユーザー名・パスワードを指定することでダウンロード可能です。
  • 高速な更新: サイト側の仕様変更にも迅速に対応しており、youtube-dlよりも頻繁にアップデートされています。
  • スクリプトや自動化との親和性: コマンドラインツールなので、シェルスクリプトやバッチ処理、Dockerなどの自動化環境でも簡単に利用できます。

Dockerでの私的使い方

python製なので、python環境を作るのは骨が折れます。そこで、私は以下のDockerfileを書いて、使用しています。

FROM python:3.11-slim

# 必要なパッケージのインストール
RUN apt-get update && \
    apt-get install -y --no-install-recommends \
        ffmpeg \
        ca-certificates \
        wget \
    && rm -rf /var/lib/apt/lists/*

# yt-dlpのインストール
RUN pip install --no-cache-dir --upgrade pip yt-dlp

# デフォルトの作業ディレクトリ
WORKDIR /work

# デフォルトコマンド
ENTRYPOINT ["yt-dlp"] 
dockerfile

以下のようなコマンドを使用します。mixcloudは若干時間がかかります。60分mixに30分ぐらいかかる印象。

docker run --rm -v "$PWD":/work yt-dlp <ダウンロードしたいURL>
bash

代表的な使い方

コマンドそのものは以下のように使用します。

  • 単一動画のダウンロード
    yt-dlp https://www.youtube.com/watch?v=XXXX
    
    sh
  • プレイリスト全体のダウンロード
    yt-dlp https://www.youtube.com/playlist?list=XXXX
    
    sh
  • 音声のみ抽出(mp3変換)
    yt-dlp -x --audio-format mp3 https://www.mixcloud.com/xxxx/xxxx/
    
    sh
  • ファイル名テンプレートの指定
    yt-dlp -o '%(title)s.%(ext)s' https://www.youtube.com/watch?v=XXXX
    
    sh
  • 字幕やメタデータの同時取得
    yt-dlp --write-subs --write-info-json https://www.youtube.com/watch?v=XXXX
    
    sh

よく使う主なオプション

  • -f : ダウンロードするフォーマット(画質・音質)を指定
  • -o : 出力ファイル名テンプレートを指定
  • -x : 音声のみ抽出
  • --audio-format : 音声フォーマット(mp3, m4a, wav等)を指定
  • --write-subs : 字幕をダウンロード
  • --write-thumbnail : サムネイル画像を保存
  • --write-info-json : メタデータをJSONで保存
  • --playlist-items : プレイリストの一部だけをダウンロード
  • --cookies : Cookieファイルを指定して認証が必要な動画も取得

注意事項

  • yt-dlpは配信サイトの利用規約を尊重し、個人利用の範囲でご利用ください。
  • 法的な問題や著作権には十分ご注意ください。

公式情報

yt-dlpは非常に柔軟で強力なツールです。

詳細な使い方や最新情報は公式リポジトリやドキュメントをご参照ください。