Media Library Importer
公開ディレクトリからDrupal Media Libraryへメディアファイルをインポートするモジュール。キューベースのバッチ処理に対応。
media_library_importer
インストール
composer require 'drupal/media_library_importer:^2.1'
概要
Media Library Importerは、サーバーのファイルシステムにある既存のメディアファイルをDrupalのMedia Libraryに一括インポートするための効率的なソリューションを提供します。指定されたディレクトリをスキャンしてメディアファイルを検出し、各ファイルに対応するMedia Entityを作成しながら、ファイルとメディアタイプ間の適切な関連付けを維持します。
このモジュールは、キューベースのアプローチとバッチ処理を使用して、タイムアウトなしで大量のインポートを効率的に処理します。ファイルは拡張子に基づいてメディアタイプにマッチングされ、同じソースファイルを持つMedia Entityが既に存在するかどうかをチェックすることで、重複インポートをインテリジェントに防止します。
インポート操作は、管理UI、Drushコマンド、またはcronジョブを介したプログラム的な方法でトリガーでき、さまざまなワークフローに柔軟に対応します。
Features
- 公開ファイルシステム内の任意のディレクトリからMedia Libraryへのメディアファイル一括インポート
- Queue UIを使用したキューベースのバッチ処理により、タイムアウトなしで大量インポートを処理
- 各メディアタイプで設定されたファイル拡張子に基づく自動メディアタイプ検出
- 重複防止機能 - 同じソースファイルを持つMedia Entityが既に存在する場合は再作成されない
- インポートしたファイルをメディアタイプの指定された保存場所にコピーするか、元の場所に保持するかを選択可能
- 派生画像のインポートを防ぐためのimage stylesフォルダの除外設定
- Image、Document、Audio、Video、およびカスタムメディアタイプを含む複数のメディアタイプをサポート
- コマンドラインインポート用のDrushコマンド統合(drush media-library:import または drush mli)
- 自動スケジュールインポートのためのプログラム可能なcronベースインポート
- インポート時にMedia Entityに追加フィールド値を設定するためのhook
Use Cases
非管理ファイルからMedia Libraryへの移行
以前非管理ファイルやFile EntityをMedia Libraryシステムにアップグレードする際、Media Library Importerですべての既存ファイルを一括インポートできます。インポートフォルダをファイルディレクトリに設定し、適切なメディアタイプを選択してインポートを実行すると、すべての既存ファイルに対してMedia Entityが作成されます。
FTPまたはファイル転送によるメディアの一括アップロード
FTPやファイル転送で大量のメディアファイルを受信するサイトでは、Media Library ImporterがこれらのファイルをMedia Libraryに追加するワークフローを提供します。指定されたインポートフォルダにファイルをアップロードし、管理UIまたはDrushコマンドを使用して一度にすべてインポートします。
cronによる自動スケジュールインポート
カスタムモジュールでhook_cron()を実装して自動インポートを設定します。$media_library_importer_service->generateImportQueue()に続いてprocessImportQueue()を呼び出すことで、各cron実行時にインポートフォルダに追加された新しいファイルを自動的にインポートします。
EXIFメタデータ付き画像ライブラリのインポート
写真や画像コレクションをインポートする際、Media Image EXIF Importerサブモジュールを有効にすると、インポートされた各画像からカメラモデル、ISO、絞り、露出時間、焦点距離などのカメラメタデータを自動的に抽出して保存できます。
コンテンツ移行との統合
hook_alter_media_library_importer_media_extra_fields hookを使用して、インポート時に追加のメディアフィールドを設定します。これは、メディアメタデータを外部ソースやファイル名から設定する必要があるコンテンツ移行時に便利です。
Tips
- 大量バッチの場合は、Webインターフェースよりも長時間実行プロセスを適切に処理できるDrush(drush mli)でインポートを実行してください。
- 「stylesフォルダを除外」オプションを使用して、image派生物が個別のMedia Entityとしてインポートされることを防いでください。
- モジュールはファイル名とバンドルで既存のメディアをチェックするため、ファイルをインポートフォルダに追加してインポートを複数回実行しても重複は作成されません。
- 増分インポートの場合、新しいファイルをインポートフォルダに配置して再度インポートを実行すれば、新しいファイルのみが処理されます。
- 画像をインポートする前にMedia Image EXIF Importerサブモジュールを有効にすると、初回インポート時にカメラメタデータをキャプチャできます。
- メディアタイプのフィールドマッピングを正しく設定してください - モジュールは各メディアタイプでメディアファイルを格納するフィールドを把握する必要があります。
Technical Details
Admin Pages 2
/admin/config/media/media-library-importer
インポート元フォルダ、インポートするメディアタイプ、ファイル処理オプションなど、Media Library Importerの設定を構成します。
/admin/config/media/media-library-importer/import
メディアインポート操作を実行します。設定されたインポートディレクトリ内のフォルダツリーと、インポート可能なメディアファイル数を表示します。インポートに含めるフォルダを選択し、バッチプロセスを実行します。
権限 2
Hooks 1
hook_alter_media_library_importer_media_extra_fields
インポート時にMedia Entityに追加のフィールド値を設定することを可能にします。インポートされる各ファイルのキュー生成時に呼び出されます。
Drush Commands 1
drush media-library:import
設定されたMedia Library Importerの設定に従ってMedia Entityをインポートします。設定されたインポートフォルダをスキャンし、Media Libraryにまだ存在しないすべてのマッチするファイルに対してMedia Entityを作成します。
Troubleshooting 5
「メディアに設定された場所にファイルをインポート」オプションは、ファイルをメディアタイプの設定されたディレクトリにコピーします。コピーせずにファイルを元の場所に保持したい場合は、設定フォームでこのオプションのチェックを外してください。
設定で「メディア画像のstylesフォルダを除外」チェックボックスがオンになっていることを確認してください。これにより、/stylesディレクトリ(image派生物を含む)がインポート時のスキャン対象から除外されます。
モジュールは大量インポートを処理するQueue UIのバッチ処理を使用しています。それでも問題が発生する場合は、PHP実行時間制限を増やすか、より長い処理時間を処理できるDrushコマンドでインポートを実行してください。
設定されたメディアタイプのソースフィールド設定でファイル拡張子が許可されているか確認してください。モジュールは拡張子に基づいてファイルをメディアタイプにマッチングします。また、インポートフォルダのパスが正しく、アクセス可能であることも確認してください。
これは想定された動作です。モジュールはファイル名をMedia Entity名として使用します。インポート時にメディア名やその他のフィールドをカスタマイズするには、hook_alter_media_library_importer_media_extra_fields hookを使用してください。