class FilterRename::Mp3Filename

Public Class Methods

has_writable_tags() click to toggle source
# File lib/filter_rename/filetype/mp3_filename.rb, line 7
def self.has_writable_tags
  true
end
new(fname, cfg) click to toggle source
Calls superclass method FilterRename::Filename::new
# File lib/filter_rename/filetype/mp3_filename.rb, line 11
def initialize(fname, cfg)
  super fname, cfg

  load_mp3_data(fname)
end

Public Instance Methods

==(dest) click to toggle source
Calls superclass method FilterRename::Filename#==
# File lib/filter_rename/filetype/mp3_filename.rb, line 17
def ==(dest)
  super &&
  ([ @title, @artist, @album, @track, @comments, @year, @genre ] ==
   [ dest.get_string(:title), dest.get_string(:artist), dest.get_string(:album), dest.get_string(:track),
     dest.get_string(:comments), dest.get_string(:year), dest.get_string(:genre) ])
end
diff(dest) click to toggle source
Calls superclass method FilterRename::Filename#diff
# File lib/filter_rename/filetype/mp3_filename.rb, line 47
def diff(dest)
  super(dest) + "
   Title:    #{Differ.diff_by_word(dest.get_string(:title).to_s, @title.to_s)}
   Artist:   #{Differ.diff_by_word(dest.get_string(:artist).to_s, @artist.to_s)}
   Album:    #{Differ.diff_by_word(dest.get_string(:album).to_s, @album.to_s)}
   Track:    #{Differ.diff_by_word(dest.get_string(:track).to_s, @track.to_s)}
   Comments: #{Differ.diff_by_word(dest.get_string(:comments).to_s, @comments.to_s)}
   Year:     #{Differ.diff_by_word(dest.get_string(:year).to_s, @year.to_s)}
   Genre:    #{Differ.diff_by_word(dest.get_string(:genre).to_s, @genre.to_s)}
   "
end
rename!(dest) click to toggle source
Calls superclass method FilterRename::Filename#rename!
# File lib/filter_rename/filetype/mp3_filename.rb, line 24
def rename!(dest)
  old_data = super dest

  Mp3Info.open(full_filename) do |mp3|
    old_data.merge!({ title: mp3.tag.title, artist: mp3.tag.artist, album: mp3.tag.album,
                      tracknum: mp3.tag.tracknum, comments: mp3.tag.comments, year: mp3.tag.year,
                      genre_s: mp3.tag.genre_s })

    mp3.tag.title = dest.get_string(:title)
    mp3.tag.artist = dest.get_string(:artist)
    mp3.tag.album = dest.get_string(:album)
    mp3.tag.tracknum = dest.get_string(:track)
    mp3.tag.comments = dest.get_string(:comments).to_s
    mp3.tag.year = dest.get_string(:year)
    mp3.tag.genre_s = dest.get_string(:genre)

  end

  load_mp3_data(full_filename)

  old_data
end

Private Instance Methods

load_mp3_data(fname) click to toggle source
# File lib/filter_rename/filetype/mp3_filename.rb, line 62
def load_mp3_data(fname)
  mp3info = Mp3Info.new(fname)
  @title = mp3info.tag.title.to_s
  @artist = mp3info.tag.artist.to_s
  @album = mp3info.tag.album.to_s
  @track = mp3info.tag.tracknum.to_i
  @comments = mp3info.tag.comments.to_s
  @year = mp3info.tag.year.to_i
  @genre = mp3info.tag.genre_s.to_s

  # read only stuff
  @vbr = (mp3info.tag.vbr ? 'vbr' : '')
  @samplerate = mp3info.samplerate.to_s
  @bitrate = mp3info.bitrate.to_s

  [@vbr, @samplerate, @bitrate].map(&:readonly!)
end