Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何从rails活动存储中获取mp3持续时间?_Ruby On Rails_Rss_Feed - Fatal编程技术网

Ruby on rails 如何从rails活动存储中获取mp3持续时间?

Ruby on rails 如何从rails活动存储中获取mp3持续时间?,ruby-on-rails,rss,feed,Ruby On Rails,Rss,Feed,我想为我的rails应用程序创建一个RSS提要,并将其提交给iTunes和其他服务。苹果使用的价值观之一是: <itunes:duration>DURATION H:MM:SS</itunes:duration> 持续时间H:MM:SS 如何通过活动存储从存储在Amazon云上的mp3文件中获取它 谢谢。可以提供您需要的信息。查看有关如何安装它的文档 确保安装了gem及其所需的系统依赖项。 从源url下载文件并将其保存在Rails.root/tmp目录中。(假设您可以

我想为我的rails应用程序创建一个RSS提要,并将其提交给iTunes和其他服务。苹果使用的价值观之一是:

<itunes:duration>DURATION H:MM:SS</itunes:duration>
持续时间H:MM:SS
如何通过活动存储从存储在Amazon云上的mp3文件中获取它

谢谢。

可以提供您需要的信息。查看有关如何安装它的文档

确保安装了gem及其所需的系统依赖项。 从源url下载文件并将其保存在
Rails.root/tmp
目录中。(假设您可以获取文件所在的url,并将其存储在变量
source\u url
中)


duration\u str
如果您要查找的值。理想情况下,您应该将其存储在数据库中,以便在生成RSS提要时使用它。

您应该研究一个过程,在上载新mp3时,从文件中导出一些参数(a.o.持续时间),例如上载图像时,上载时也会生成缩略图。对于已经上传的文件,您必须创建一个脚本/任务来下载它们,确定持续时间,并更新数据库中的一个属性(我认为动态执行此操作的成本太高)。你知道如何从mp3文件中获取持续时间吗?查看mp3相关的gems:@pawciorr-您尝试过上面建议的任何库吗?非常感谢,我会尝试使用您的建议,并让您知道它是否有效。
target_path = 'tmp/downloaded_audio.mp3'

IO.copy_stream(open(source_url), target_path) # download the source file

TagLib::FileRef.open(target_path) do |f|
 t = f.audio_properties.length_in_seconds
 duration_str =  (t/3600).to_i.to_s.rjust(2,'0') + ":"+Time.at(t).utc.strftime("%M:%S")
end