Как извлечь длительность mp3 с рельсов активной памяти? - PullRequest
0 голосов
/ 07 января 2020

Я хочу создать RSS-канал для своего приложения rails и отправить его в iTunes и другие службы. Apple использует одно из следующих значений:

<itunes:duration>DURATION H:MM:SS</itunes:duration>

Как получить его из mp3-файла, хранящегося в облаке Amazon через Active Storage?

Спасибо.

1 Ответ

1 голос
/ 08 января 2020

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.

...