
\L\c           @` s   d  d l  m Z m Z m Z m Z e Z e rA d  d l m Z	 n e
 Z	 d d l m Z m Z m Z m Z e rx e Z n  d  d l Z d  d l Z d d l m Z d d l m Z m Z m Z d e f d	     YZ d
   Z d   Z d d d     YZ d S(   i    (   t   unicode_literalst   divisiont   absolute_importt   print_function(   t   OrderedDicti   (   t   PY2t   unicode_strt   hexlifyt   bordN(   t   getLanguage(   t   HuffcdicReadert   PalmdocReadert   UncompressedReadert   unpackExceptionc           B` s   e  Z RS(    (   t   __name__t
   __module__(    (    (    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_header.pyR      s   c         ` s+   t  t   j    d   f d   } | S(   Nt   keyc         ` s     |  d S(   Ni    (    (   t   akey(   t   mheader(    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_header.pyt   <lambda>    t    (   t   sortedt   listt   keys(   R   t   hdrkeys(    (   R   s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_header.pyt   sortedHeaderKeys   s    'c         C` s5  d } i d d 6d d 6} |  | k r3 | |  } n  | d k rC d  SiL d d 6d d	 6d
 d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d  d! 6d" d# 6d$ d% 6d& d' 6d( d) 6d* d+ 6d, d- 6d. d/ 6d0 d1 6d2 d3 6d4 d5 6d6 d7 6d8 d9 6d: d; 6d< d= 6d> d? 6d@ dA 6dB dC 6dD dE 6dF dG 6dH dI 6dJ dK 6dL dM 6dN dO 6dP dQ 6dR dS 6dT dU 6dV dW 6dX dY 6dZ d[ 6d\ d] 6d^ d_ 6d` da 6db dc 6dd de 6df dg 6dh di 6dj dk 6dl dm 6dn do 6dp dq 6dr ds 6dt du 6dv dw 6dx dy 6dz d{ 6d| d} 6d~ d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6} i d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6} i d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6} t  j d | d d ! \ } } | d } d }	 xt |  D]}
 t  j d | |	 |	 d ! \ } } | |	 d |	 | !} | | k r| | } t d | | j | d d f  n@| | k r| | } | d k r1t  j d |  \ } t d | | f  q#| d k rit  j d |  \ } t d | | f  q#| d k rt  j d |  \ } t d | | f  q#t d | | f  nk | | k r| | } t d | t |  f  n8 t d |  t |  d } t d | t |  f  |	 | 7}	 qiWd  S(   Nu   windows-1252i  u   utf-8i  R   u   Drm Server Idi   u   Drm Commerce Idi   u   Drm Ebookbase Book Idi   u   Drm Ebookbase Dep Idi   u   Creatorid   u	   Publisherie   u   Imprintif   u   Descriptionig   u   ISBNih   u   Subjectii   u	   Publishedij   u   Reviewik   u   Contributoril   u   Rightsim   u   SubjectCodein   u   Typeio   u   Sourceip   u   ASINiq   u   versionNumberir   u   Adultiu   u   Retail-Priceiv   u   Retail-Currencyiw   u   TSCix   u   fixed-layoutiz   u	   book-typei{   u   orientation-locki|   u   original-resolutioni~   u   zero-gutteri   u   zero-margini   u   MetadataResourceURIi   u   RegionMagnificationi   u   LendingEnabledi   u   DictShortNamei   u   cdeTypei  u   last_update_timei  u   Updated_Titlei  u   CDEContentKeyi  u   AmazonContentReferencei  u   Title-Languagei  u   Title-Display-Directioni  u   Title-Pronunciationi  u   Title-Collationi  u   Secondary-Titlei  u   Secondary-Title-Languagei  u   Secondary-Title-Directioni   u   Secondary-Title-Pronunciationi  u   Secondary-Title-Collationi  u   Author-Languagei  u   Author-Display-Directioni  u   Author-Pronunciationi  u   Author-Collationi  u   Author-Typei  u   Publisher-Languagei  u   Publisher-Display-Directioni	  u   Publisher-Pronunciationi
  u   Publisher-Collationi  u   Content-Language-Tagi  u   primary-writing-modei  u   NCX-Ingested-By-Softwarei  u   page-progression-directioni  u   override-kindle-fontsi  u   Compression-Upgradedi  u   Soft-Hyphens-In-Contenti  u   Dictionary_In_Langaguei  u   Dictionary_Out_Languagei  u   Font_Convertedi  u   Amazon_Creator_Infoi  u   Creator-Build-Tagi  u   HD-Media-Containers-Infoi  u   Resource-Container-Fidelityi  u   HD-Container-Mimetypei  u   Sample-For_Special-Purposei  u    Kindletool-Operation-Informationi  u   Container_Idi  u
   Asset-Typei  u   Unknown_544i   u   sampleis   u   StartOffsetit   u   Mobi8-Boundary-Sectioniy   u   Embedded-Record-Counti}   u   Offline-Samplei   u   Metadata-Record-Offseti   u   CoverOffseti   u   ThumbOffseti   u   HasFakeCoveri   u   Creator-Softwarei   u   Creator-Major-Versioni   u   Creator-Minor-Versioni   u   Creator-Build-Numberi   u   Clipping-Limiti  u   Publisher-Limiti  u   Text-to-Speech-Disabledi  u   Rental-Expiration-Timei  u   Watermark_(hex)i   u   Tamper-Proof-Keys_(hex)i   u   Font-Signature_(hex)i,  u   Unknown_(403)_(hex)i  u   Ownership-Type_(hex)i  u   Unknown_(407)_(hex)i  u"   Multimedia-Content-Reference_(hex)i  u   Locations_Match_(hex)i  u   Full-Story-Length_(hex)i  u   Sample-Start_Location_(hex)i  u   Sample-End-Location_(hex)i  s   >LLi   i    i   u"   
    Key: "%s"
        Value: "%s"t   errorsu   replacei	   t   Bu$   
    Key: "%s"
        Value: 0x%01xi
   s   >Hu$   
    Key: "%s"
        Value: 0x%02xs   >Lu$   
    Key: "%s"
        Value: 0x%04xu.   
Error: Value for %s has unexpected size of %su"   
    Key: "%s"
        Value: 0x%su+   
Warning: Unknown metadata with id %s foundu    (hex)u!       Key: "%s"
        Value: 0x%s(   t   structt   unpackt   ranget   printt   decodeR   t   str(   t   cpaget	   extheadert   codect	   codec_mapt   id_map_stringst   id_map_valuest   id_map_hexstringst   _lengtht	   num_itemst   post   _t   idt   sizet   contentt   namet   value(    (    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_header.pyt   dump_contexth+   s    




#
&

t
   MobiHeaderc           B` s  e  Z i dvd 6dwd 6dxd 6dyd	 6dzd 6d{d 6Z iU d|d 6d}d 6d~d 6dd	 6dd 6dd 6dd 6dd 6dd 6dd 6dd 6dd 6dd 6dd 6dd! 6dd# 6dd% 6dd' 6dd) 6dd+ 6dd- 6dd/ 6dd1 6dd3 6dd5 6dd7 6dd9 6dd; 6dd= 6dd? 6ddA 6ddC 6ddE 6ddG 6ddI 6ddK 6ddM 6ddO 6ddQ 6ddS 6ddU 6ddW 6ddY 6dd[ 6dd] 6dd_ 6dda 6ddc 6dde 6ddg 6ddi 6ddk 6ddm 6dd] 6ddp 6ddr 6ddt 6ddv 6ddx 6ddz 6dd| 6dd~ 6dd 6dd 6dd 6dd 6dd 6dd 6dd 6dd 6dd 6dd 6dd 6dd 6dd 6dd 6dd 6dd 6dd 6dd 6dd 6dd 6dd 6dd 6dd 6Z iT dd 6dd 6dd 6dd	 6dd 6dd 6dd 6dd 6dd 6dd 6dd 6dd 6dd 6dd 6dd! 6dd# 6dd% 6dd' 6dd) 6dd+ 6dd- 6dd/ 6dd1 6dd3 6dd5 6dd7 6dd9 6dd; 6dd= 6dd? 6ddA 6ddC 6ddE 6ddG 6ddI 6ddK 6ddM 6ddO 6ddQ 6ddS 6ddU 6ddW 6ddY 6dd[ 6dd] 6dd_ 6dda 6d dc 6dde 6ddg 6ddi 6dd 6dd 6ddp 6ddr 6ddt 6d	dv 6d
dx 6ddz 6dd| 6dd~ 6dd 6dd 6dd 6dd 6dd 6dd 6dd 6dd 6dd 6dd 6dd 6dd 6dd 6dd 6dd 6dd 6dd 6dd 6d d 6d!d 6d"d 6d#d 6d$d 6Z e e  Z e e  Z e e  Z iL d d 6d d 6d d 6d d 6d d< 6d d 6d d 6d d 6d d> 6d d 6d d 6d d 6d d@ 6d d 6d d 6d d 6d dB 6d d 6d d 6d d 6d d 6d d 6d dF 6d d 6d d 6d dH 6d d 6d d 6d dJ 6d d 6d dL 6d d 6d do 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6dd6dd6dd6dd6d	d
6dd6dd6dd6dd6dd6dd6dd6dd6dd6dd6dd 6d!d"6d#d$6d%d&6d'd(6d)d*6d+d,6d-d.6d/d06Z	 i d1d26d3dD 6d4d56d6d76d8d96d:d;6d<d=6d>d?6d@dA6dBdq 6dCdD6dEdF6dGdH6dIdJ6dKdL6dMdN6dOdP6Z
 i dQds 6dRdS6dTd 6dUdV6dWdX6dYdZ6d[d\6d]d^6d_d`6dadb6dcdd6Z de  Z df  Z dg  Z dh  Z di  Z dj  Z dk  Z dl  Z dm  Z dn  Z do  Z dp  Z dq  Z dr  Z ds  Z dt  Z du  Z RS(%  i    s   >Hi   u   compression_typeu   fill0i   s   >Lu   text_lengthi   u   text_recordsi
   u   max_section_sizei   u   read_pos   u   crypto_typei   u   fill1i   t   4su   magici   u   header_length (from MOBI)i   u   typei   u   codepagei    u	   unique_idi$   u   versioni(   u   metaorthindexi,   u   metainflindexi0   u   index_namesi4   u
   index_keysi8   u   extra_index0i<   u   extra_index1i@   u   extra_index2iD   u   extra_index3iH   u   extra_index4iL   u   extra_index5iP   u   first_nontextiT   u   title_offsetiX   u   title_lengthi\   u   language_codei`   u   dict_in_langid   u   dict_out_langih   u   min_versionil   u   first_resc_offsetip   u   huff_offsetit   u   huff_numix   u   huff_tbl_offseti|   u   huff_tbl_leni   u
   exth_flagsi   u   fill3_ai   u   fill3_bi   u   fill3_ci   u   fill3_di   u   fill3_ei   u   fill3_fi   u   fill3_gi   u   fill3_hi   u   unknown0i   u
   drm_offseti   u	   drm_counti   u   drm_sizei   u	   drm_flagsi   u   fill4_ai   u   fill4_bi   u   first_contenti   u   last_contenti   i   u   fcis_offseti   u
   fcis_counti   u   flis_offseti   u
   flis_counti   u   unknown1i   u   unknown2i   u   srcs_offseti   u
   srcs_counti   u   unknown3i   u   unknown4i   u   fill5i   u   traildata_flagsi   u	   ncx_indexi   u   unknown5i   u   unknown6i   u   datp_offseti  u   unknown7i  u   Unknown    i  i  i  i  i  i   i$  i(  i,  i0  i4  i8  u   fdst_offsetu   fdst_flow_countu   fragment_indexu   skeleton_indexu   guide_indexu   Drm Server Idi   u   Drm Commerce Idu   Drm Ebookbase Book Idi   u   Drm Ebookbase Dep Idu   Creatoru	   Publisherie   u   Imprintif   u   Descriptionig   u   ISBNu   Subjectii   u	   Publishedij   u   Reviewik   u   Contributoru   Rightsim   u   SubjectCodein   u   Typeio   u   Sourceu   ASINiq   u   versionNumberir   u   Adultiu   u   Retail-Priceiv   u   Retail-Currencyiw   u   TSCu   fixed-layoutiz   u	   book-typei{   u   orientation-locku   original-resolutioni~   u   zero-gutteri   u   zero-marginu   MetadataResourceURIi   u   RegionMagnificationu   LendingEnabledi   u   DictShortNameu   cdeTypei  u   last_update_timei  u   Updated_Titlei  u   CDEContentKeyi  u   AmazonContentReferencei  u   Title-Languagei  u   Title-Display-Directioni  u   Title-Pronunciationi  u   Title-Collationi  u   Secondary-Titlei  u   Secondary-Title-Languagei  u   Secondary-Title-Directioni   u   Secondary-Title-Pronunciationi  u   Secondary-Title-Collationi  u   Author-Languagei  u   Author-Display-Directioni  u   Author-Pronunciationi  u   Author-Collationi  u   Author-Typei  u   Publisher-Languagei  u   Publisher-Display-Directioni	  u   Publisher-Pronunciationi
  u   Publisher-Collationi  u   Content-Language-Tagi  u   primary-writing-modei  u   NCX-Ingested-By-Softwarei  u   page-progression-directioni  u   override-kindle-fontsi  u   Compression-Upgradedi  u   Soft-Hyphens-In-Contenti  u   Dictionary_In_Langaguei  u   Dictionary_Out_Languagei  u   Font_Convertedi  u   Amazon_Creator_Infoi  u   Creator-Build-Tagi  u   HD-Media-Containers-Infoi  u   Resource-Container-Fidelityi  u   HD-Container-Mimetypei  u   Sample-For_Special-Purposei  u    Kindletool-Operation-Informationi  u   Container_Idi  u
   Asset-Typei  u   Unknown_544i   u   sampleis   u   StartOffsetu   Mobi8-Boundary-Sectioniy   u   Embedded-Record-Counti}   u   Offline-Samplei   u   Metadata-Record-Offseti   u   CoverOffseti   u   ThumbOffseti   u   HasFakeCoveri   u   Creator-Softwareu   Creator-Major-Versioni   u   Creator-Minor-Versioni   u   Creator-Build-Numberi   u   Clipping-Limiti  u   Publisher-Limiti  u   Text-to-Speech-Disabledi  u   Rental-Expiration-Timei  u   Watermark_(hex)u   Tamper-Proof-Keys_(hex)i   u   Font-Signature_(hex)u   Unknown_(403)_(hex)i  u   Ownership-Type_(hex)i  u   Unknown_(407)_(hex)i  u"   Multimedia-Content-Reference_(hex)i  u   Locations_Match_(hex)i  u   Full-Story-Length_(hex)i  u   Sample-Start_Location_(hex)i  u   Sample-End-Location_(hex)i  c         C` s  | |  _  | |  _ |  j  j |  j  |  _ t |  j  d k rt |  j d d !d k rt |  j  j d d  t |  _ n= |  j  j d k r |  j  j d d  t	 |  _ n t
 d   t j d	 |  j d
  \ |  _ |  j  j j d d d |  _ t |  j  d |  _ d |  _ d |  _ d |  _ d |  _ d |  _ t |  _ d |  _ |  j d |  _ d |  _ d |  _ |  j |  j d |  _ |  j |  j d |  _ d |  _ d |  _ d |  _  d |  _! d |  _" d |  _# d |  _$ |  j  j |  j d  d  |  _% d |  _& t'   |  _( t j d	 |  j d  \ |  _) |  j) d k rt*   } t j d |  j d  \ } } | |  j } |  j  j | d  | j+ |  j  j |   xO t, d |  D]> } |  j  j | | d |  | j- |  j  j | |   qW| j. |  _. nU |  j) d k rt/   j. |  _. n4 |  j) d k r6t0   j. |  _. n t
 d |  j)   |  j rVd  St j. d |  j d d ! \ |  _ |  _ |  _ |  _ |  _ i d d 6d d 6} |  j | k r| |  j |  _ n  t j. d  |  j d! d" ! \ } }	 | |	 }
 |  j | |
 !j |  j d d |  _ t j. d# |  j d$ d% ! \ } | d& @|  _ |  j d |  _ d |  _ |  j rt j d# |  j |  j d  \ |  _ |  j d d ?d >|  _ |  j |  j |  j |  j !|  _ n  |  j1   t j d	 |  j d'  \ |  _ t j d# |  j d(  \ } | d k r'| |  j |  _ n  t j d# |  j d)  \ } | d k ra| |  j |  _ n  |  j2   rqd  S|  j d
 k  rt j d# |  j d  \ |  _ |  j d k r|  j |  j 7_ n  t j d# |  j d*  \ |  _  |  j  d k r|  j  |  j 7_  qn  |  j d d+ k  rd  St j. d# |  j d, d+ ! \ |  _ |  j d k rd|  j |  j 7_ n  |  j d k s|  j d
 k rt j d# |  j d-  \ |  _! |  j! d k r|  j! |  j 7_! n  t j d# |  j d+  \ |  _" |  j" d k r|  j" |  j 7_" n  t j d# |  j d.  \ |  _# |  j# d k rH|  j# |  j 7_# n  d |  _ d |  _  t j d# |  j d/  \ |  _$ t j d# |  j d0  \ |  _3 |  j3 d k rd |  _$ n  |  j$ d k r|  j$ |  j 7_$ qn  d  S(1   Ni   i   t   MOBIi    u   Mobipocket Headert   TEXtREAdu   PalmDOC Headeru   Unknown File Formats   >Hi   u   latin-1R   u   replacei   i  u   windows-1252R   i   I    i   iHD  s   >LLip   u   Huffman Compression Seedu    Huffman CDIC Compression Seed %di   u   invalid compression type: 0x%4xs   >LLLLLi(   u   utf-8i  s   >IIiT   i\   s   >Li   i   i@   i   il   iP   i,   i   i   i   i  i   i   (4   t   sectt   startt   loadSectiont   headert   lent   setsectiondescriptiont   Falset   palmt   identt   TrueR   R   t   unpack_fromt   recordst   palmnameR    t   titlet   lengtht   typet   codepageR$   t	   unique_idt   versiont   hasExtht   extht   exth_offsett   exth_lengtht   crypto_typet   firstnontextt   firstresourcet   ncxidxt   metaOrthIndext   metaInflIndext   skelidxt   fragidxt   guideidxt   fdstt   mlstartt   rawSizet   dict_t   metadatat   compressionR
   t   loadHuffR   t   loadCdicR   R   R   t   parseMetaDatat   isPrintReplicat   fdstcnt(   t   selfR7   t
   sectNumbert   readert   huffofft   huffnumt   iR%   t   tofft   tlent   tendt	   exth_flagt   ofst(    (    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_header.pyt   __init__  s    		+																 		!	:
"
%		%#
"		c      
   C` s  |  j  } |  j s1 |  j d k s1 |  j d k r5 d  St j d |  j d d ! \ } d } t d  xt |  D]} t j d |  j | | d ! \ } } | d } |  j | d | | !} | t j	 k r	t j	 | }	 t d j
 | | |	 | j | d	 d
   nn| t j k rt j | }	 | d k rbt j d |  \ }
 t d j
 | |	 |
   qw| d k rt j d |  \ }
 t d j
 | |	 |
   qw| d k rt j d |  \ }
 t d j
 | |	 |
   qwt d j
 | | d |	 t |    nr | t j k rFt j | }	 t d j
 | | |	 t |    n1 d j
 |  }	 t d j
 | | |	 t |    | | 7} qq Wd  S(   Ni    R   s   >Li   i   u-   Key Size Decription                     Values   >LLu!   {0: >3d} {1: >4d} {2: <30s} {3:s}R   u   replacei	   R   u   {0:3d} byte {1:<30s} {2:d}i
   s   >Hu'   {0:3d} word {1:<30s} 0x{2:0>4X} ({2:d})u'   {0:3d} long {1:<30s} 0x{2:0>8X} ({2:d})u%   {0: >3d} {1: >4d} {2: <30s} (0x{3:s})u   Bad size for u   {0:3d} {1:4d} {2:<30s} 0x{3:s}u   Unknown EXTH ID {0:d}u#   {0: >3d} {1: >4d} {2: <30s} 0x{3:s}(   R$   RJ   RM   RK   R   R   R   R   R3   R&   t   formatR    R'   R   R(   (   Rb   R$   R*   R+   R,   R-   R.   t   contentsizeR/   t	   exth_nameR1   (    (    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_header.pyt	   dump_exth  s@    	(
&
.)%"c   	      C` s  t  d |  j |  j |  j d f  i  |  _ |  j d k rW t j |  _ t j |  _	 nB |  j d k  r t j
 |  _ t j |  _	 n t j |  _ t j |  _	 xe |  j	 D]Z } |  j | \ } } } | |  j d k  r t j | |  j |  \ } | |  j | <q q Wd |  j k r-|  j d } |  j d } n d } d } | d k r{t |  j  } d } |  j j j d d d	 |  _ n? |  j | | | !j |  j d d	 |  _ | d
 d d
 ?d
 >} |  j |  j |  j | !|  _ |  j | | |  _ t  d |  j  t  d  x |  j	 D] } |  j | \ } } } | |  j d k  r| d k r|d t d d
 |  d t d
 |  d } n  t |  j |  |  j | <d } t  | j | d |  j | |   qqWt  d  |  j d k rt  d |  j |  j f  |  j   t  d  n  t |  j  d k r\t  d t |  j   t  t |  j   t  d  n  | d k rt  d | | |  j f  t  d  n  t |  j  d k rt  d t |  j   t  t |  j   t  d  n  d  S(   NuB   Dumping section %d, Mobipocket Header version: %d, total length %di   i    i   u   title_offsetu   title_lengthu   latin-1R   u   replacei   i   u!   Mobipocket header from section %du-        Offset  Value Hex Dec        Descriptionu   magicu   0x{0:0>3X} ({0:3d}){1: >i	   u	   s}0x{2:0>u   X} {2:10d} {3:s}u,   0x{0:0>3X} ({0:3d}){2:>11s}            {3:s}u    u    u*   EXTH metadata, offset %d, padded length %du,   Extra data between EXTH and Title, length %du4   Title in header at offset %d, padded length %d: '%s'u5   Extra data between Title and end of header, length %d(    R   R8   RI   RE   t   hdrR3   t   palmdoc_headert   mobi_headert   palmdoc_header_sorted_keyst   mobi_header_sorted_keyst   mobi6_headert   mobi6_header_sorted_keyst   mobi8_headert   mobi8_header_sorted_keysR   RA   R:   R;   R7   RC   R    RD   R$   RL   RM   t   extra1t   extra2R!   R   Rn   Rq   R   (	   Rb   R   R+   Rn   t   tot_lent   valt   title_offsett   title_lengtht
   fmt_string(    (    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_header.pyt
   dumpheader  sl    $	!)
1*

c         C` s   |  j  d d !d k S(   Ni    i   s   %MOP(   RX   (   Rb   (    (    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_header.pyR`      s    c         C` s   |  j  d k p |  j d k S(   Ni    i   (   R8   RI   (   Rb   (    (    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_header.pyt   isK8  s    c         C` s   |  j  d k S(   Ni    (   RN   (   Rb   (    (    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_header.pyt   isEncrypted  s    c         C` s   |  j  d k S(   NI    (   RQ   (   Rb   (    (    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_header.pyt   hasNCX	  s    c         C` s   |  j  d k S(   NI    (   RR   (   Rb   (    (    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_header.pyt   isDictionary  s    c         C` s   |  j  S(   N(   RQ   (   Rb   (    (    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_header.pyt   getncxIndex  s    c         C` s   |  j  |  S(   N(   R   (   Rb   t   data(    (    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_header.pyt
   decompress  s    c         C` sE   t  j d |  j d d ! d } | d @} | d ?d @} t | |  S(   Ns   !Li\   i`   i    i   i   (   R   R   R:   R	   (   Rb   t   langcodet   langidt	   sublangid(    (    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_header.pyt   Language  s     
c         C` sd   |  j    r` t j d |  j d d ! d } | d @} | d ?d @} | d k r` t | |  Sn  t S(   Ns   !Li`   id   i    i   i
   (   R   R   R   R:   R	   R=   (   Rb   R   R   R   (    (    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_header.pyt   DictInLanguage  s     
c         C` sd   |  j    r` t j d |  j d d ! d } | d @} | d ?d @} | d k r` t | |  Sn  t S(   Ns   !Lid   ih   i    i   i
   (   R   R   R   R:   R	   R=   (   Rb   R   R   R   (    (    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_header.pyt   DictOutLanguage$  s     
c   	      ` s  d         f d   } d  d  |  j  j d k r t j d |  j d  \ } t j d |  j d  \ } | d k r | d	 k r t j d
 |  j d  \ } | d @ x4 | d k r | d @r  d 7 n  | d ?} q Wq n  t d  g  } x t d |  j d  D] } | |  j  j |  j	 |   } | j
 |  j |   |  j   r}|  j  j |  j	 | d j |   q|  j d k r|  j  j |  j	 | d j |   q|  j  j |  j	 | d j |   qWd j |  } t |  |  _ | S(   Nc         S` sP   d } xC |  d D]7 } t  |  d @r0 d } n  | d >t  |  d @B} q W| S(   Ni    ii   i   i   (   R   (   R   t   numt   v(    (    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_header.pyt   getSizeOfTrailingDataEntry.  s    	c         ` s^   x+ t    D] }   |   } |  |  }  q W rZ t |  d  d @d } |  |  }  n  |  S(   Nii   i   (   R   t   ord(   R   R,   R   (   R   t	   multibytet   trailers(    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_header.pyt   trimTrailingDataEntries5  s    i    t   BOOKMOBIs   >Li   ih   i   i   s   >Hi   i   i   u   Unpacking raw markup languageu   KF8 Text Section {0:d}u   PalmDOC Text Section {0:d}u   Mobipocket Text Section {0:d}R   (   R7   R?   R   RA   R:   R   R   RB   R9   R8   t   appendR   R   R<   Rn   RI   t   joinR;   RY   (	   Rb   R   t   mobi_lengtht   mobi_versiont   flagst   dataListRg   R   t   rawML(    (   R   R   R   s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_header.pyt   getRawML-  s6    	


&&'c         ` sQ    f d   }   j  }   j r  j } t j d | d d ! \ } } | d } d } x4t |  D]#} t j d | | | d ! \ } }	 | | d | |	 !}
 | t j k r t j | } | | |
 j | d d  n| t j	 k r$t j	 | } |	 d	 k r8t j d
 |
  \ } | | t
 t |    q|	 d k rut j d |
  \ } | | t
 t |    q|	 d k rt j d |
  \ } | d k s| d k r| d k r| | t
 t |    qq!| | t
 t |    qt d | |	 t |
   | | t |
   n[ | t j k rVt j | } | | t |
   n) t
 t |   d } | | t |
   | |	 7} qf Wn    j   g   j d <t
   j   j   g   j d <  j  g   j d <t
 t   j   g   j d <d   j k r+t
 t t j     g   j d <n  d   j k rMd g   j d <n  d  S(   Nc         ` s:   |    j  k r" | g   j  |  <n   j  |  j |  d  S(   N(   R[   R   (   R0   R1   (   Rb   (    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_header.pyt   addValue]  s    s   >LLi   i   i    i   R   u   replacei	   R   i
   s   >Hs   >Li   i   I    u;   Warning: Bad key, size, value combination detected in EXTH u    (hex)u   Languageu   Titleu   Codecu   UniqueIDu   ASINu   cdeTypeu   EBOK(   R$   RJ   RK   R   R   R   R3   R&   R    R'   R   R!   R   R   R(   R   R[   RD   RH   t   uuidt   uuid4(   Rb   R   R$   R#   R)   R*   R+   R,   R-   R.   R/   R0   R1   (    (   Rb   s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_header.pyR_   \  sV    			
#%c         C` s   |  j  S(   N(   R[   (   Rb   (    (    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_header.pyt   getMetaData  s    c         C` s   t  d |  j  t  d |  j  t  d |  j  d |  j k rZ t  d |  j d d  n  |  j d k rv t  d  n8 |  j d	 k r t  d
  n |  j d k r t  d  n  | r |  j   n  d  S(   Nu   Mobi Version:u   Codec:u   Title:u   Updated_Titleu   EXTH Title:i    iHD  u   Huffdic compressioni   u   Palmdoc compressioni   u   No compression(   R   RI   R$   RD   R[   R\   R   (   Rb   t   DUMP(    (    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_header.pyt   describeHeader  s    (   i    s   >Hi   (   i   s   >Hi   (   i   s   >Li   (   i   s   >Hi   (   i
   s   >Hi   (   i   s   >Li   (   i    s   >Hi   (   i   s   >Hi   (   i   s   >Li   (   i   s   >Hi   (   i
   s   >Hi   (   i   s   >Hi   (   i   s   >Hi   (   i   R4   i   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i    s   >Li   (   i$   s   >Li   (   i(   s   >Li   (   i,   s   >Li   (   i0   s   >Li   (   i4   s   >Li   (   i8   s   >Li   (   i<   s   >Li   (   i@   s   >Li   (   iD   s   >Li   (   iH   s   >Li   (   iL   s   >Li   (   iP   s   >Li   (   iT   s   >Li   (   iX   s   >Li   (   i\   s   >Li   (   i`   s   >Li   (   id   s   >Li   (   ih   s   >Li   (   il   s   >Li   (   ip   s   >Li   (   it   s   >Li   (   ix   s   >Li   (   i|   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Hi   (   i   s   >Hi   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Hi   (   i   s   >Hi   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i  s   >Li   (   i  s   >Li   (   i  s   >Li   (   i  s   >Li   (   i  s   >Li   (   i  s   >Li   (   i  s   >Li   (   i   s   >Li   (   i$  s   >Li   (   i(  s   >Li   (   i,  s   >Li   (   i0  s   >Li   (   i4  s   >Li   (   i8  s   >Li   (   i  s   >Li   (   i    s   >Hi   (   i   s   >Hi   (   i   s   >Li   (   i   s   >Hi   (   i
   s   >Hi   (   i   s   >Hi   (   i   s   >Hi   (   i   R4   i   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i    s   >Li   (   i$   s   >Li   (   i(   s   >Li   (   i,   s   >Li   (   i0   s   >Li   (   i4   s   >Li   (   i8   s   >Li   (   i<   s   >Li   (   i@   s   >Li   (   iD   s   >Li   (   iH   s   >Li   (   iL   s   >Li   (   iP   s   >Li   (   iT   s   >Li   (   iX   s   >Li   (   i\   s   >Li   (   i`   s   >Li   (   id   s   >Li   (   ih   s   >Li   (   il   s   >Li   (   ip   s   >Li   (   it   s   >Li   (   ix   s   >Li   (   i|   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Hi   (   i   s   >Hi   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i   s   >Li   (   i  s   >Li   (   i  s   >Li   (   i  s   >Li   (   i  s   >Li   (   i  s   >Li   (   i  s   >Li   (   i  s   >Li   (   i   s   >Li   (   i$  s   >Li   (   i(  s   >Li   (   i,  s   >Li   (   i0  s   >Li   (   i4  s   >Li   (   i8  s   >Li   (   i  s   >Li   (   R   R   Rs   Rw   Ry   R   Ru   Rx   Rz   R&   R'   R(   Rm   Rq   R   R`   R   R   R   R   R   R   R   R   R   R   R_   R   R   (    (    (    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_header.pyR3      sb  





		%	J													/	:	(    (   t
   __future__R    R   R   R   R=   t   DEBUG_USE_ORDERED_DICTIONARYt   collectionsR   RZ   t   dictt   compatibility_utilsR   R   R   R   t   xrangeR   R   R   t
   mobi_utilsR	   t   mobi_uncompressR
   R   R   t	   ExceptionR   R   R2   R3   (    (    (    s:   /home/sid/Downloads/KindleUnpack-master/lib/mobi_header.pyt   <module>   s   ""			