
    `i!                         S SK Jr   S SKrS SKrS SKrS SK
r
S SKrS SKr " S S5      r S rS rS rS rS	 rS
 rS rg! \ a    S SKJr  S SKJ	r  \r NCf = f)    )isMatrixNc                   d    \ rS rSrS rSS jrSS jrS rS rS r	S r
S	 rS
 rS rS rS rSrg)cUtil   c                     Sn UR                  5       nUR                  5       n[        US5      n[        R                  " SU5      R                  SS5      nU H  nU[        U5      -  nM     U$ !    U$ = f)Nr   zutf-8NFKDASCIIignore)lowerstripunicodeunicodedata	normalizeencodeord)selflabelcountis       B/home/kodi/.kodi/addons/plugin.video.vstream/resources/lib/util.pyCheckOrdcUtil.CheckOrd   sz    	KKMEKKMEE7+E))&%8??REQ 
 	s   A*A0 0A5c                    U R                  U5      nU R                  U5      nS=pEUR                  S5      nUR                  S5       H%  n[        U5      S:X  a  M  US-  nXv;   d  M   US-  nM'     US:X  a  gSU-  U-  U:  $ )Nr       Fd   )	CleanNamesplitlen)r   str1str2percentnbOccurencenbWordlist2parts           r   CheckOccurencecUtil.CheckOccurence(   s    ~~d#~~d#  

3JJsOD4yA~aKF}q  $ Q;;v%00    c                 P    [         R                  " S5      nUR                  X!5      $ )Nz<.*?>)recompilesub)r   sValuesReplaceps       r   removeHtmlTagscUtil.removeHtmlTags8   s    JJx uuX&&r)   c                     [        U5      n[        US-  5      nXS-  -
  nUS:  a  S[        U5      -   nUS:  a  S[        U5      -   n[        U5      S-   [        U5      -   $ )N<   
   0:)intstr)r   iSecondsiMinutess      r   
formatTimecUtil.formatTime<   sg    x=x"}%"}-b=S]*Hb=S]*H8}s"S]22r)   c                    [         R                  " SSU5      nX!:w  ah  [        5       nU(       d   UR                  SS5      n [
        R                  " SU5      R                  SS5      nU(       a   UR                  SS5      nU$ U$ ! [         a
  n S nANUS nAff = f! [         a
  n S nANDS nAff = f! [         a  n S nAU$ S nAff = f)Nz[^a-zA-Z0-9 ] utf8r
   NFDascii)r+   r-   r   decode	Exceptionr   r   r   )r   textn2bMatrixes        r   
formatUTF8cUtil.formatUTF8H   s    VVOR.:jG;;vx8D",,UD9@@(S ;;vx8D t ! 
   ! s5   B 'B 2B6 
BB
B3.B36
CCc                 
   Sn[        U5      nSnX#:  an  X   nXUS-    S:X  a"  [        [        XS-   US-    S5      5      nUS-  nXUS-    S:X  a"  [        [        XS-   US	-    S5      5      nUS
-  nXE-   nUS-  nX#:  a  Mn  U$ )Nr   r?      z\x         z\u      r   )r   chrr8   )r   stringr   lretcs         r   ASCIIDecodecUtil.ASCIIDecode`   s    Ke	AQ E)FEAE3R89Q1%'FEAE3R89Q'CFA e 
r)   c                 ^   ^ [        U[        5      mU4S jn[        R                  " SX!5      $ )Nc                   > U R                  S5      nUS S S:X  aw  T(       a8  US S S:X  a  [        [        USS S5      5      $ [        [        USS 5      5      $ US S S:X  a  [        [        USS S5      5      $ [        [        USS 5      5      $ T(       a!  [        [        R
                  USS    5      nU$ [        [        R
                  USS    5      nU$ )	Nr   rL   z&#rO   z&#xrN   r   )grouprR   r8   unichrhtmlentitydefsname2codepoint)mrE   isStrs     r   fixupcUtil.unescape.<locals>.fixupu   s    771:DBQx4BQx5("3tAbz2#677"3tAbz?33BQx5(%c$q*b&9::%c$q*o66 ~<<T!BZHID K "."?"?Qr
"KLDKr)   z&#?\w+;)
isinstancer9   r+   r-   )r   rE   rb   ra   s      @r   unescapecUtil.unescapeq   s'    4%	. vvi--r)   c                    [        5       (       a2  UR                  SS5      R                  SS5      R                  SS5      nU R                  U5      nUR                  SS5      R                  S	S5      nUR                  S
S5      R                  SS5      n[        R                  " SSU5      nUR                  SS5      nUR                  SS5      R                  SS5      R                  SS5      R                  SS5      R                  SS5      n[        R                  " S[
        R                  [
        R                  -   -  SUR                  5       5      n[        R                  " SSU5      nU$ )N   ²z 2   ³z 3u   ⁴z 4[r?   ]VFVOSTFRz(\W|_|^)FR(\W|_|$)-r   SaisonsaisonSeasonEpisodeepisodez[^%s] +)	r   replacerI   r+   r-   rS   ascii_lowercasedigitsr   )r   titles     r   titleWatchedcUtil.titleWatched   s>   ::MM$-55dDAII%QUVE& c2&..sB7dB'//"=+R7c3'h+33HbAII(TVW__`ikmnvv  xA  CE  Fw&"8"86=="HI3PUP[P[P]^tS%( r)   c                 \   [        U5      nUR                  SS5      nSn[        R                  " SU5      nU(       a,  [	        UR                  S5      5      nUR                  US5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      nUR                  S	S5      R                  S
S5      nU R                  U5      nUR                  5       nUR                  5       n[        R                  " SSU5      nU(       a  US-   U-   nU$ )Nz%20r   r?   z(\([0-9]{4}\))r   u   [\’'\-\–\:\+\._]z
[\,\&\?\!]z[\(\[].+?[\)\]]rj   rk   rt   )
Unquoteru   r+   searchr9   r\   r-   rI   r   r   )r   nameanneer`   s       r   r   cUtil.CleanName   s   t}||E3' II&-
OE<<r*D vv-sD9vvlB- vv'T2||C$,,S"5 t$ zz|zz|vvdC& #:%Dr)   c                     [         R                  " SSU5      n[         R                  " SSU5      nSU;   a  US UR                  S5       nU$ )Nz\[.*\]|\(.*\)r?   u	   [- –]+$|)r+   r-   index)r   sTitle
serieTitles      r   getSerieTitrecUtil.getSerieTitre   sM    VV,c6:
VVKZ8
*#$:Z%5%5c%:;Jr)   c                     [         R                  " SU5      nU(       a4  UR                  UR                  " S5      S5      R	                  5       nUS4$ US4$ )Nz!(?i)(e(?:[a-z]+sode\s?)*([0-9]+))r   r?   TF)r+   r}   ru   r\   r   )r   r   rS   s      r   getEpisodeTitrecUtil.getEpisodeTitre   sK    >G^^FLLOR8>>@F4<u}r)   c                 B   UR                  SS5      n UR                  SS5      R                  SS5      R                  SS5      n[        R                  " SS	U5      n[        R                  " S
SU5      nUS   S:X  a  USS  n[        [	        U5      5      nU$ !    g= f)Nr   r?   z!+[]1z!![]z[]r6   z(\([^()]+)\+\[\]\)z(\1)*10)z\[([^\]]+)\]zstr(\1)r   +r   )ru   r+   r-   r8   eval)r   svals      r   EvalJSStringcUtil.EvalJSString   s    IIc2				&#&..vs;CCD#NA,k1=A
A6Ats{abEd1g,CJ	s   BB B N)K   )r?   )__name__
__module____qualname____firstlineno__r   r'   r1   r<   rI   rW   re   ry   r   r   r   r   __static_attributes__r   r)   r   r   r      s?    $1 '
30".:2"Hr)   r   c                 .    [         R                  " U 5      $ N)urllibunquotesUrls    r   r|   r|      s    >>$r)   c                 .    [         R                  " U 5      $ r   r   quoter   s    r   Quoter      s    <<r)   c                 .    [         R                  " U 5      $ r   )r   unquote_plusr   s    r   UnquotePlusr      s    t$$r)   c                 .    [         R                  " U 5      $ r   )r   
quote_plusr   s    r   	QuotePlusr      s    T""r)   c                 ,    [         R                  " U SS9$ )Nz:/)safer   r   s    r   	QuoteSafer     s    <<4((r)   c                 .    [         R                  " U 5      $ r   )r   	urlencoder   s    r   	urlEncoder     s    D!!r)   c                 B    [         R                   " U 5      R                  $ r   )urlparsehostnamer   s    r   urlHostNamer     s    T"+++r)   )resources.lib.comaddonr   r^   r   r   ImportErrorhtml.entitiesentitiesurllib.parseparser   r+   rS   r   r|   r   r   r   r   r   r   r   r)   r   <module>r      su    ,  	 S Sl %#)",G  *!Hs   A AA