Class: FilterRename::Mp3Filename

Inherits:
Filename
  • Object
show all
Defined in:
lib/filter_rename/filetype/mp3_filename.rb

Instance Attribute Summary

Attributes inherited from Filename

#original

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Filename

#!=, #calculate_hash, #custom?, #exists?, #filename, #full_filename, #full_path, #get_string, #has_target?, #pretty_size, #set_string, #targets, #values, #writable?

Constructor Details

#initialize(fname, cfg) ⇒ Mp3Filename

Returns a new instance of Mp3Filename.



11
12
13
14
15
# File 'lib/filter_rename/filetype/mp3_filename.rb', line 11

def initialize(fname, cfg)
  super fname, cfg

  load_mp3_data(fname)
end

Class Method Details

.has_writable_tagsObject



7
8
9
# File 'lib/filter_rename/filetype/mp3_filename.rb', line 7

def self.has_writable_tags
  true
end

Instance Method Details

#==(dest) ⇒ Object



17
18
19
20
21
22
# File 'lib/filter_rename/filetype/mp3_filename.rb', line 17

def ==(dest)
  super &&
  ([ @title, @artist, @album, @track, @comments, @year, @genre, @genre_s ] ==
   [ 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), dest.get_string(:genre_s) ])
end

#diff(dest) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
# 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)}
   GenreS:   #{Differ.diff_by_word(dest.get_string(:genre_s).to_s, @genre_s.to_s)}
   "
end

#rename!(dest) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# 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,
                      track: mp3.tag.tracknum, comments: mp3.tag.comments, year: mp3.tag.year,
                      genre: mp3.tag.genre, 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 = dest.get_string(:genre).to_i % 256 
    mp3.tag.genre_s = dest.get_string(:genre_s)
  end

  load_mp3_data(full_filename)

  old_data
end