0

ImageField (画像) & Embedded Media Field (ビデオ)を介してCCKを使用して、ユーザーが画像またはビデオ (YouTube または vimeo から) をアップロードできるシナリオがあります。

私のサイトでは、ImageField 画像を使用して、imagecache アクションを使用してさまざまなビューでサムネイルを作成しています。

Youtube/vimeo は、画像の「フォールバック」として使用したいビデオの画像キャプチャを提供します。

このフォールバックを提供し、すべての一貫性を保つために各ビューを書き直すのではなく、ユーザーがビデオと一緒に画像としてアップロードしたかのように、外部ビデオ キャプチャ画像をダウンロードして保存する最善の方法を考えていました。

私は Rules & Actions と PHP に精通しており、何をすべきかについての基本的な概要を教えていただければ幸いです。

4

2 に答える 2

1

で、hook_nodeapi($op == 'presave', ...)画像が提供されたかどうかを確認し、YouTube からダウンロードできます。簡単な解決策はdrupal_http_request()、ファイルをダウンロードしfile_save_data()てからディスクに書き込むことです。ただし、これにより、ファイルの内容がメモリに読み込まれますが、これは必要ありません。Curl を使用して、HTTP ファイルをディスクに直接ダウンロードできると思います。

ノードの保存時にファイルをダウンロードすると、パフォーマンスの問題が発生する可能性があります (応答時間が長くなるため)。その場合、 の実装まで遅らせることができますhook_cronジョブ キューを使用して、次の cron のイメージ ダウンロードを簡単にキューに入れることができます。Drupal の cron 中に実行することが問題になる場合は、Drupal Queueモジュールを使用してダウンロードを個別に処理することもできます。

于 2010-07-13T07:51:53.207 に答える
1

これは、カスタム モジュールの一部になります。これを処理するモジュールを知りません。

モジュールなどを書くのは簡単ではありません。実行する必要がある場合 (すべてのサイトが実行する必要がありますよね?)、ある種のキューまたはスプール メカニズムが含まれているため、リモート ビデオを独自の時間で処理およびダウンロードできます。ビデオを1つの一貫した形式にしたい場合は、エンコーディングストリートが必要になる場合があります。結局のところ、Youtubeはビデオのダウンロードを許可しておらず、可能な限り困難にするため、多くの醜いハックが必要になります.

于 2010-07-13T06:43:14.500 に答える