ó
\¬L\c           @` s  d  d l  m Z m Z m Z m Z d d l m Z m Z m Z e rM e	 Z
 n  d  d l Z d  d l Z d  d l Z d d l m Z d d l m Z d d l m Z d d	 d
 d d d d d d d d d d d d d d g Z d   Z d   Z d d d     YZ d S(   i    (   t   unicode_literalst   divisiont   absolute_importt   print_functioni   (   t   PY2t   bstrt   utf8_strN(   t	   MobiIndex(   t
   fromBase32(   t   pathoft   covers
   title-paget   toct   indext   glossaryt   acknowledgementst   bibliographyt   colophons   copyright-paget
   dedicationt   epigrapht   forewardt   loit   lott   notest   prefacet   textc         C` so   t  d |  } t j | t j  } xC t j | |   D]/ } | j   } |  j d | d  } | | f SWd S(   Nu"   <[^>]*\said\s*=\s*['"]%s['"][^>]*>t   >i   i    (   i    i    (   R   t   ret   compilet
   IGNORECASEt   finditert   startt   find(   t   mlt   aidt   patternt   aid_patternt   mt   pltt   pgt(    (    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_k8proc.pyt   locate_beg_end_of_tag   s    c         c` s}   t  |   } xj t rx |  j d d |  } | d k r: Pn  |  j d d |  } | d k r_ Pn  |  | | d !V| } q Wd  S(   NR   i    i’’’’t   <i   (   t   lent   Truet   rfind(   t   blockt   endR&   R%   (    (    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_k8proc.pyt   reverse_tag_iter*   s    	t   K8Processorc           B` s¤   e  Z e 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 RS(   c      	   C` sé  | |  _  | |  _ t |  |  _ | |  _ | j |  _ | j |  _ | j |  _ | j |  _ i  |  _	 d  |  _ g  |  _ d  |  _ g  |  _ t   |  _ d d g |  _ | |  _ |  j d k r“|  j  j |  j  } | d d !d k r§t j d | d  \ } t j t d | d  | d	  d  d  d  | j f |  _ | j |  j d
  |  j r±t d |  x@ t |  D]/ } t d | |  j | |  j | d f  qnWq±q“t d  n  g  } |  j d k rE|  j j |  j d  \ }	 }
 d } xU |	 D]J \ } } | j | | | d d | d d | d d g  | d 7} qōWn  | |  _ |  j r¬t d t |  j   t d  x1 t t |  j   D] } t |  j |  qWn  g  } |  j d k rV|  j j |  j d  \ }	 }
 xt |	 D]i \ } } | d d } |
 | } | j t |  | | d d | d d | d d | d d g  qęWn  | |  _  |  j r½t d t |  j    t d  x1 t t |  j    D] } t |  j  |  qWn  g  } |  j d k r~|  j j |  j d  \ }	 }
 x |	 D] \ } } | d d } |
 | } | } d  } d | k rD| d d } n  d | k ra| d d } n  | j | | | g  q÷Wn  | |  _! |  j råt d t |  j!   t d  x1 t t |  j!   D] } t |  j! |  qĒWn  d  S(   Ni    I’’’’    i   t   FDSTs   >Li   u   >%dLi   i   u   KF8 FDST INDXu   
FDST Section Map:  %d sectionsu   Section %d: 0x%08X - 0x%08Xi   u&   
Error: K8 Mobi with Missing FDST infou   KF8 Skeletoni   u   
Skel Table:  %d entriesuL   table: filenum, skeleton name, frag tbl record count, start position, lengthu   KF8 Fragmenti   u   
Fragment Table: %d entriesuU   table: file position, link id text, file num, sequence number, start position, lengthu   KF8 Guide elements)u   
Guide Table: %d entriesu0   table: ref_type, ref_title, fragtbl entry number("   t   sectt   filesR   t   mit   mht   skelidxt   fragidxt   guideidxt   fdstt   flowmapt   Nonet   flowst   flowinfot   partst   partinfot   sett   linked_aidst   fdsttblt   DEBUGt   loadSectiont   structt   unpack_fromR   t   rawSizet   setsectiondescriptiont   printt   ranget   getIndexDatat   appendt   skeltblR)   t   intt   fragtblt   guidetbl(   t   selfR4   R1   R2   t   debugt   headert   num_sectionst   jRL   t   outtblt	   ctoc_textt   fileptrR   t   tagMapRN   t
   ctocoffsett   ctocdataRO   t	   ref_titlet   ref_typet   fileno(    (    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_k8proc.pyt   __init__9   s    									=	34		

L		

		
c   0   
   C` s  g  |  _  xY t d t |  j  d  D]; } |  j | } |  j | d } |  j  j | | | ! q& W|  j  d } d |  j  d <|  j r t d  n  g  |  _ g  |  _ d } d } d } d | }	 xų|  j	 D]ķ\ }
 } } } } | | } | | | !} d } x|t |  D]n} |  j
 | \ } } } } } } | d d !} | d k rWd | }	 n  | | | | !} | | } | |  } | | } | } | j d	  | j d
  k  sČ| j d	  | j d
  k  rt d |  t | |  \ } } | | k r| d | } qn  | | k rMt d | | | |  | } | | |  j
 | d <n  | d | !| | | } | | } | d 7} qW| d 7} |  j j |  |  j j |
 d |	 | | | g  qĶ Wd j |  j  } |  j r"t j j |  j j d  } t t |  d   }  |  j |  Wd  QXn  |  j j d  d  d  d  g  t j d t j  }! t j d t j  }" xHt d t |  j    D].} |  j  | }# d | }$ t j |! |#  }% |% d  k	 r(d }& |% j   } t j |" |#  }' |' d  k	 rd }( d  }) d  }* |# | }# qd }( d }) d |$ d }* n^ |# j d  d k rfd }& d |# d }# d }( d  }) d  }* n  d }& d }( d }) d |$ d }* |# |  j  | <|  j j |& |( |) |* g  qW|  j r3t d  t |  j   x |  j D] }+ t |+  qŻWt d!  t d" t |  j   x |  j D] }, t |,  qWn  t rt d#  t j d$ t j  }- x± t j |- |  D] }% |  j |% j    \ }	 }. } } |  j  |% j    \ } } t! |% j" d   }/ t d% |% j" d  |/ |% j   |. | | f  t d& | | f  qkWn  d  S('   Ni    i   t    u4   
