Search code examples
ruby-on-railsrubycarrierwavetaglib-ruby

Rails tag_id3v1 mp3


Rails 4.2 ap and taglib-ruby gem

I have tried a few approaches to tag my audio files using taglib-ruby.

I have tried as a carrierwave process, and now, I am trying to tag after_save.

My question, if I am doing a callback after_save:

 def tag_id3v1(tags)
   TagLib::MPEG::File.open(file.path) do |file|
   tag = file.id3v1_tag(true)
   tag.title = :title
   file.save
end

end

what should my file path be? I have tried :file, :file_name, and the uploader version url, #{track.mp3.url}

I am trying to reopen the saved files and write the tags to the files. Does anyone have any hints on the best approach to do this?


Solution

  • Finally

    TagLib::MPEG::File.open(file.file) do |file|
    

    Always something like, "file.file". No matter the approach, that is what did the trick for me.

    I ended up doing this in a carrierwave callback inside of a :version. Final code

    version :mp3 do
      process :convert => [:mp3] 
    
      def full_filename(for_file)
       "#{super.chomp(File.extname(super))}.mp3"
      end  
    
      after :store, :tag_id3v2
    
      end
    
    
     def tag_id3v2(for_file)
      TagLib::MPEG::File.open(file.file) do |file|
      tag = file.id3v2_tag(true)
      tag.title = "#{model.title}"
      file.save
     end
     end 
    
    (...)