
    `i[                     h   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  S
rSrSr\" 5       R+                  \5      rSrSrSrSrSrSrSrSrSrSr Sr!Sr"Sr#Sr$Sr%Sr&Sr'Sr(Sr)Sr*Sr+S r,S  r-S! r.S" r/S# r0S$ r1S% r2S& r3S' r4S/S( jr5S) r6S/S* jr7S+ r8S, r9S- r:S. r;g)0    N)
cHosterGui)cGui)cInputParameterHandler)cOutputParameterHandler)cRequestHandler)cParser)siteManager)cUtilcoflixCoflixu3   Films et Séries en Streaming VF Complet Qualite HD)TshowMenuMovies)z9wp-json/apiflix/v1/options/?post_type=movies&sort=1&page=showMoviesAPI)film
showMovies)zCwp-json/apiflix/v1/options/?post_type=movies&genres=%d&sort=1&page=showMovieGenres)zBwp-json/apiflix/v1/options/?post_type=movies&years=%d&sort=1&page=	showYears)TshowMenuTvShows)z9wp-json/apiflix/v1/options/?post_type=series&sort=1&page=r   )serier   )zCwp-json/apiflix/v1/options/?post_type=series&genres=%d&sort=1&page=showSeriesGenres)zBwp-json/apiflix/v1/options/?post_type=series&years=%d&sort=1&page=r   )TshowMenuAnimes)z9wp-json/apiflix/v1/options/?post_type=animes&sort=1&page=r   )zCwp-json/apiflix/v1/options/?post_type=animes&genres=%d&sort=1&page=showAnimesGenres)zBwp-json/apiflix/v1/options/?post_type=animes&years=%d&sort=1&page=r   )zsuggest.php?query=	searchAPIzwp-json/apiflix/v1/series/%s/%sz+wp-json/apiflix/v1/playerepisode?post_id=%sz)wp-json/apiflix/v1/playermovie?post_id=%sc                      [        5       n [        5       nU R                  [        SSSU5        U R                  [        SSSU5        U R                  [        SSS	U5        U R	                  5         g )
Nr   Filmsz	films.pngr   u   Sériesz
series.pngr   	Japanimesz
animes.png)r   r   addDirSITE_IDENTIFIERsetEndOfDirectoryoGuioOutputParameterHandlers     F/home/kodi/.kodi/addons/plugin.video.vstream/resources/sites/coflix.pyloadr#   ;   s`    6D57KK!17KI`aKK!2I|MdeKK!1;Nef    c                  x   [        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                  5         g NsiteUrlr   
showSearch
Rechercher
search.png   Derniers ajoutsnews.png
Populaireszpopular.png
Par genres
genres.png   Par années
annees.png)r   r   addParameterURL_SEARCH_MOVIESr   r   
MOVIE_NEWSMOVIE_VIEWSMOVIE_GENRESMOVIE_ANNEESr   r   s     r"   r   r   D       6D57((4Ea4HIKK|\Kbc((JqMBKKA0A:Ofg((KNCKKQ}Nef((LODKKa,Nef((LODKKa-Ofgr$   c                  x   [        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                  5         g r&   )r   r   r3   URL_SEARCH_SERIESr   r   
SERIE_NEWSSERIE_VIEWSSERIE_GENRESSERIE_ANNEESr   r   s     r"   r   r   Z   r9   r$   c                     [        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                  5         g )Nr'   r   r(   r)   r*   r+   r,   r-   r/   r0   r1   r2   )
r   r   r3   URL_SEARCH_ANIMSr   r   	ANIM_NEWSANIM_GENRESANIM_ANNEESr   r   s     r"   r   r   p   s    6D57((4DQ4GHKK|\Kbc((IaLAKK1/@*Nef((KNCKKQ|Mde((KNCKKQNefr$   c                      [        5       n U R                  5       nU(       a;  [        5       nUR                  S5      nX1-   n[	        U5        U R                  5         g g )Nr'   )r   showKeyBoardr   getValuer   r   )r    sSearchTextoInputParameterHandlerr'   sUrls        r"   r(   r(      sV    6D##%K!7!9(11)<$$  r$   c                  d   [        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/SS/SS/SS/SS /S!S"/S#S$/S%S&//n[        5       nUR                  S'5      n[        5       nU H0  u  pVUR	                  S'X6-  5        U R                  [        S(XT5        M2     U R                  5         g ))NActioni
  	Animation  Aventurei     Comédie  Crimex  Documentaire"  Drame  Famille  Fantastiquei  Guerreiy  
Historiquei  Horreurim  Musiquei6!     Mystère  Romance+   zScience-Fictioni  Telefilmi  Thrilleri  western3   r'   r   r   r   rG   r   r3   addGenrer   r   r    
listegenrerI   r'   r!   sTitlerJ   s          r"   r   r      s    6DT"[$$7*d9Kt$wo7MD/It#4}d6KT"\4$89d:Kd#j$%7)R$d+j$-?*dASV_acUdfJ 45$--i8G57",,YGoX # 	r$   c            	         SS K n [        5       n/ SQn[        5       nUR                  S5      nSnSU;   a  USS  nSnUS S S2   nSn[	        5       n[        [        U[        U R                   R                  5       R                  5      S	-   5      5       HA  nUR                  SXBU   -  5        UR                  [        S
[        U5      SU5        US	-  nMC     UR                  5         g )Nr   )Li  iS i  i il  iq  i5  iv  i,  i  iPT  i+ iŪ  i;  i  i3h  i8  iJ iu  iK  iu  iR  iR  iW  i=q  i@  iT  iiW  i|  i}  i<Z  i{b  i#  i  i  i'  i!Y  ij  i|]  iE  ijR  ik  im  iK  i=  iR  i=M  ij&  i5  iWR  i	L  i^"  i
  ivF  iw5  i&  i  i'7  i8  i7  i"  i  i  i  i+  i#  i3  i  i  iK  <   iv  c   i8$  i& i,+ r'   i  series2   i  r+   r   r2   )datetimer   r   rG   r   reversedrangeintnowyearr3   r   r   strr   )	rr   r    yearsIdrI   r'   	dateStartyearIdxr!   iYears	            r"   r   r      s    6DhG 45$--i8GI7"#,	ddmGG57%	3x/@/@/D/D/F/K/K+Lq+PQR,,Y'BR8RSO_c%j,Pgh1 S
 	r$   c                  F   [        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/SS/SS//n[        5       nUR                  S5      n[        5       nU H0  u  pVUR	                  SX6-  5        U R                  [        SXT5        M2     U R                  5         g )NAction & Aventurer  rM   rN   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   
Feuilletonig  Guerre & Politique  Kidsrp   r_   r`   Science-Fiction & Fantastique   u   Télé réalitéi  re   rf   r'   r   rg   ri   s          r"   r   r      s    6D&-T/BZQUDVD/ND#9GT?d#lD%9<PRV;W2,T 25TVZ4[%t,y"o	?J 45$--i8G57",,YGoX # 	r$   c                  .   [        5       n SS/SS/SS/SS/S	S
/SS/SS/SS/SS/SS//
n[        5       nUR                  S5      n[        5       nU H0  u  pVUR	                  SX6-  5        U R                  [        SXT5        M2     U R                  5         g )Nr~   r   rM   rN   rP   rQ   rR   rS   rV   rW   rX   rY   r   r   r   rp   r_   r`   r   r   r'   r   rg   ri   s          r"   r   r      s    6D&-T/BZQUDVD/GT?Y4EH\^bGc2,T 25TVZ4[]J 45$--i8G57",,YGoX # 	r$   c           
         [        5       n[        5       n[        5       nUR                  S5      n[	        5       nU (       aE  U R                  [        S   S5      nUR                  [        S   S5      nUR                  U5      nU n[        [        U -   5      nUR                  SS9nU GH/  n	UR                  U	S   5      n
U	S   nU	S   nU	S	   nU	S
   nU	S   nS[        R                  " SU	S   5      R                  S5      -   nU (       a  UR!                  WU
5      (       d  M}  UR#                  SU
5        UR#                  SU5        UR#                  SU5        UR#                  SU5        US:X  a8  [$        U-  nUR#                  SU5        UR'                  [(        SU
SUX5        GM  UR#                  SU5        UR+                  [(        SU
SUX5        GM2     U (       d  UR-                  5         g g )Nr'   r    T
jsonDecodetitleIDurl	post_typerw   excerpthttps:src="([^"]+)imager+   sMovieTitlesDescsThumbsYearmoviesshowHostersshowSaisons)r   r
   r   rG   r   replacer4   r;   	CleanNamer   URL_MAINrequestunescaperesearchgroupCheckOccurencer3   API_MOVIE_LINKaddMovier   addTVr   )sSearchr    oUtilrI   r'   r!   rH   oRequestHandler	responsesmovierk   movie_idrJ   sCatr   r   r   s                    r"   r   r      s   6DGE35$--i8G57oo&7&:B?!))*;A*>Cook2%h&89O''4'8Ig/;U|[!fi BIIneGnEKKANN ''V<<,,]FC,,We<,,Xv>,,We<8!H,D#00DAMM/=&"fem#00DAJJvr65j3 6   r$   c            
      b   [        5       n [        5       n[        5       nUR                  S5      nUR                  S5      nU(       d  Sn[	        [
        U-   U-   5      nUR                  SS9nSU;   GaI  [        5       nUS   nU GH3  n	UR                  U	S   5      n
U	S   nU	S	   nU	S
   nU	S   n[        R                  " SU	S   5      R                  S5      nS[        R                  " SU	S   5      R                  S5      -   nUR                  SU
5        UR                  SU5        UR                  SU5        UR                  SU5        US:X  a8  [        U-  nUR                  SU5        U R                  [        SU
SUX5        GM  UR                  SU5        U R!                  [        SU
SUX5        GM6     [#        U5      S-   n[%        U5      n[        5       nUR                  SU5        UR                  SU5        U R'                  [        SSU-   U5        U R)                  5         g )Nr'   sPage1Tr   resultsnameuuidr   tsreleasez>([^<]+)r   r+   r   r   pathr   r   r   r   r   r   r   r   r   zPage )r   r
   r   rG   r   r   r   r   r   r   r   r   r3   r   r   r   r   ru   rx   addNextr   )r    r   rI   r'   r   r   r   r!   r   r   rk   r   rJ   r   r   r   r   iPages                     r"   r   r     s   6DGE35$--i8G"++G4E%h&85&@AO''4'8II"9";9%E^^E&M2FV}H<D;D)$EIIj%	*:;AA!DE		.%- H N Nq QQF#00G#00%@#006B#00%@x%0'44YEo}fb&RWq'44YE

?M62vun) , JNEJE57((G<((%8LL/7U?D[\r$   c           
         [        5       n[        5       nSnSnSnU (       a  [        5       n[        S   U ;   a  SnO[        S   U ;   a  SnO[
        S   U ;   a  SnUR                  U R                  S5      S   5      n[        U -   n[        U5      n	U	R                  S[        5        U	R                  5       n
UR                  U
SS5      n
S	nO[        5       nUR                  S
5      n[        U-   n[        U5      n	U	R                  S[        5        U	R                  5       n
U[        S   :X  a  UR                  U
SS5      n
OUR                  U
S5      n
SnUR!                  X5      nUS   (       Ga  [#        5       nU (       a  SOSn[%        5       nUS    GH  nUU   nSU;  a  SU-   nUUS-      nUUS-      nUUS-      nUUS-      nU (       aG  U(       a  SU;  a  MJ  U(       a  SU;  a  MY  U(       a  SU;  a  Mh  WR'                  WU5      (       d  M  OUU;   a  M  UR)                  U5        UR+                  SU5        UR+                  SU5        UR+                  SU5        UR+                  SU5        SU;   aq  U (       a:  UR+                  S
[,        US   -  5        UR/                  [0        SUSUUU5        GM*  UR+                  S
U5        UR/                  [0        SUSUUU5        GMZ  SU;   a0  UR+                  S
U5        UR3                  [0        SUSUUU5        GM  UR+                  S
U5        UR5                  [0        SUSUUU5        GM     OUR7                  [0        5        U (       d  UR9                  5         g g )NFr   T=rq   Refererz<main id="content"zwdgt_lateral_movies-z}bx por" data-uuid="(\d+).+?src="([^"]+).+?class="fg1">.+?fz14">([^<]+).+?fwb"><span>(|\d+)<.+?mb1">([^<]+).+?<a href="([^"]+)r'   zwdgt_lateral_movies-7zr<img loading="lazy" src="([^"]+).+?class="fg1">.+?fz14">([^<]+).+?fwb"><span>(\d+)<.+?mb1">([^<]+).+?href="([^"]+)r+   httpr            z/film/z/serie/z/animes/r   r   r   r   r   r   showMovieLinksr   )r   r   r
   r4   r;   rA   r   splitr   r   addHeaderEntryr   abParser   rG   r6   parsesetr   r   addr3   r   r   r   addAnimer   addTextr   )r   r    oParserbSearchMoviebSearchSeriebSearchAnimesr   rH   rJ   oRequestsHtmlContentsPatternrI   r'   aResulttitlesidxr!   aEntryr   rk   r   r   sUrl2s                           r"   r   r   C  se   6DiGLLMQ7*Lq!W,La G+ MoogmmC&8&<='!"4(	84'')|5IKab S!7!9(11)<'!"4(	84'')k!n$"??<9OQghL"??<9PQL HmmL3Gqzza"9";ajFC[FV#!F*C!G_F37OE37OE37OEHE$9IU$: Zu%<++K@@ A V#

6"#00G#006B#00%@#00%@5 +88NU[\]U^D^_MM/=&"fV[]tu+88EJMM/3CVRQWY^`wxu$'44YFo}fb&RWYpq'44YF

?M62vuVmnS !X 	_%  r$   c            
         [        5       n [        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	UR                  X5      n
U
S   (       a  [        5       nU
S    Hp  n[        US   US   4-  nU< SUS   < 3nUR                  SU5        UR                  SU5        UR                  SU5        U R                  [        S	US
XEU5        Mr     OU R                  [        5        U R                  5         g )Nr'   r   r   r   z?name="seasons" data-season="(\d+)" data-id="\d+" post-id="(\d+)r   r+   z - SshowEpisodesr   )r   r   r   rG   r   r   r   r   API_EPISODESr3   	addSeasonr   r   r   )r    r   rI   rJ   r   r   r   r   r   r   r   r!   r   r   rk   s                  r"   r   r     s(   6DiG35!**95D#,,X6F"++G4E(11-@K%d+O"**,LPHmmL3Gqz"9";ajF F1Ivay#99E%0&)<F#00EB#00%@#00GNN?NFBWno ! 	_%r$   c            
      t   [        5       n [        5       n[        UR                  S5      -   nUR                  S5      n[	        U5      nUR                  SS9nSU;   a  US   (       a  [        5       nUS   nU H  nUS   n	US   n
[        U	-  n[        R                  " SUS	   5      R                  S
5      nSU;  a  SU-   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
SXU5        M     U R                  5         g )Nr'   r   Tr   episodesidr   r   r   r+   r   r   r   r   r   r   )r   r   r   rG   r   r   r   API_EPISODE_LINKr   r   r   r3   
addEpisoder   r   )r    rI   rJ   r   r   r   r!   r   episode
episode_idrk   epUrlr   s                r"   r   r     s7   6D35,55i@@D"++G4E%d+O''4'8IY9Z#8"9";Z(G J W%F$z1EYY~ww/?@FFqIFV#!F*#00EB#006B#00G#00%@OOO]FBWno  " 	r$   c                     [        5       n [        5       n[        5       nUR                  S5      nUR                  S5      nUR                  S5      nSU;  a	  [        U-   n[        U5      nUR                  5       nSnUR                  Xx5      n	U	S   (       a  U	S   S   n
[        U
5      nUR                  S[        5        UR                  5       nS	nUR                  Xx5      n	U	S   (       a  U	S    H  n
[        R                  " U
5      R                  S
5      n
[        5       R                  U
5      nU(       d  MJ  UR                  U5        UR                  U5        [        5       R!                  XX5        M     U R#                  5         g )Nr   r   r'   r   z<iframe src="([^"]+)r   r+   r    <li onclick="showVideo\('([^']+)utf-8)r   r   r   rG   r   r   r   r   r   base64	b64decodedecoder   checkHostersetDisplayNamesetFileName
showHosterr   )r    r   rI   rk   r   rJ   r   r   r   r   
sHosterUrloHosters               r"   r   r     sX   6DiG35#,,];F#,,X6F!**95DT$%d+O"**,L'HmmL3GqzQZ]
)*5&&y(;&..07--71:%aj
#--j9@@I
$,22:>&&v.##F+''zJ ) 	r$   c                     [        5       n [        5       n[        5       n[        UR	                  S5      -   nUR	                  S5      nUR	                  S5      n[        U5      nUR                  SS9nSU;   a  US   nSU;   a  US    H  n	[        U	S   5      nUR                  S	[        5        UR                  5       n
S
nUR                  X5      nUS   (       d  MV  US    H  n[        R                  " U5      R                  S5      n[        5       R                  U5      nU(       d  MJ  UR                  U5        UR                  U5        [        5       R!                  XX5        M     M     U R#                  5         g )Nr'   r   r   Tr   linksonlinelinkr   r   r   r+   r   )r   r   r   r   rG   r   r   r   r   r   r   r   r   r   r   r   r   r   )r    r   rI   rJ   r   rk   r   r   r   hostersr   r   r   r   r   s                  r"   r   r     sY   6DiG35,55i@@D#,,X6F#,,];F%d+O''4'8I)'"u ?"1'&/"B..y(C.668?!--?1::&-aj
%+%5%5j%A%H%H%Q
",,":"::"F&$..v6++F3"//zR '1 +$ 	r$   )r   )<r   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   	SITE_NAME	SITE_DESC
getUrlMainr   MOVIE_MOVIEr5   r6   r7   r8   SERIE_SERIESr<   r=   r>   r?   
ANIM_ANIMSrB   rC   rD   
URL_SEARCHr4   r;   rA   r   r   r   r#   r   r   r   r(   r   r   r   r   r   r   r   r   r   r   r    r$   r"   <module>r     s   
  / & N P @ ( . $ 	A	=##O4 '[
$ib )[
%jb &
Z	ia0
7 7 6 0@ <,,&	&@$-!`-`_!F<> Fr$   