0

我有一个场景,用户可以通过ImageField(图像)和嵌入式媒体字段(视频)使用CCK上传图像或视频(来自 youtube 或 vimeo)

我的网站一直在使用 ImageField 图像通过图像缓存操作在各种视图中创建缩略图。

Youtube/vimeo 提供了我想用作图像“后备”的视频的图像捕获。

与其重写每个视图以提供此回退并保持一切一致,我想知道下载和存储外部视频捕获图像的最佳途径,就好像用户将其作为图像与视频一起上传一样。

我熟悉规则和操作以及 PHP,非常感谢我应该做的任何基本大纲。

4

2 回答 2

1

这将是自定义模块的一部分。我不知道处理这个的模块。

比如module不好写。如果它必须执行(每个站点都必须执行,对吗?)它将包含某种队列或假脱机机制,因此它可以在自己的时间内处理和下载远程视频。如果您希望视频采用一种一致的格式,它可能需要一个编码街。这将需要很多丑陋的黑客攻击,因为毕竟 Youtube 不允许下载他们的视频,并且会使其尽可能难。

于 2010-07-13T06:43:14.500 回答
1

hook_nodeapi($op == 'presave', ...)您可以检查是否提供了图像并从 youtube 下载。一个简单的解决方案可能是使用drupal_http_request()下载文件然后file_save_data()将其写入磁盘。但这会将不需要的文件内容加载到内存中。我认为 Curl 可用于直接将 HTTP 文件下载到磁盘。

在保存节点时下载文件可能是一个性能问题(因为它会增加响应时间)。在这种情况下,您可以将其延迟到hook_cron. 您可以使用作业队列轻松地将图像下载排入队列以供下一个 cron 使用。如果在 Drupal 的 cron 期间运行有问题,您也可以尝试使用Drupal 队列模块来单独处理下载。

于 2010-07-13T07:51:53.207 回答