
    M@c                     J    d dl Z d dlmZ d dlmZmZ d dlmZ  G d de      Zy)    N)
formatSize)printMsg
getTtySize)LoaderPluginc                   4     e Zd ZddgZdZdZd Z fdZ xZS )LameInfoPluginlameinfoxingz-Outputs lame header (if one exists) for file.a  The 'lame' (or xing) header provides extra information about the mp3 that is useful to players and encoders but not officially part of the mp3 specification. Variable bit rate mp3s, for example, use this header.

For more details see `here <http://gabriel.mp3-tech.org/mp3infotag.html>`_c                     t               d   }t        | j                  ||             t        | j                  |             y )N   )r   r   _getFileHeader_getHardRule)self	file_pathws      8/usr/lib/python3/dist-packages/eyed3/plugins/lameinfo.pyprintHeaderzLameInfoPlugin.printHeader   s5    LO$$Y23""1%&    c                    t         |   |       | j                  y | j                  |       | j                  j                   | j                  j                  j
                  st        d       y | j                  j                  j
                  }d|vr	 t        d|d           y d|d   fd|d   fd|d	   fd
|d   fg}d|v r	 |d   d   }dt        j                  |      z  }d||fz  }|j                  d|f       dD ]B  }		 |d   |	   }
d|
d   j                         z  }|
d   d|
d   d}|j                  ||f       D |j                  ddj                  |d         f       |d   r%|j                  ddj                  |d         f       |j                  d|d   f       |j                  d |d!   d"   z  |d!   d#   f       |j                  d$d%|d&   z  f       |j                  d'd%|d(   z  f       |j                  d)|d*   f       |j                  d+|d,   f       |j                  d-|d.   f       |j                  d/|d0   f       |j                  d1d2|d3   |d3   d4z  fz  f       |j                  d5|d6   f       |j                  d7|d8   f       |j                  d9d:t        |d;         z  f       |j                  d<d=|d>   z  f       |j                  d?d=|d   z  f       |D ]  }t        |d#   d@dA|d"            y # t        $ r Y y w xY w# t        $ r Y 3w xY w# t        $ r Y Aw xY w)BNzNo LAME Taginfotag_crczEncoder Version: encoder_versionzEncoder VersionzLAME Tag Revisiontag_revisionz
VBR Method
vbr_methodzLowpass Filterlowpass_filter
replaygainpeak_amplitude   z%.8f (%+.1f dB)zPeak Amplitude)radio	audiofilez%s Replay Gainname
adjustmentz dB (
originator)zEncoding Flags encoding_flagsnogapzNo Gapz and zATH Typeath_typezBitrate (%s)bitrater   r   zEncoder Delayz
%s samplesencoder_delayzEncoder Paddingencoder_paddingzNoise Shapingnoise_shapingzStereo Modestereo_modezUnwise Settingsunwise_settingszSample Frequencysample_freqzMP3 Gainz%s (%+.1f dB)mp3_gaing      ?PresetpresetzSurround Infosurround_infozMusic Lengthz%smusic_lengthzMusic CRC-16z%04X	music_crczLAME Tag CRC-16z<20z: )super
handleFile
audio_filer   infolame_tagr   KeyErrormathlog10append
capitalizejoinr   )r   f___ltvaluespeakdbvaltype_gainr    v	__class__s                r   r6   zLameInfoPlugin.handleFile   s   1??"OO  (++44]#__!!**",R0A-B,CDE $b):&;<&>(:;L!12#R(8%9: 2,'(89$**T**'4*4/56 0 l+E2D+d6l.E.E.GGD*.|*<*.|*<>CMM4+. 	'26F3G)IJKg;MM8W\\"W+%>?@z2j>23~9a(88"Y-:JKLr/7J(JKL(,<M9N*NOP?(;<=}b&789("->*?@A)2m+<=>z?bn68ns6J6L $L M 	NxH./?(;<=~tjN9K.L'LMN~v;'?@A(&2m3D*DEF 	,A!SzAaD6*+	,_        s6   L :L( ?L8	L%$L%(	L54L58	MM)	__name__
__module____qualname__NAMESSUMMARYDESCRIPTIONr   r6   __classcell__)rK   s   @r   r   r      s,     E=G	U '
?, ?,r   r   )	r;   eyed3.utilsr   eyed3.utils.consoler   r   eyed3.pluginsr   r    r   r   <module>rW      s     " 4 &O,\ O,r   