ó
\¬L\c           @` si  d  d l  m Z m Z m Z m Z d  d l Z d d l m Z d Z d Z	 d Z
 d Z d	 Z d Z d
 Z d Z d Z d Z d Z d Z d Z d Z d Z d Z d Z d Z d Z d Z d Z d Z d Z d Z d d „ Z  d d „ Z! d „  Z" d „  Z# d  „  Z$ d! „  Z% d" „  Z& d# „  Z' d$ „  Z( d% „  Z) d& „  Z* d' „  Z+ d( „  Z, d) „  Z- d* d, d+ „  ƒ  YZ. d S(-   i    (   t   unicode_literalst   divisiont   absolute_importt   print_functionNi   (   t   pathofiD   iL   i   i   iN   i   i   i   i$   iP   iT   il   iÀ   iÂ   iÈ   iÐ   ià   iä   iô   i   ip   ix   t   Lc         C` s    t  j d | |  | ƒ \ } | S(   Nt   >(   t   structt   unpack_from(   t   dataint   ofst   szt   i(    (    s9   /home/sid/Downloads/KindleUnpack-master/lib/mobi_split.pyt   getint,   s    c         C` sX   | d k r0 |  |  t  j d | ƒ |  | d S|  |  t  j d | ƒ |  | d Sd  S(   NR   s   >Li   s   >Hi   (   R   t   pack(   R	   R
   t   nt   len(    (    s9   /home/sid/Downloads/KindleUnpack-master/lib/mobi_split.pyt   writeint0   s    $c         C` s£   t  |  t d ƒ } | d | @k o- | k  n sH t d | | f ƒ ‚ t  |  t | d ƒ } | | d k r~ t |  ƒ } n t  |  t | d d ƒ } | | f S(   Nt   Hi    u   secno %d out of range (nsec=%d)i   i   (   R   t   number_of_pdb_recordst   AssertionErrort   first_pdb_recordR   (   R	   t   secnot   nsect   secstartt   secend(    (    s9   /home/sid/Downloads/KindleUnpack-master/lib/mobi_split.pyt
   getsecaddr6   s    6c         C` s    t  |  | ƒ \ } } |  | | !S(   N(   R   (   R	   R   R   R   (    (    s9   /home/sid/Downloads/KindleUnpack-master/lib/mobi_split.pyt   readsection@   s    c         C` s=  g  } t  |  t d ƒ } t |  d ƒ \ } } t |  | ƒ \ } } t | ƒ | | }	 | j |  t  ƒ | j t j d d | d ƒ ƒ | j |  t d t !ƒ | j t j d | ƒ ƒ | }
 xc t d | ƒ D]R } t j	 d |  t
 | d	 ƒ \ } } | j t j d | ƒ t j d | ƒ ƒ qÏ W| j t j d | ƒ t j d d | ƒ ƒ xq t | d | ƒ D]\ } t j	 d |  t
 | d	 ƒ \ } } | |	 } | j t j d | ƒ t j d | ƒ ƒ qfW|
 t
 d	 | } | d k rø| j d
 | ƒ n  | j |  | | !ƒ | j | ƒ | j |  | ƒ d j | ƒ } | S(   NR   i    s   >Li   i   i   s   >Hs   >2Li   s    t    (   R   R   R   R   t   appendt   unique_id_seedR   R   t   rangeR   R   t   join(   R	   R   t   secdatat   datalstR   t   zerosecstartt
   zerosecendR   R   t   dift   newstartR   R
   t   flgvalt   lpadt   dataout(    (    s9   /home/sid/Downloads/KindleUnpack-master/lib/mobi_split.pyt   writesectionD   s4    !#--#
-c         C` s¥  g  } t  |  t d ƒ } t |  | ƒ \ } } t |  d ƒ \ } } | | } | j |  t  ƒ xg t d | d ƒ D]R }	 t j d |  t |	 d ƒ \ }
 } | j t j d |
 ƒ t j d | ƒ ƒ qq Wxq t | d | ƒ D]\ }	 t j d |  t |	 d ƒ \ }
 } |
 | }
 | j t j d |
 ƒ t j d | ƒ ƒ qÛ W| t d | } | d k rm| j d | ƒ n  | j |  | | !ƒ | j |  | ƒ d j	 | ƒ } | S(	   NR   i    i   s   >2Li   s   >Ls    R   (
   R   R   R   R   R   R   R   R   R   R    (   R	   R   R"   R   R   R   R#   R$   R%   R   R
   R'   R(   R)   (    (    s9   /home/sid/Downloads/KindleUnpack-master/lib/mobi_split.pyt   nullsectionb   s(    
#-#
-c         C` s~  g  } t  |  | ƒ \ } } t  |  | ƒ \ } } t  |  d ƒ \ } }	 | | d | | d }
 t |  t d ƒ } | j |  t  ƒ | j t j d d | | | d d ƒ ƒ | j |  t d t !ƒ | j t j d | | | d ƒ ƒ | d | | d } xy t d | ƒ D]h } t j d	 |  t	 | d ƒ \ } } | d | | d } | j t j d | ƒ t j d | ƒ ƒ qWx‡ t | d | ƒ D]r } t j d	 |  t	 | d ƒ \ } } | |
 } d | | | d } | j t j d | ƒ t j d | ƒ ƒ q’W| t	 d | | | d } | d k rF| j d
 | ƒ n  | j |  | | !ƒ | j |  | ƒ d j
 | ƒ } | S(   Ni    i   i   R   s   >Li   i   s   >Hs   >2Ls    R   (   R   R   R   R   R   R   R   R   R   R   R    (   R	   t   firstsect   lastsecR"   t   firstsecstartt   firstsecendt   lastsecstartt
   lastsecendR#   R$   R%   R   R&   R   R
   R'   R(   R)   (    (    s9   /home/sid/Downloads/KindleUnpack-master/lib/mobi_split.pyt   deletesectionrangex   s6    -%#-#
-c         C` sa  g  } t  |  t d ƒ } t |  | ƒ \ } } t |  d ƒ \ } } t | ƒ }	 | j |  t  ƒ | j t j d d | d d ƒ ƒ | j |  t d t !ƒ | j t j d | d ƒ ƒ | d }
 xm t d | ƒ D]\ } t j	 d	 |  t
 | d ƒ \ } } | d 7} | j t j d | ƒ t j d | ƒ ƒ qÓ W| j t j d | d ƒ t j d d | ƒ ƒ x t | | ƒ D]n } t j	 d	 |  t
 | d ƒ \ } } | |	 d } d | d } | j t j d | ƒ t j d | ƒ ƒ qtW|
 t
 d | d } | d k r| j d
 | ƒ n  | j |  | | !ƒ | j | ƒ | j |  | ƒ d j | ƒ } | S(   NR   i    s   >Li   i   i   s   >Hi   s   >2Ls    R   (   R   R   R   R   R   R   R   R   R   R   R   R    (   R	   R   R!   R"   R   R   R   R#   R$   R%   R&   R   R
   R'   R(   R)   (    (    s9   /home/sid/Downloads/KindleUnpack-master/lib/mobi_split.pyt   insertsection•   s8    %
#
-1#-c         C` s  g  } t  | t d ƒ } t | d ƒ \ } } t | | ƒ \ }	 }
 | | d } t |  | ƒ \ } }
 t |  | ƒ \ }
 } | d | } | j | t  ƒ | j t j d d | | d ƒ ƒ | j | t d t !ƒ | j t j d | | ƒ ƒ xw t d | ƒ D]f } t j d	 | t	 | d ƒ \ } } | d | } | } | j t j d | ƒ t j d | ƒ ƒ qWt |  | ƒ \ } }
 xz t | ƒ D]l } t |  | | ƒ \ } }
 |	 | | d | } d | | } | j t j d | ƒ t j d | ƒ ƒ qW| | } xƒ t | | ƒ D]r } t j d	 | t	 | d ƒ \ } } | | d | } d | | } | j t j d | ƒ t j d | ƒ ƒ qW| t	 d | | } | d k rÅ| j d
 | ƒ n  | j | | |	 !ƒ | j |  | | !ƒ | j | |	 ƒ d j
 | ƒ } | S(   NR   i    i   i   s   >Li   i   s   >Hs   >2Ls    R   (   R   R   R   R   R   R   R   R   R   R   R    (   t   sectionsourceR,   R-   t   sectiontargett	   targetsecR"   R   R#   R$   t   insstartt   nult   ninst   srcstartt   srcendR&   R   R
   R'   t   ofsnewt	   flgvalnewt	   srcstart0t	   isrcstartR%   R(   R)   (    (    s9   /home/sid/Downloads/KindleUnpack-master/lib/mobi_split.pyt   insertsectionrangeµ   sJ    %#--
#-c         C` sF   t  t |  t ƒ } t |  | d ƒ } t |  | d ƒ } | | | f S(   Ni   i   (   t   mobi_header_baseR   t   mobi_header_length(   t   rec0t   ebaset   elent   enum(    (    s9   /home/sid/Downloads/KindleUnpack-master/lib/mobi_split.pyt   get_exth_paramså   s    c         C` s±   t  |  ƒ \ } } } d t | ƒ } |  d | d !t j d | | ƒ t j d | d ƒ t j d | ƒ t j d | ƒ | |  | d } t | t t | t ƒ | ƒ } | S(   Ni   i    i   s   >Li   i   (   RG   R   R   R   R   t   title_offsetR   (   RC   t   exth_numt
   exth_bytesRD   RE   RF   t
   newrecsizet   newrec0(    (    s9   /home/sid/Downloads/KindleUnpack-master/lib/mobi_split.pyt   add_exthë   s
    ic         C` s¤   g  } t  |  ƒ \ } } } | d } xx | d k rŸ t |  | ƒ } | | k r{ | j |  | d | t |  | d ƒ !ƒ n  | d } | t |  | d ƒ } q( W| S(   Ni   i    i   i   i   (   RG   R   R   (   RC   RI   t   exth_valuesRD   RE   RF   t   exth_id(    (    s9   /home/sid/Downloads/KindleUnpack-master/lib/mobi_split.pyt	   read_exthó   s    
,
c         C` sb  t  |  ƒ \ } } } | d } | } x6| d k r]t |  | ƒ } | | k r9t | ƒ d t |  | d ƒ }	 |  }
 |	 d k r¤ t |
 t t |
 t ƒ |	 ƒ }
 n  |
 | d  t j d | t | ƒ d t |  | d ƒ ƒ t j d | ƒ |  | d | d !t j d t | ƒ d ƒ | |  | t |  | d ƒ S| d } | t |  | d ƒ } q( W|  S(   Ni   i    i   i   s   >Li   (   RG   R   R   R   RH   R   R   (   RC   RI   RJ   RD   RE   RF   t	   ebase_idxt   enum_idxRO   R%   RL   (    (    s9   /home/sid/Downloads/KindleUnpack-master/lib/mobi_split.pyt
   write_exth   s    
!"{
c   
      C` s  t  |  ƒ \ } } } | d } d } xÖ | | k  rý t |  | ƒ } t |  | d ƒ } | | k ræ |  }	 t |	 t t |	 t ƒ | ƒ }	 |	 |  |	 | | }	 |	 d | d !t j d | | ƒ t j d | d ƒ |	 | d }	 |	 S| d 7} | | } q( W|  S(   Ni   i    i   s   >Li   (   RG   R   R   RH   R   R   (
   RC   RI   RD   RE   RF   RQ   RR   RO   t	   exth_sizeRL   (    (    s9   /home/sid/Downloads/KindleUnpack-master/lib/mobi_split.pyt   del_exth  s    
E
t
   mobi_splitc           B` s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C` sÞ  d } t  t | ƒ d ƒ  } | j ƒ  } Wd  QXt | d ƒ } t | t ƒ } | d k |  _ |  j sj d  St | d ƒ } t | ƒ d k r˜ t	 |  _ d  St
 j d | d d ƒ \ } | d k rÍ t	 |  _ d  St | | ƒ } t | t d ƒ }	 t | | d	 |	 d
 ƒ |  _ t | t ƒ }
 t | t ƒ } |
 d k rˆ| d k rˆt |  j |
 |
 | d	 ƒ |  _ t | t d ƒ } t | t d ƒ } n  t | d t
 j d d ƒ ƒ } t | d d ƒ } t
 j d | d ƒ \ } | d @} | d  t
 j d | ƒ | d } t |  j d | ƒ |  _ t | t ƒ } t | t d ƒ } | d k r¼t d f t d f t d f t d f g } xN | D]C \ } } t | | | ƒ } | d k rr| | k  rr| d	 } qrqrWn  t d | | ƒ xT t | | ƒ D]C } t |  j | ƒ } | d d !d k rÜt |  j | ƒ |  _ qÜqÜWt | d | d	 ƒ |  _ t | t ƒ } t | | | |  j | ƒ |  _ t |  j d ƒ } t | d ƒ } t | ƒ } x) | d	 k rÁ| d	 8} t  | d ƒ } q™Wt | d t
 j d | | d	 ƒ ƒ } t
 j d | d ƒ \ } | d @} | d O} | d  t
 j d | ƒ | d } t! d f t d f t d f t d f t d f g } xV | D]N \ } } t | | | ƒ } | d k rpt | | | | | d	 | ƒ } qpqpWt |  j d | ƒ |  _ d  S(   NR   u   rbi    i   iy   s   >LIÿÿÿÿ    R   i   i   i   i€   iÿ  i„   iÿÿ  R   u   First Image, last Imagei   t   RESCt   FONTit   i}   u   >Liÿ  i   (   RW   RX   ("   t   openR   t   readR   R   t   mobi_versiont   comboRP   R   t   FalseR   R   R   R2   t   result_file7t
   srcs_indext
   srcs_countR   RS   R   R*   t   first_resc_recordt   last_content_indext
   fcis_indext
   flis_indext
   datp_indext
   hufftblofft   printR   R+   t   result_file8R@   RU   t   kf8_fdst_index(   t   selft   infileR	   t   ft   datain_rec0t   vert   exth121t
   datain_kf8t   datain_kfrec0t   num_sect   srcst   num_srcst   fvalt
   firstimaget	   lastimaget   ofs_listR
   R   R   R   t   imgsect   targett	   kf8startst   kf8start_count(    (    s9   /home/sid/Downloads/KindleUnpack-master/lib/mobi_split.pyt   __init__'  s€    			 
"*
&

"3(c         C` s   |  j  S(   N(   Rh   (   Rj   (    (    s9   /home/sid/Downloads/KindleUnpack-master/lib/mobi_split.pyt
   getResult8²  s    c         C` s   |  j  S(   N(   R^   (   Rj   (    (    s9   /home/sid/Downloads/KindleUnpack-master/lib/mobi_split.pyt
   getResult7µ  s    (   t   __name__t
   __module__R}   R~   R   (    (    (    s9   /home/sid/Downloads/KindleUnpack-master/lib/mobi_split.pyRV   %  s   	‹	(    (/   t
   __future__R    R   R   R   R   t   unipathR   R   R   t   book_lengtht   book_record_countR   t   length_of_bookRA   RB   t	   mobi_typeR[   t   first_non_textRH   Ra   t   first_content_indexRb   Ri   Rc   Rd   R_   R`   t   primary_indexRe   t   huffoffRf   R   R   R   R   R*   R+   R2   R3   R@   RG   RM   RP   RS   RU   RV   (    (    (    s9   /home/sid/Downloads/KindleUnpack-master/lib/mobi_split.pyt   <module>   sR   "	
					 	0					