MoviesAnywhere-dl — Movies Anywhere ダウンローダー

Tool

概要

MoviesAnywhere-dl は、Movies Anywhere サービスから動画を「取得」するために作られた実験的なコマンドラインツールです。主な目的は学習と研究であり、Widevine L3 による DRM フローを観察して、得られた鍵を元にストリームを復号し、音声トラックや字幕を含めて保存することを想定しています。内部では N_m3u8DL-RE によるセグメントのダウンロード/復号、Bento4 の mp4decrypt による MP4 コンテナ処理、FFmpeg による最終的なマージやトランスコードといった既存ツールを組み合わせています。README では WidevineProxy2 のブラウザ拡張など、ライセンス関連の解析に必要な周辺ツールの導入を案内していますが、著作権や利用規約に抵触する使い方は推奨されていません。

GitHub

リポジトリの統計情報

  • スター数: 32
  • フォーク数: 9
  • ウォッチャー数: 32
  • コミット数: 6
  • ファイル数: 10
  • メインの言語: Python

主な特徴

  • Widevine L3 鍵を利用した復号ワークフローの実験的実装(学習目的)
  • 複数音声トラックと字幕を含む出力の生成をサポート
  • N_m3u8DL-RE、Bento4、FFmpeg といった既存ツールと連携
  • CLI ベースで Python 3.8+ 環境にインストール可能(pip install -e .)

技術的なポイント

MoviesAnywhere-dl は、映像配信サービスにおける DRM(Widevine)ベースの配信・再生フローを理解しやすくすることを狙った実験的ツールです。技術的には大きく次のフェーズに分かれます。まずブラウザ側で Widevine ライセンス取得のリクエスト/レスポンスを観察するために WidevineProxy2 等を使い、ライセンス応答や CDM が利用する鍵素材の所在ややり取りを可視化します。次に取得した鍵情報を用いて、配信側が提供する m3u8(HLS)やセグメントに対する復号操作を行います。この復号処理は N_m3u8DL-RE のようなツール群でセグメントの並列ダウンロードと復号を行い、Bento4 の mp4decrypt によって暗号化された MP4 コンテナのさらなる処理を行います。最終段階では FFmpeg を用いて複数音声トラック・字幕トラックを正しくマージし、可搬性の高い MP4/ MKV ファイルを生成します。

コードベースは小規模で、Python をラッパーとして既存ツールを呼び出す設計が中心です。依存関係は外部バイナリ(N_m3u8DL-RE、Bento4、FFmpeg)とブラウザ拡張に依存しており、クロスプラットフォームでの動作はそれらバイナリの入手と環境設定に依存します。リポジトリ自体はコミット数が少なく、実験的なスクリプト類が中心のため、堅牢性やエラーハンドリング、長期的メンテナンス性は限定的です。

重要な注意点として、Widevine のライセンス取得・鍵抽出・コンテンツ復号は著作権法や各サービスの利用規約に抵触する可能性があります。本リポジトリの作者も「学びのために作った」と明示しており、教育的なコードリーディングや DRM の仕組みの理解には有用ですが、実際の著作物を無断で取得・配布する用途での使用は避けるべきです。研究用途で利用する場合でも、法的な許可や倫理的配慮を優先してください。

開発上の改善余地としては、設定や外部ツールの検出・依存解決、詳細なログや再現性の高いテスト、プライバシーやセキュリティに配慮した鍵情報の取り扱い方針の明記などが挙げられます。教育目的でのクリーンなリファクタリングを行えば、DRM の学習キットとして価値を高められるでしょう。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .gitattributes: file
  • LICENSE: file
  • README.md: file
  • pycache: dir
  • cdm: dir

…他 5 ファイル

まとめ

学習目的の実験工具として有用だが、法的・倫理的リスクに留意が必要。

リポジトリ情報: