
    `i/                     d   S SK r S SKrS SKJr  S SKJr  S SKJr  S SKJ	r	  S SK
Jr  S SKJr  S SKJr  S S	KJrJr   \  S
rSrSr\" 5       R3                  \5      rSr\S-   S4r\S-   S4r\S-   S4rSrSr \S-   S4r!\!S    S4r"Sr#Sr$S r%S r&S r'S r(SS jr)SS jr*S r+S r,g! \ a    \r Npf = f)     N)
cHosterGui)cGui)cInputParameterHandler)cOutputParameterHandler)cRequestHandler)cParser)siteManager)	urlEncodecUtilanimesultrazAnimes Ultrau6   Regarder gratuitement vos animes VF/VOSTFR préférés)zhttp://loadzdernier-episodes/
showMoviesz	anime-vf/zanime-vostfr/)T	showYears)T
showGenreszindex.php?do=searchzMozilla/5.0 (Linux; Android 6.0.1; SM-G930V Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.89 Mobile Safari/537.36c                     [        5       n [        5       nUR                  S[        S   5        U R	                  [
        SSSU5        UR                  S[        S   5        U R	                  [
        [        S   SSU5        UR                  S[        S   5        U R	                  [
        [        S   S	S
U5        UR                  S[        S   5        U R	                  [
        [        S   SSU5        UR                  S[        S   5        U R	                  [
        [        S   SSU5        UR                  S[        S   5        U R	                  [
        [        S   SSU5        U R                  5         g )NsiteUrlr   
showSearchu   Recherche d'animész
search.png   u   Animés (Dernier ajouts)znews.pngu   Animés (Genres)
genres.pngu   Animés (VF)zvf.pngu   Animés (VOSTFR)z
vostfr.pngu   Animés (Par années)
annees.png)r   r   addParameterURL_SEARCH_ANIMSaddDirSITE_IDENTIFIER	ANIM_NEWSANIM_GENRESANIM_VFSANIM_VOSTFRSANIM_ANNEESsetEndOfDirectory)oGuioOutputParameterHandlers     K/home/kodi/.kodi/addons/plugin.video.vstream/resources/sites/animesultra.pyr   r   ,   s/   6D57((4DQ4GHKK/DlTkl((IaLAKK1/I:Wno((KNCKKQ1C\Sjk((HQK@KK!nhH_`((LODKKa2DlTkl((KNCKKQ1H,Xop    c                      [        5       n U R                  5       nU(       a  Un[        U5        U R                  5         g g )N)r   showKeyBoardr   r    )r!   sSearchTextsUrls      r#   r   r   E   s;    6D##%K4 	 r$   c                     [        5       n SS/SS/SS/SS/SS/SS/SS/S	S	/S
S
/SS/SS/SS//n[        5       nU H=  u  p4UR                  S[        S-   U-   S-   5        U R	                  [
        SUSU5        M?     U R                  5         g )NActionAventureu   ComédiezTranche de ViezTranche de vieDrameFantasy
Surnaturelu   MystèreShonenPsychologiqueRomancezScience-FictionzSci-Fir   zxfsearch/genre//r   r   )r   r   r   URL_MAINr   r   r    )r!   lister"   sTitler(   s        r#   r   r   P   s    6D!J
#;j*=U 01GW3E	S\G]L)J
+ChPXEY/)Y1GJ[]eIfhE
 67,,YCT8TW[8[^a8abO\6<I`a  	r$   c                     [        5       n [        5       n[        [        SS5      5       HC  n[	        U5      nUR                  S[        S-   U-   5        U R                  [        SUSU5        ME     U R                  5         g )Ni  i  r   zxfsearch/year/r   r   )
r   r   reversedxrangestrr   r3   r   r   r    )r!   r"   iYears       r#   r   r   `   sp    6D57fT4()1v,,YCS8SVZ8Z[O\4G^_ *
 	r$   c           
      Z   [        5       n[        5       nU (       d  UR                  S5      =(       d    Sn [        U 5      nSnU(       a8  UR                  S5      nU(       a   UR	                  5       (       a  [        U5      nU(       Gaf  [        S   n[        5       n[        S   U ;   a  U R                  [        S   S5      n UR                  U 5      nSSSU 4S	S
/n	US:  aD  U	R                  S[        U5      45        US-
  S-  S-   n
U	R                  S[        U
5      45        O"U	R                  S5        U	R                  S5        [        U	5      n[        U5      nUR                  S5        UR                  U5        UR!                  S["        5        UR!                  SU5        UR!                  SS5        UR!                  S[        [%        U5      5      5        UR'                  5       nO,UR                  S5      n[        U5      nUR'                  5       nSU;   a  SnOSn[)        5       nUR+                  X5      nUS   (       a  [-        5       nUS    H  nUS   nUS   nUR/                  S5      (       a  [0        S S U-   nSU;   a  US   nUS   nUS   nSnO<US   R3                  S5      S   nUS   R                  SS5      R                  S S5      nU< S!UR5                  5       < S"3nUR7                  SU5        UR7                  S#U5        UR7                  S$U5        UR9                  [:        S%USUSU5        M     [=        XU5      nU(       a  [-        5       nU(       aR  UR7                  SU 5        UR7                  S[        U5      5        UR?                  [:        S&S'[        U5      -   U5        OSUR7                  SU5        [@        RB                  " S(U5      RE                  S5      nUR?                  [:        S&S'U-   U5        U (       d  URG                  5         g g ))NsSearch r   sPager   )dosearch)	subactionrA   story)	titleonly0)full_search1search_start   result_from)rH   rE   )rJ   rG   z
User-AgentRefererzContent-Typez!application/x-www-form-urlencodedzContent-Lengthr   z/films/zl<article class="short__story.+?href="([^"]+).+?data-src="([^"]+)" alt="([^"]+).+?pg">([^<]+).+?text">([^<]+)z<div class="flw-item">[\s\S]*?<img data-src="([^"]*)"[^>]*alt="([^"]*)"[\s\S]*?<div class="film-detail">[\s\S]*?<a href="([^"]+)"   r2           VF VOSTFRz ()sMovieTitlesThumbShowSxEr   zPage z/page/([0-9]+))$r   r   getValueboolisdigitint
URL_SEARCHr   replace	CleanNameappendr9   r
   r   setRequestTypeaddParametersLineaddHeaderEntryUAlenrequestr   parser   
startswithr3   splitupperr   addAnimer   __checkForNextPageaddNextrerA   groupr    )r=   r!   oInputParameterHandlerbSearchcurrent_pager?   r(   oUtilr'   
query_argsrJ   dataoRequestHandlersHtmlContentsPatternoParseraResultr"   aEntrysUrl2rU   r5   sQualsDescsLangsDisplayTitle	next_pagesNumPages                               r#   r   r   l   s   6D35(11)<B7mGL&//8U]]__u:L!}a=G#oojmR8Goog.&(?'7ASUgi}~
!~s</@AB'!+r1A5K}c+.>?@3423$)$/&&q)))$/&&|R8&&y$7&&~7Z[&&'7SYH&..0%..y9)$/&..0D B XiGmmL3Gqz"9";ajF1IEAYF  %%!#2/D q	q	q	,R0**5"5==iL+15;;=AM#00EB#00G#006BMM/9mRQSUlm+ !. #<wGI"9";#00GD#00#i.ILL,#i.8PRij#00IFyy!19=CCAFHLL,(8JLcd  r$   c                 b   [        5       nU(       at  SnUR                  X5      nUS   (       aV  US    Vs/ s H$  ofR                  5       (       d  M  [        U5      PM&     nnUR	                  5         U H  nX:  d  M
  Us  $    gSnUR                  X5      nUS   (       a  US   S   $ gs  snf )u   
Retourne la pagination selon le mode:
- bSearch=True: retourne le numéro de page suivant (int) depuis onclick="list_submit(N)"
- bSearch=False: retourne l'URL de la page suivante (str) depuis href=".../page/N/"
z(onclick="javascript:list_submit\((\d+)\)r   r   Fzv<a\s+(?=[^>]*?title\s*=\s*["\']next["\'])(?=[^>]*?class\s*=\s*["\']page-link["\'])[^>]*?href\s*=\s*["\']([^"\']+)["\'])r   re   rY   rZ   sort)	ru   rp   ro   rw   rv   rx   xpagesps	            r#   rj   rj      s     iG>--71:%,QZ?Z99;VSVZE?JJL#H   M--71:1:a=  @s   B,B,c            
         [        5       n [        5       nUR                  S5      nUR                  S5      nUR                  S5      nUR                  S5      S   R                  S5      S   n[	        [
        S-   U-   5      nUR                  S	S
9S   nSn[        5       n	U	R                  Xx5      n
U
S   (       a  [        5       nU
S    H  nUS   R                  SS5      R                  SS5      nUS   nUR                  SU5        UR                  SU5        UR                  SU5        UR                  SU5        UR                  SU5        U R                  [        SUSX4U5        M     U R                  5         g )Nr   rU   r|   r2   rO   -r   "engine/ajax/full-story.php?newsId=T
jsonDecodehtmlzhref="(.+?)".+?title="(.+?)">r   rQ   r>   rR   rT   idseriesHostersz
animes.png)r   r   rW   rg   r   r3   rd   r   re   r   r\   r   
addEpisoder   r    )r!   rn   r(   rU   r|   sIDrt   ru   rv   rw   rx   r"   ry   r5   rz   s                  r#   rV   rV      sl   6D35!**95D#,,X6F"++G4E
**S/!

"
"3
'
*C%h1U&UX[&[\O"**d*;FCL.HiGmmL3Gqz"9";ajFAY&&ub199)RHF1IE#00EB#00G#006B#00%@#00s;OOO_flTZcz{ ! 	r$   c            	         [        5       n [        5       nUR                  S5      nUR                  S5      nUR                  S5      nUR                  S5      n[        U5      nUR	                  5       nSn[        5       n	U	R                  Xx5      n
[        [        S-   U-   5      nUR	                  SS9S	   nU
S
   (       Ga   U
S    GH  nSUS   -   S-   nU	R                  Xx5      nUS
   nUS    H  nSU;   a  UnOKUS:X  a4  SU-   S-   [        [        [        R                  " 5       S-  5      5      -   nOUS:X  a	  SU-   S-   nOMW  UR                  SS5      nSU;   a  [        5       R                  S5      nO[        5       R                  U5      nU(       d  M  UR                  U5        UR                  U5        [        5       R!                  U UX5        M     GM     U R#                  5         g )Nr   rU   rT   r   z,data-class="(.+?) ".+?data-server-id="(.+?)"r   Tr   r   r   r   z<div id=\"content_player_z\".+?>(.+?)<httpscdntz"https://lb.toonanime.xyz/playlist/r2   i  sibnetz*https://video.sibnet.ru/shell.php?videoid=z////z//	toonanimez.mp4)r   r   rW   r   rd   r   re   r3   r9   roundtimer\   r   checkHostersetDisplayNamesetFileName
showHosterr    )r!   rn   r(   rU   rT   r   rt   ru   rv   rw   rx   ry   aResult1	hostClassaEntry1
sHosterUrloHosters                    r#   r   r     s   6D35!**95D#,,X6F(11-@K
 
)
)$
/C &d+O"**,L=HiGmmL3G &h1U&UX[&[\O"**d*;FCL qzzajF3fQi?/QH}}\<Hq	I#A;g%!(J&(!E!ORU!UX[\abfbkbkbmptbt\uXv!vJ(*!MPW!WZ]!]J'//=
*,(l66v>G(l66zBG7**;7''4L++D':N) ' !6 	r$   )r>   )r   F)-rl   r   resources.lib.gui.hosterr   resources.lib.gui.guir   +resources.lib.handler.inputParameterHandlerr   ,resources.lib.handler.outputParameterHandlerr   $resources.lib.handler.requestHandlerr   resources.lib.parserr   resources.lib.comaddonr	   resources.lib.utilr
   r   r8   	NameErrorranger   	SITE_NAME	SITE_DESC
getUrlMainr3   
ANIM_ANIMSr   r   r   r   r   r[   r   FUNCTION_SEARCHrb   r   r   r   r   r   rj   rV   r    r$   r#   <module>r      s    
  / & N P @ ( . /

  	D	=##O4 !
++\:	{"L1?*L9!"..=
qM<0  Q2 	\!~2 F2k  Fs   B$ $B/.B/