
    `i4J                         S SK r S SKrS SKrS SKrS SKrS SKJrJrJrJ	r	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Jr  S S	KJr  S S
KJr   " S S\R:                  5      rg)    N)addondialog	isKryptonVSlogaddonManager)cDb)cGui)cInputParameterHandler)cPluginHandler)UpNext)cUtilUnquoteurlHostName)cTrakt)splitextc                       \ rS rSr\" 5       rS rS rS rS r	S r
S rS rSS	 jrS
 rS rSS jrS rSS jrSS jrS rSrg)cPlayer   c                    U R                  5       n[        R                  R                  X5        / U l        SU l        [        5       nUR                  S5      U l        UR                  S5      U l	        U R                  (       a  [        U R                  5      U l	        UR                  S5      U l        UR                  S5      U l        UR                  S5      U l        UR                  S5      U l        UR                  S5      U l        UR                  S	5      U l        UR                  S
5      U l        UR                  S5      U l        UR                  S5      U l        UR                  S5      U l        UR                  S5      U l        UR                  S5      U l        UR                  S5      U l        SU l        SU l        SU l        [7        S5        g )NFsHosterIdentifier	sFileNamesCatsSeasonsEpisodetvShowTitlesiteUrl
sourceName	sourceFav	saisonUrlnextSaisonFuncmovieUrl	movieFuncsTmdbIdsImdbIdzplayer initialized)_cPlayer__getPlayerTypexbmcPlayer__init__Subtitles_fileSubtitleActiver
   getValuer   sTitler   r   sSaisonr   r   sSitesSourcesFavr   r    r!   r"   r#   r$   playBackEventReceivedplayBackStoppedEventReceived	forcestopr   )selfargssPlayerTypeoInputParameterHandlers       D/home/kodi/.kodi/addons/plugin.video.vstream/resources/lib/player.pyr(   cPlayer.__init__   s   **,T/ #!7!9!7!@!@AT!U,55kB;;!$++.DK*33F;	-66yA.77
C1::=I+44Y?
-66|D*33K@	/88E4==>NO.77
C/88E-66yA-66yA%*",1)"#    c                 D    U R                  5       nUR                  5         g N)_cPlayer__getPlayListclear)r4   	oPlaylists     r8   clearPlayListcPlayer.clearPlayListA   s    &&(	r:   c                 J    [         R                  " [         R                  5      $ r<   )r&   PlayListPLAYLIST_VIDEOr4   s    r8   __getPlayListcPlayer.__getPlayListE   s    }}T0011r:   c                 \    [        5       nUR                  U5      nU R                  X5        g r<   )r	   createListItem_cPlayer__addItemToPlaylist)r4   oGuiElementoGui	oListItems       r8   addItemToPlaylistcPlayer.addItemToPlaylistH   s'    v''4	  8r:   c                 d    U R                  5       nUR                  UR                  5       U5        g r<   )r=   addgetMediaUrl)r4   rK   rM   r?   s       r8   __addItemToPlaylistcPlayer.__addItemToPlaylistM   s'    &&(	k--/;r:   c                     [        U5      [        L d  [        U5      [        L a  Xl        g U R                  R	                  U5        g r<   )typelisttupler)   append)r4   filess     r8   AddSubtitlescPlayer.AddSubtitlesQ   s3    ;$$u+"6"'&&u-r:   c           	      "   U R                   R                  S5      S:X  Ga[  U R                  (       aI  [        R                  " SU R                  05      n[
        R                  " S5      R                  SU5        OU R                  (       d  U R                  (       d  U R                  (       au  U R                  (       ad  [        5       nUR                  U R                  5      nUS:w  a9  [        UR                  U R                  XQR!                  S5      5      5      U l        U R                  (       aH  [        R                  " SU R                  05      n[
        R                  " S5      R                  SU5        U R#                  5       (       aW  [%        UR'                  5       5      nU(       a'  [        U5      nUS	-
  nS
U-  n	U R)                  U	5        OU R)                  5         SU l        SU l        [/        5       R1                  5       n
[3        5       nUR5                  U5      nUR7                  UR9                  5       5        U R:                  (       aD   UR=                  U R:                  5        [?        S[%        U R:                  5      -   5        SU l         U R                   R                  S5      n[C        [E        U5      5      S   S;   nUSU;   -  nU(       a  [G        5       S:X  ax  [I        5       RK                  S5        UR                  SS5        SU;   a  UR                  SS5        OUR                  SS5        [L        RN                  " U
SUS9  [?        S5        O[Q        5       RS                  S5        g US:X  a  U RU                  X,5        [?        S5        OQUS:X  a(  [V        RX                  " SU-   S-   5        [?        S 5        O#[L        RN                  " U
SU5        [?        S!5        [[        S"5       H,  nU R\                  (       a    O[V        R^                  " S#5        M.     U Ra                  5       (       a]  U R                   R                  S$5      S:X  a  U Rc                  S5        O,U Rc                  S%5        [Q        5       Re                  S&S'S(5        SnU R#                  5       (       a  U Rf                  (       d   U Ri                  5       U l        US	-  nUS):X  aC  U Rk                  5       U l        U Rm                  5       U l7        [q        5       Rs                  U5        [V        R^                  " S#5        U R#                  5       (       a  U Rf                  (       d  M  U Rx                  (       d  U R{                  5         US:X  a  [L        R|                  " XUS%S+9nU$ [?        S,5        g!   [?        S[%        U R:                  5      -   5         GN@= f! [t         a$  n[?        S*Rw                  U5      5         S nANS nAff = f)-Nuse_trakt_addontrueimdbi'  zscript.trakt.idsyeartmdb   z%02dr   zLoad SubTitle :TzCan't load subtitle:
playerPlay)z.mpd.m3u8z&ct=6&zinputstream.adaptiveinputstreamrf   z"inputstream.adaptive.manifest_typehlsmpd)listitemzPlayer use inputstream addonu   Nécessite kodi 17 minimum0zPlayer use Play() method	neverusedz
PlayMedia()zPlayer use PlayMedia() methodz"Player use setResolvedUrl() method   i  zsrt-viewFz Des sous-titres sont disponibleszSous-titres      zException run: {0})handleurlrj   isFolderzClosing player)?ADDON
getSettingr$   jsondumpsxbmcguiWindowsetPropertyr#   r,   r   r   r   convertCatToTypeint	getTmdbIDgetItemValue	isPlayingstr
getEpisode_setWatched	totalTimecurrentTimer   getPluginHandler	   _createListItemsetPathrR   r)   setSubtitlesr   r*   r   r   r   r   enableAddon
xbmcpluginsetResolvedUrlr   VSerrorplayr&   executebuiltinranger1   sleepgetAvailableSubtitleStreamsshowSubtitlesVSinfor3   getTimegetTotalTimegetVideoInfoTaginfotagr   nextEpisode	Exceptionformatr2   onPlayBackStoppedaddDirectoryItem)r4   rK   sUrlidsctraktsTyper   
numEpisodeprevEpisodesPrevEpisodesPluginHandlerL   itemplayer_confri   _waitingNexterrrs                      r8   runcPlayer.runW   s   ::  !23v=||jj'4<<!89u%112DcJ\\;;$"2"2yy!' & 7 7		 B B;+.v/?/?UTlTlmsTt/u+vDL||jj'4<<!89u%112DcJ >>;1134H ]
(1n%3  .  "&(88:v##K0[,,./ I!!$"5"56'#d.A.A*BBC&*# jj++L9{4()"-1BBx4{d"**+AB  0FGd?$$%I5Q$$%I5Q))-M45  !=>CIId!,-K't 3c 9:12 %%mT4@67 rA))JJt  ++--zz$$Z0F:""4(""5) BMSTUnnt~~
8#'<<> q #%%)%6%6%8DN#'#7#7#9DLH((5
 JJt nnt~~~ 00""$ #++=UYdijAHSI,s43F3F/GGHt  8*11#6778s&   AV7 A#W  7#W 
X*X		Xc                 B    U R                  5       nU R                  X!S9  g )N)windowed)r=   r   )r4   window	oPlayLists      r8   startPlayercPlayer.startPlayer   s    &&(			)	-r:   c                 $    U R                  5         g r<   )r   rE   s    r8   onPlayBackEndedcPlayer.onPlayBackEnded   s     r:   c                     [        S5        U R                  (       a  g SU l        U R                  U R                  5        g )Nzplayer stoppedT)r   r2   r   r   rE   s    r8   r   cPlayer.onPlayBackStopped   s3     ,,,0)'r:   c                 
    [        5        nU R                  5       (       a?  U R                  5       U l        U R	                  5       U l        U R                  5       U l        U R                  S:  Ga  [        SU R
                  U R                  -  -  5      nSnSnSnU R                  R                  S5      S:X  a3  [        R                  " U5      n[        UR                  S5      5      S	-  nX5:  d"  US
:X  Ga  U R
                  U R                  :X  Ga  U R                  R                  5       nU(       Ga_  U(       a"  U R                  < SU R                   < SU< 3n	OU R"                  n	0 n
U R$                  U
S'   XS'   XS'   U R&                  (       a0  U R(                  (       a  U R&                  U
S'   U R(                  U
S'   OU R*                  U
S'   U R,                  U
S'   U R.                  U
S'   U R0                  U
S'   U R                   (       a  U R                   U
S'   U R2                  U
S'   U R4                  U
S'   UR7                  U
5        UR9                  U
5        U R$                  S:X  a  UR;                  U
5        OU R$                  S:X  a  SnU R=                  U5        GO}U R
                  S:  Gal  U R                  R                  5       nU(       GaJ  0 n
U R"                  U
S'   XS'   U R*                  U
S'   U R
                  U
S'   U R                  U
S'   UR?                  U
5        U RA                  XR
                  U R                  5        U R$                  U
S'   U R0                  U
S'   U R.                  U
S'   U R$                  S:X  a  SnOU R$                  S:X  a  U R                  S:  a  OpU R&                  (       a0  U R(                  (       a  U R&                  U
S'   U R(                  U
S'   OU R*                  U
S'   U R,                  U
S'   URC                  U
5        U(       a  SW
S'   U R.                  U
S'   [E        5       RG                  U R                  5      RI                  S S!5      nU R                   (       aD  U R                   U
S'   U R                  S-   U R                   -   U
S'   US"-   U R                   -   U
S'   OU R                  U
S'   XS'   U R0                  U
S'   U R2                  U
S'   U R4                  U
S'   URC                  U
5        S S S 5        g ! , (       d  f       g = f! [J         a$  n[M        S#RO                  U5      5         S nAg S nAff = f)$Nr   z%.2fF?zscript.traktr^   r_   rate_min_view_timed           z SEcattitletitleWatchedsiteurlfavtmdbIdsiteseason	seasonUrl
seasonFunc18Tg     f@pointtotal5i
  4  _SzERROR Player_setWatched : {0})(r   r   r   r   r   r   r   r   floatrt   ru   	xbmcaddonAddonr|   getOriginalTitler   r-   r,   r   r!   r"   r.   r0   r#   r/   r   r    insert_watched
del_resumedel_viewing_cPlayer__setWatchlistinsert_resume_cPlayer__setProgressinsert_viewingr   r   replacer   r   r   )r4   r   dbpourcentsaisonViewingVALUE_WATCHTIMETRAKT_ID
traktAddonsTitleWatchedr,   metatvShowTitleWatchedr   s                r8   r   cPlayer._setWatched   sm   {	?">>##%)%6%6%8DN'+||~D$#'#7#7#9DL>>A%$Vt/?/?$../P%QRH$)M '+O-Hzz,,->?6I%.__X%>
*-j.C.CDX.Y*Z]`*` 2CDL\L\`d`n`nLn )-(E(E(G('8<8H8H$,,X`)a)-#%D*.))DK,2M3@0#}}26--Y.2nnU26**Y.2iiU-1\\DN+/<<DL#||15X04D-151D1DD.--d3 MM$/  $yyC/ "t 4!%c!104 ++H5 ))E1(,(E(E(G(#%D,0KKDM3@0+/::DL,0,<,<DM,0NNDM,,T2 !..x9I9I4>>Z +/))DK+/<<DL-1\\DN  $yyC/04
 $(99#38M$('+}}:>--Y6:nnU:>**Y6:iiU$&$5$5d$; %&)U)-X-2W-A-A$BRBR-S-[-[\_ac-d*<<-1\\DN,0,<,<t,Cdll,RDM3E3Lt||3[D0,0,<,<DM3E0'+||V*...Y&*&9&9U))$/o r  	?188=>>	?s5   
T5 TT$T5 $
T2.T5 2T5 5
U#?UU#c                    [        S5        U R                  (       a  SU l        g SU l        [        5        nU R	                  5       (       Ga
  U R                  5       S:  a  U R                  5       U l        U R                  R                  5       nU(       a  SU0nUR                  U5      u  pEU(       a  US:X  a  U R                  5       nXT-  nUS:  a  USU-  :  ay  US-  nXFS-  -
  nUS-  nXxS-  -
  n	[        5       R                  S	XhU	4-  S
/S5      n
U
S:X  a  U R                  U5        O(U
S:X  a"  U R                  S5        UR                  U5        S S S 5        g ! , (       d  f       g = f)Nzplayer startedTrp   r   rd   r   i  <   zReprendre depuis %02d:%02d:%02du   Lire depuis le débutzReprendre la lecturer   r   )r   r1   r3   r   isPlayingVideor   r   r   r   
get_resumer   r   VSselectseekTimer   )r4   r   r   r   resumePointr   hmsmsrets              r8   onAVStartedcPlayer.onAVStartedd  sU    %%!DN%)"Ub""$$#)=#335 $ = = ? *M:D)+t)<&K" A:$($5$5$7E*/*=K ',s5y1H +T 1A!,tV!3B "BA "R4A"(("3"35VYZ_`Xa5acz4{  ~T  #UC"ax $k :!$ $c 2 "d 35 UUs   D!E  
E.c                     U R                   R                  S5      S:X  a  g U R                   R                  S5      S:X  a  g [        SS/S9R                  5       n[	        US5      nU" S	US
9  g )Nr^   r_   bstokenr   resources.lib.trakttraktfromlist	getAction
SetWatched)Actionr   rt   ru   
__import__r   getattr)r4   r   pluginsfunctions       r8   __setWatchlistcPlayer.__setWatchlist  se    ::  !23v=::  +r12gYGNNP7K0x8r:   c                     U R                   R                  S5      S:X  a  g U R                   R                  S5      S:X  a  g US:X  a  g X#-  n[        SS/S9R                  5       n[	        US	5      nU" S
XS9  g )Nr^   r_   r   r   r   r   r   r   r   SetProgress)r   r   progressr   )r4   r   r   r   r  r  r  s          r8   __setProgresscPlayer.__setProgress  sw    ::  !23v=::  +r1>)2gYGNNP7K0Lr:   c                    U R                   R                  S5      n US:X  a  [        S5        [        R                  $ US:X  a  [        S5        [        R
                  $ US:X  a  [        S5        [        R                  $ g !    g= f)	N
playerTyperk   zplayertype from config: autor   zplayertype from config: mplayer2z!playertype from config: dvdplayerF)rt   ru   r   r&   PLAYER_CORE_AUTOPLAYER_CORE_MPLAYERPLAYER_CORE_DVDPLAYER)r4   r6   s     r8   __getPlayerTypecPlayer.__getPlayerType  s    jj++L9	c!45,,,c!78///c!9:111 "	s    B  B  B B)r*   r)   r   r3   r   r"   r!   r    r1   r2   r   r   r0   r   r$   r-   r.   r/   r,   r#   r   r   r   N)F)r   )r   r   r   )__name__
__module____qualname____firstlineno__r   rt   r(   r@   r=   rN   rJ   r[   r   r   r   r   r   r   r   r   r%   __static_attributes__ r:   r8   r   r      s[    GE $D29
<.tn.!(}?@$4N	9M"r:   r   )r   r&   rx   rv   r   resources.lib.comaddonr   r   r   r   r   resources.lib.dbr   resources.lib.gui.guir	   +resources.lib.handler.inputParameterHandlerr
   #resources.lib.handler.pluginHandlerr   resources.lib.upnextr   resources.lib.utilr   r   r   resources.lib.traktr   os.pathr   r'   r   r  r:   r8   <module>r!     sI         P P   & N > ' : : & ^dkk ^r:   