Module: Exportify::Tagger

Defined in:
lib/exportify/tagger.rb

Class Method Summary collapse

Class Method Details

.tag(filepath, track) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/exportify/tagger.rb', line 7

def tag(filepath, track)
  python = <<~PY
    from mutagen.id3 import ID3, TIT2, TPE1, TALB, TDRC, TRCK, TPE2, TCON, error
    from mutagen.mp3 import MP3
    try:
      tags = ID3(#{filepath.inspect})
    except error:
      tags = ID3()
    tags['TIT2'] = TIT2(encoding=3, text=#{track[:raw_name].inspect})
    tags['TPE1'] = TPE1(encoding=3, text=#{track[:all_artists].inspect})
    tags['TPE2'] = TPE2(encoding=3, text=#{track[:artist].inspect})
    tags['TALB'] = TALB(encoding=3, text=#{track[:album].inspect})
    tags['TDRC'] = TDRC(encoding=3, text=#{track[:year].inspect})
    tags['TRCK'] = TRCK(encoding=3, text=#{track[:track_number].to_s.inspect})
    tags['TCON'] = TCON(encoding=3, text=#{track[:genre].to_s.inspect})
    tags.save(#{filepath.inspect})
  PY
  system('python3', '-c', python)
end