Rebuilding flow piece 0: the main body of the ebooku   part%04d.xhtmlu   0i   iž’’’R   R(   uN   The fragment table for %s has incorrect insert position. Calculating manually.u,   fixed corrupt fragment table insert positionu   Textu   assembled_text.datu   wbs   (<svg[^>]*>)s   (<image[^>]*>)u   %04dt   svgt   inlinet   fileu   Imagesu   svgimgu   .svgs   [CDATA[t   csss   <style type="text/css">
s
   
</style>
u   Stylesu   styleu   .cssu   
Flow Map:  %d entriesu   
u1   
XHTML File Part Position Information: %d entriesu   
positions of all aid= piecess(   <[^>]*\said\s*=\s*['"]([^'"]*)['"][^>]*>u:     aid: %s value: %d at: %d -> part: %d, start: %d, end: %du          %s  fragtbl entry %d(#   R;   RI   R)   RA   RK   RB   RH   R=   R>   RL   RN   R   R+   R'   t   joint   ost   pathR2   t   k8dirt   openR	   t   writeR<   R:   R   R   R   t   searchR   t   FalseR   t   getFileInfot   getFragTblInfoR   t   group(0   RP   t   rawMLRT   R   R-   R   t   fragptrt   baseptrt   cntt   filenamet   skelnumt   skelnamet   fragcntt   skelpost   skellent   skeletont   aidtextt   it	   insertpost   idtextt   filenumt   seqnumt   startpost   lengtht   slicet   headt   tailt   actual_inspost   bpt   ept   assembled_textt   outassembledt   ft   svg_tag_patternt   image_tag_patternt   flowpartt   nstrR$   t   ptypet   m2t   pformatt   pdirt   fnamet   fit   pit
   id_patternt   partnumt   value(    (    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_k8proc.pyt
   buildParts”   sÄ    	#			




<

&	
	 	

!/c   	      C` s   x t  t |  j   D]i } |  j | \ } } } } } } | | k re | | | k  re | d | f S| | k  r | d | f Sq Wd S(   Ns   in: s   before: (   NN(   RI   R)   RN   R:   (	   RP   t   posRT   R|   R}   R~   R   R   R   (    (    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_k8proc.pyRm   6  s    c         C` sR   xK |  j  D]@ \ } } } } } } | | k r
 | | k  r
 | | | | f Sq
 Wd S(   N(   NNNN(   R>   R:   (   RP   R   R   R   Rs   R   R-   Rz   (    (    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_k8proc.pyRl   A  s    "c         C` s   t  |  j  S(   N(   R)   R=   (   RP   (    (    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_k8proc.pyt   getNumberOfPartsH  s    c         C` s0   | d k r, | t  |  j  k  r, |  j | Sd  S(   Ni    (   R)   R=   R:   (   RP   R{   (    (    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_k8proc.pyt   getPartK  s    !c         C` s0   | d k r, | t  |  j  k  r, |  j | Sd  S(   Ni    (   R)   R>   R:   (   RP   R{   (    (    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_k8proc.pyt   getPartInfoP  s    !c         C` s   t  |  j  S(   N(   R)   R;   (   RP   (    (    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_k8proc.pyt   getNumberOfFlowsU  s    c         C` s0   | d k r, | t  |  j  k  r, |  j | Sd  S(   Ni    (   R)   R;   R:   (   RP   R{   (    (    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_k8proc.pyt   getFlowX  s    !c         C` s0   | d k r, | t  |  j  k  r, |  j | Sd  S(   Ni    (   R)   R<   R:   (   RP   R{   (    (    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_k8proc.pyt   getFlowInfo^  s    !c         C` sĄ   t  |  } t  |  } |  j | \ } } } } }	 }
 | | } |  j |  \ } } } } | d  k r§ t d | d  |  j | d } |  j |  \ } } } } n  |  j |  } | | f S(   Nu   Link To Positionu,   does not exist, retargeting to top of targeti   (   R   RN   Rl   R:   RH   RL   t   getIDTag(   RP   t   posfidt   offsett   rowt   offR|   R}   R~   t   seqnmR   R   R   R   t   pnRw   t   skelend(    (    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_k8proc.pyt   getIDTagByPosFidd  s    
c         C` s­  |  j  |  \ } } } } | d  k rC | d  k rC t d |  n  |  j | } | | } | j d |  } | j d |  }	 |	 | k s | |	 k  r£ | d } n  | d | !} t j d t j  }
 t j d t j  } t j d  } x½ t |  D]Æ } | d d	 !d
 k rd S| d d	 !d k rö |
 j	 |  pA| j	 |  } | d  k	 r]| j
 d  S| j	 |  } | d  k	 r„|  j j | j
 d   d | j
 d  Sqö qö Wd S(   Nu#   Error: getIDTag - no file contains R   R(   i   i    s!   <[^>]*\sid\s*=\s*['"]([^'"]*)['"]s#   <[^>]*\sname\s*=\s*['"]([^'"]*)['"]s*   <[^>]+\s(?:aid|AID)\s*=\s*['"]([^'"]+)['"]i   s   <body R_   s   <meta s   aid-(   Rl   R:   RH   R=   R   R   R   R   R.   t   matchRn   R@   t   add(   RP   R   R   R§   Rw   RØ   t	   textblockt   nposR&   R%   R   t   name_patternR#   t   tagR$   (    (    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_k8proc.pyR”   y  s2    
c         C` sS   t  |  t  |  j  k s! t  x+ t t  |   D] } | | |  j | <q4 Wd  S(   N(   R)   R=   t   AssertionErrorRI   (   RP   R=   R{   (    (    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_k8proc.pyt   setParts  s    !c         C` sS   t  |  t  |  j  k s! t  x+ t t  |   D] } | | |  j | <q4 Wd  S(   N(   R)   R;   R°   RI   (   RP   R;   R{   (    (    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_k8proc.pyt   setFlows¤  s    !c         C` sj   xQ |  j  D]F \ } } } } } } | | k r
 | | k  r
 | | | | | | g Sq
 Wd  d  d  d  d  d  g S(   N(   R>   R:   (   RP   R   R   R   Rs   R   R-   Rz   (    (    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_k8proc.pyt   getSkelInfoŖ  s    "c         C` s@  d } x|  j  D]
\ } } } | d k r1 q n  | t k ro | j d  ro | d k rb d } qo d | } n  |  j | \ } } } } }	 }
 |  j |  \ } } } } } } |  j |  } | j d  } | d k rź | d | 7} n  | d | d	 | d
 t |  d | d 7} q W| j |  j	 j
  j d  } | S(   NR_   t   thumbimagestandards   other.R   R   u   utf-8t   #s   <reference type="s	   " title="s   " href="t   /s   " />
(   RO   t   _guide_typest
   startswithRN   R³   R”   t   encodeR   t   decodeR4   t   codec(   RP   t	   guidetextR\   R[   R]   R   R}   R~   R¦   R   R   R§   R   Rs   Rw   RØ   Rz   t   linktgt(    (    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_k8proc.pyt   getGuideText±  s"    	!4c         C` sĖ  |  j  |  \ } } } } | d  k rC | d  k rC t d |  n  |  j | } | | } | j d |  } | j d |  }	 |	 | k s | |	 k  r| j d |  }
 | j d |  } |
 d k rä | d k rä t |
 |  } n t |
 |  } | d k r| } q| d } n  | d | !} t j d	 t j	  } t j d
 t j	  } xx t
 |  D]j } | d d !d k rvd S| d d !d k rY| j |  p¤| j |  } | d  k	 rĆ| j d  SqYqYWd S(   Nu#   Error: getIDTag - no file contains R   R(   s   />s   </i’’’’i   i    s!   <[^>]*\sid\s*=\s*['"]([^'"]*)['"]s#   <[^>]*\sname\s*=\s*['"]([^'"]*)['"]i   s   <body R_   s   <meta (   Rl   R:   RH   R=   R   t   mint   maxR   R   R   R.   RŖ   Rn   (   RP   R   R   R§   Rw   RØ   R¬   R­   R&   R%   t   pend1t   pend2t   pendR   R®   RÆ   R$   (    (    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_k8proc.pyt   getPageIDTagĘ  s6    
	(   t   __name__t
   __module__Rk   R^   R   Rm   Rl   R   R   R   R   R   R    R©   R”   R±   R²   R³   R¾   RÄ   (    (    (    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_k8proc.pyR/   7   s"   h											%				(    (   t
   __future__R    R   R   R   t   compatibility_utilsR   R   R   t   xrangeRI   Re   RD   R   t
   mobi_indexR   t
   mobi_utilsR   t   unipathR	   R·   R'   R.   R/   (    (    (    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_k8proc.pyt   <module>   s   "			