Skip to content

サイトのスクレイピング、m3u8動画のダウンロード、メディアの変換、MP3特徴量の抽出を自動化するPython製パイプライン。JSONおよびCLIオプションで設定可能。

Notifications You must be signed in to change notification settings

Elic0de/clip2source

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

データ処理パイプライン メインスクリプト

このリポジトリには、各種処理(サイトスクレイピング、m3u8ダウンロード、コンバーション、MP3特徴量抽出)を統括するメインスクリプト main.py が含まれています。 各タスクは個別のモジュール(modules/ 配下)に実装され、設定ファイルとコマンドライン引数によって柔軟に実行内容を制御できます。

特徴

  • 柔軟な設定管理

    • JSON形式の設定ファイル(デフォルトは config.json)から各種パスや処理設定を読み込みます。
    • コマンドライン引数により、設定ファイルのパス、ログレベル、無視する処理、m3u8ダウンロードの同時実行数を指定可能です。
    • 設定ファイルとCLI引数の無視タスクリストを合成し、実行する処理を動的に制御します。
  • 各種タスクの実行

  • サイトスクレイピング: modules/scraper.pyscrape_all_sites によるサイト情報の収集。

  • m3u8ダウンロード: modules/m3u8_downloader.py 内の関数群を用いた動画ダウンロード(非同期処理)。

  • コンバーション処理: modules/converter.pyprocess_all によるデータ変換処理。

  • MP3特徴量抽出: modules/mp3_feature_extractor.pyrun_feature_extraction による音声データ解析。

  • 強化されたエラーハンドリング

  • 各処理は例外処理が実装されており、エラー発生時には詳細なログを出力して安全に終了します。

インストール

必要条件

  • Python 3.8 以降
  • 必要なPythonパッケージ(requirements.txt がある場合はそちらを参照してください)

リポジトリのクローン

git clone <リポジトリURL>
cd <リポジトリディレクトリ>

依存関係のインストール

依存パッケージがある場合は、以下のコマンドでインストールしてください:

pip install -r requirements.txt

設定

main.py は JSON 形式の設定ファイルから各種パラメータを読み込みます。 デフォルトではプロジェクトルートにある config.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 ファイルをご参照ください。

About

サイトのスクレイピング、m3u8動画のダウンロード、メディアの変換、MP3特徴量の抽出を自動化するPython製パイプライン。JSONおよびCLIオプションで設定可能。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published