Class: Typingpool::Filer::Files::Audio
- Inherits:
-
Typingpool::Filer::Files
- Object
- Typingpool::Filer::Files
- Typingpool::Filer::Files::Audio
- Defined in:
- lib/typingpool/filer/files/audio.rb
Overview
Handler for collection of Filer::Audio instances. Does everything Filer::Files does, plus can batch convert to mp3 an can merge the Filer::Audio instances into a single audio file, provided they are in mp3 format.
Instance Attribute Summary
Attributes inherited from Typingpool::Filer::Files
Instance Method Summary collapse
- #file(path) ⇒ Object
-
#initialize(files) ⇒ Audio
constructor
Constructor.
-
#merge(into_file) ⇒ Object
Merge Filer::Audio instances into a single new file, provided they are all in mp3 format.
-
#to_mp3(dest_dir, bitrate = nil) ⇒ Object
Batch convert Filer::Audio instances to mp3 format.
Methods inherited from Typingpool::Filer::Files
#as, #each, #mv!, #to_streams
Methods included from Utility::Castable
Constructor Details
#initialize(files) ⇒ Audio
Constructor. Takes an array of Filer or Filer subclass instances.
12 13 14 |
# File 'lib/typingpool/filer/files/audio.rb', line 12 def initialize(files) @files = files.map{|file| self.file(file.path) } end |
Instance Method Details
#file(path) ⇒ Object
16 17 18 |
# File 'lib/typingpool/filer/files/audio.rb', line 16 def file(path) Filer::Audio.new(path) end |
#merge(into_file) ⇒ Object
Merge Filer::Audio instances into a single new file, provided they are all in mp3 format.
Params
- into_file
-
Filer or Filer subclass instance corresponding to
the location of the new, merged file that should be created.
Returns
Filer::Audio instance corresponding to the new, merged file.
49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/typingpool/filer/files/audio.rb', line 49 def merge(into_file) raise Error::Argument, "No files to merge" if self.to_a.empty? if self.count > 1 Utility.system_quietly('mp3wrap', into_file, *self.to_a) written = File.join(into_file.dir, "#{File.basename(into_file.path, '.*') }_MP3WRAP.mp3") FileUtils.mv(written, into_file) else FileUtils.cp(self.first, into_file) end self.file(into_file.path) end |
#to_mp3(dest_dir, bitrate = nil) ⇒ Object
Batch convert Filer::Audio instances to mp3 format.
Params
- dest_dir
-
Filer::Dir instance corresponding to directory into which mp3 file versions will be created.
- bitrate
-
See documentation for Filer::Audio#bitrate.
Returns
Filer::Files::Audio instance corresponding to new mp3 versions of the original files or, in the case where the original file was already in mp3 format, corresponding to the original files themselves.
30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/typingpool/filer/files/audio.rb', line 30 def to_mp3(dest_dir, bitrate=nil) mp3s = self.map do |file| if file.mp3? file else yield(file) if block_given? file.to_mp3(dest_dir.file("#{File.basename(file.path, '.*') }.mp3"), bitrate) end end self.class.new(mp3s) end |