taglib- ruby может предоставить информацию, которую вы ищете. Посмотрите в документации по его установке.
Убедитесь, что гем и его требуемая системная зависимость taglib установлены. Загрузите файл из исходного URL-адреса и сохраните его в каталоге Rails.root/tmp
. (Предполагая, что вы можете получить URL-адрес файла, в котором он хранится в переменной source_url
)
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
duration_str
, если искомое значение. В идеале вы должны хранить его в своей базе данных, чтобы вы могли использовать его всякий раз, когда генерируете свой канал RSS.