
    Z'i\	                     F    d dl Z d dlZd dlmZmZ d dlmZ  G d de      Zy)    N)abstractmethodABCMeta)minify_coverc                       e Zd ZeZd Zd Zed        Zd Z	d Z
d Zed        Zd Zd	 ZddZd Zed        Zd Zd Zy
)BookFilec                     || _         || _        || _        || _        d | _        g | _        g | _        d | _        d | _        g | _	        d| _
        y )N )filemimetypeoriginal_filenametitledescriptionauthorstagsseries_infolanguage_codeissuesdocdate)selfr
   r   r   s       (/opt/sopds/book_tools/format/bookfile.py__init__zBookFile.__init__	   sS    	 !2&
	!    c                     | S N r   s    r   	__enter__zBookFile.__enter__   s    r   c                      y r   r   )r   kindvalue	tracebacks       r   __exit__zBookFile.__exit__   s    r   c                     | j                  |      \  }}|r+|s)t        t        j                  j	                  ||             |S r   )extract_cover_internalr   ospathjoin)r   working_dircoverminifieds       r   extract_coverzBookFile.extract_cover   s7    55kBxk59:r   c                      y)N)NFr   r   r(   s     r   r$   zBookFile.extract_cover_internal#   s    r   c                      y r   r   r   s    r   extract_cover_memoryzBookFile.extract_cover_memory&   s    r   c                 "    t        | t              S r   )
isinstancestrtexts    r   	__is_textzBookFile.__is_text)   s    $$$r   c                 j    |r1t         j                  |      r|j                         }|r|| _        y y y y r   )r   _BookFile__is_textstripr   )r   r   s     r   __set_title__zBookFile.__set_title__-   s3    X''.KKME"
  /5r   c                 j    |r1t         j                  |      r|j                         }|r|| _        y y y y r   )r   r7   r8   r   )r   r   s     r   __set_docdate__zBookFile.__set_docdate__3   s3    x))'2mmoG&  37r   Nc                 4   |rt         j                  |      sy t         j                  |      }|sy |r|j                         }|s|j	                         d   }t         j                  |      j                         }| j                  j                  ||d       y )N)namesortkey)r   r7   __normalise_string__r8   splitlowerr   append)r   r>   r?   s      r   __add_author__zBookFile.__add_author__9   s|    8--d3,,T2mmoGjjl2&G//8>>@Tg>?r   c                     |rEt         j                  |      r/|j                         }|r| j                  j	                  |       y y y y r   )r   r7   r8   r   rC   )r   r4   s     r   __add_tag__zBookFile.__add_tag__F   s>    H&&t,::<D		  &  -4r   c                 R    | y t        j                  dd| j                               S )Nz\s+ )resubr8   r3   s    r   r@   zBookFile.__normalise_string__L   s#    <vvfc4::<00r   c                     i S r   r   r   s    r   get_encryption_infozBookFile.get_encryption_infoR   s    	r   c                      y r   r   r-   s     r   repairzBookFile.repairU   s    r   r   )__name__
__module____qualname__r   __metaclass__r   r   r   r"   r+   r$   r/   staticmethodr7   r9   r;   rD   rF   r@   rL   rN   r   r   r   r   r      s{    M   % %#'@' 1 1
r   r   )	r%   rI   abcr   r   book_tools.format.utilr   objectr   r   r   r   <module>rW      s     ' /Pv Pr   