このリポジトリには、各種処理(サイトスクレイピング、m3u8ダウンロード、コンバーション、MP3特徴量抽出)を統括するメインスクリプト main.py が含まれています。
各タスクは個別のモジュール(modules/ 配下)に実装され、設定ファイルとコマンドライン引数によって柔軟に実行内容を制御できます。
-
柔軟な設定管理
- JSON形式の設定ファイル(デフォルトは config.json)から各種パスや処理設定を読み込みます。
- コマンドライン引数により、設定ファイルのパス、ログレベル、無視する処理、m3u8ダウンロードの同時実行数を指定可能です。
- 設定ファイルとCLI引数の無視タスクリストを合成し、実行する処理を動的に制御します。
-
各種タスクの実行
-
サイトスクレイピング:
modules/scraper.pyのscrape_all_sitesによるサイト情報の収集。 -
m3u8ダウンロード:
modules/m3u8_downloader.py内の関数群を用いた動画ダウンロード(非同期処理)。 -
コンバーション処理:
modules/converter.pyのprocess_allによるデータ変換処理。 -
MP3特徴量抽出:
modules/mp3_feature_extractor.pyのrun_feature_extractionによる音声データ解析。 -
強化されたエラーハンドリング
-
各処理は例外処理が実装されており、エラー発生時には詳細なログを出力して安全に終了します。
- Python 3.8 以降
- 必要なPythonパッケージ(
requirements.txtがある場合はそちらを参照してください)
git clone <リポジトリURL>
cd <リポジトリディレクトリ>依存パッケージがある場合は、以下のコマンドでインストールしてください:
pip install -r requirements.txtmain.py は JSON 形式の設定ファイルから各種パラメータを読み込みます。
デフォルトではプロジェクトルートにある config.json を使用しますが、コマンドライン引数で変更可能です。
{
"download_record_file": "data/downloaded.json",
"video_urls_file": "data/urls.json",
"downloads_dir": "data/downloads",
"output_dir": "data/output",
"features_output_dir": "data/features",
"extraction_archive": "data/zipped/extracted_features.zip",
"ignore_tasks": []
}各キーの意味は以下の通りです:
-
download_record_file: 既にダウンロード済みの動画情報を記録するファイルのパス
-
video_urls_file: ダウンロード対象の動画URLが記載されたJSONファイルのパス
-
downloads_dir: ダウンロードした動画ファイルの保存先ディレクトリ
-
output_dir: コンバーション処理の出力先ディレクトリ
-
features_output_dir: MP3特徴量抽出の出力先ディレクトリ
-
extraction_archive: MP3特徴量抽出結果をまとめたZIPアーカイブの出力パス
-
ignore_tasks: 実行しないタスクのリスト(例: ["scrape", "download"])
以下のようにコマンドラインから実行します:
python3 main.py [オプション]-
-c,--config: 設定ファイルのパス (例:--config custom_config.json、デフォルトはconfig.json) -
--log-level: ログレベルの指定 (例:DEBUG,INFO,WARNING,ERROR。デフォルトはINFO) -
--ignore: 無視する処理の指定 指定可能な処理は以下の通り:-
scrape:サイトスクレイピング処理を無視 -
download:m3u8ダウンロード処理を無視 -
convert:コンバーション処理を無視 -
extract:MP3特徴量抽出処理を無視
-
-
--download-concurrency: m3u8ダウンロード処理の同時実行数 (デフォルトは10)
設定ファイルを custom_config.json に変更し、ログレベルを DEBUG に設定、さらにサイトスクレイピングとコンバーション処理を無視して実行する例:
python3 main.py --config custom_config.json --log-level DEBUG --ignore scrape convert --download-concurrency 5.
├── main.py # メインスクリプト
├── config.json # 設定ファイル(例)
├── modules/
│ ├── converter.py # コンバーション処理モジュール
│ ├── scraper.py # サイトスクレイピングモジュール
│ ├── m3u8_downloader.py # m3u8ダウンロード処理モジュール
│ └── mp3_feature_extractor.py # MP3特徴量抽出モジュール
├── data/ # データ関連のディレクトリ
│ ├── downloaded.json # ダウンロード記録ファイル
│ ├── urls.json # ダウンロード対象URLファイル
│ ├── downloads/ # ダウンロードした動画ファイルの保存先
│ ├── output/ # コンバーション処理の出力先
│ ├── features/ # MP3特徴量抽出の出力先
│ └── zipped/ # ZIPアーカイブの出力先
└── requirements.txt # 依存パッケージ一覧(存在する場合)
- ログは
--log-levelオプションに従い出力され、実行中の各処理の状況を確認できます。 - 各タスクは適切な例外処理が実装されており、エラー発生時には詳細なログメッセージが記録されます。
バグ報告、改善案、機能追加の提案など、プルリクエストやIssueを通じた貢献を歓迎します。お気軽にご連絡ください。
本プロジェクトのライセンスは LICENSE ファイルをご参照ください。