
    ~Dj                     >   S SK r S SKrS SKJr  S SKrS SKJrJr  S SKJ	r	  S SK
Jr  S SKJrJr  S SKJrJrJrJrJr  S SKJr  S S	KJrJr  S S
KJrJrJrJrJrJ r J!r!J"r"  \RF                  \RH                  \RJ                  \RL                  4u  r#r$r%r&\RN                  \RP                  \RR                  sr'r(r)\RT                  \RV                  \RX                  sr*r+r,\RZ                  \R\                  \R^                  sr-r.r/\R`                  \Rb                  \Rd                  \Rf                  4u  r0r1r2r3\Rh                  \Rj                  \Rl                  sr4r5r6\Rn                  \Rp                  \Rr                  sr7r8r9\Rt                  \Rv                  \Rx                  \Rz                  4u  r:r;r<r=\R|                  \R~                  \R                  sr>r?r@\R                  \R                  \R                  \R                  4u  rArBrCrD\R                  \R                  \R                  srErFrG\R                  \R                  \R                  srHrIrJ\R                  \R                  \R                  srKrLrM\R                  \R                  srNrO/ SQrP/ SQrQSrRSu  rSrTrUSu  rVrWrX0 S\S_S\S_S\S_S\T_S\T_S\T_S\U_S\U_S\U_S\V_S\V_S\V_S\W_S\W_S\W_S\X_S \X_S!\X0ErYS"rZS#S$S%S&S'S(S".r[S)S*S+S,S-S-S-S..r\S/u  r]r^S0r_S1r`S2raS3rbS4S5S6S7S8S9S:.rcS;S<S=S>S-S*S?.rd " S@ SA5      reg)B    N)Thread)open_windowcreate_window)episode_groups_cache)get_setting)externalfolders)debrid
kodi_utilssettingsmetadatawatched_status)FenLightPlayer)get_cache_expirymake_alias_dict)clean_file_namestring_to_floatsafe_stringremove_accentsget_datetimeappend_module_to_syspathmanual_function_importmanual_module_import)easynewsrd_cloudpm_cloudad_cloudoc_cloudtb_cloud)r   gdrivelibraryfilepursuit	plexshare)SDCAMTELESYNC))zapis.real_debrid_apiRealDebridAPI)zapis.premiumize_apiPremiumizeAPI)zapis.alldebrid_apiAllDebridAPI))zapis.offcloud_apiOffcloudAPI)zapis.easydebrid_apiEasyDebridAPI)zapis.torbox_api	TorBoxAPIReal-Debridr   	rd_browsePremiumize.mer   	pm_browse	AllDebridr   	ad_browseOffcloudr   	oc_browse
EasyDebrided_cloud	ed_browseTorBoxr   	tb_browser.   r0   r2   r4   r6   r9   zrd.tokenzpm.tokenzad.tokenzoc.tokenzed.tokenztb.token               )4K1080p720pr$   SCRr%   r&   ))r   r   r   r   r   )folder1folder2folder3folder4folder5)r   r   r   r   r   r   r	   z%s[CR]%s[CR]%szfenlight.internal_results.%s   [B]HEVC[/B]z	[B]3D[/B]
[B]HDR[/B][B]D/VISION[/B]z
[B]AV1[/B]z[B]AI ENHANCED/UPSCALED[/B])hevc3dhdrdvav1enhanced_upscaledd   2      
   )r   r<   r=   r>   r?   r@   c                      \ rS rSrS rSIS j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SJS jrSKS j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/ r0S0 r1S1 r2S2 r3S3 r4S4 r5S5 r6SLS6 jr7S7 r8SKS8 jr90 4S9 jr:S: r;S; r<S< r=S= r>S> r?S? r@S@ rASA rBSISB jrCSC rDSKSD jrESE rFSF rGSG rHSHrIg)MSources1   c                    0 U l         S U l        / / / / 4u  U l        U l        U l        U l        / / / / S/4u  U l        U l        U l        U l	        U l
        Su  U l        U l        Su  U l        U l        U l        U l        U l        S=U l        =U l        =U l        =U l        U l        Su  U l        U l        U l        SS/ S 4u  U l        U l        U l        U l        Su  U l        U l        SU l         SS	U RB                  4S
SU RB                  4SSU RB                  4SSU RD                  4SSU RF                  44U l$        g )Nr   FF)TFFFFr   )truefalser^    NN
sources_4krA   sources_1080prB   sources_720prC   
sources_sdsources_total)%paramsnum_episodesprescrape_scrapersprescrape_threadsprescrape_sourcesuncached_resultsthreads	providerssourcesinternal_scraper_namesremove_scrapersrescrape_with_allrescrape_with_episode_groupclear_propertiesfilters_ignoredactive_foldersresolve_dialog_madeepisode_group_usedre   ra   rb   rc   rd   	prescrapedisabled_ext_ignoreddefault_ext_onlyext_name
ext_folderprovider_defaultsext_sourcesprogress_dialogprogress_threadplaying_filename_quality_length_quality_length_sd_quality_length_finalcount_tupleselfs    P/home/rurouni/addon-audit/build/ultimate-debrid/resources/lib/modules/sources.py__init__Sources.__init__2   s   $+$cegikmoqcq`$4143I4K`bdfhjlnps}r~b~_$,d.I4K_=I:$$: yYu$-t/BDD\^b^udee$ete);ed>ORVRaE]B$.$+T-BMOQSUWY]M]J$-$"8$:J/9,$,$#T4+?+?@?T[]a]q]qBr  vD  FL  NR  Nb  Nb  ucb$112_b$JdJd4eg$    Nc                    [        5         U(       a  Xl        UR                  SS 5      U l        U R                  R                  nUR                  S0 5      R                  SUR                  SS 5      5      U l        U" SS5      U" SS5      S:H  U" SU R                  5      S:H  sU l        U l        U l        U" S	S5      S:H  U" S
S 5      sU l        U l        U" SS5      S:H  U" SS5      S:H  sU l	        U l
        U R
                  (       aP  U R
                  S:X  a  Su  U l        U l        OOU R
                  S:X  a  Su  U l        U l        O/Su  U l        U l        O[        5       [        5       sU l        U l        U R                  =(       a7    U R                  =(       a$    U R                  =(       d    U R                  (       + U l        [!        5       [#        5       sU l        U l        U" S0 5      U" SS5      S:H  sU l        U l        U" SS5      S:H  U l        U" SU R*                  5      S:H  U l        U" SU R,                  5      S:H  U l        [/        SS5      S:H  U l        [3        [/        SS5      5      U l        U" S5      U" S5      sU l        U l        U" SS 5      U" SS 5      sU l        U l        U" SS5      U l        U R6                  S:X  a[  [3        U" S5      5      [3        U" S5      5      sU l         U l!        U" SS 5      U" S S 5      sU l"        U l#        U RI                  5         OS!u  U l         U l!        U l"        U l#        S"U R                  ;   a  U" S"S5      S:H  U l%        O[M        U R6                  5      U l%        U RO                  5         U RQ                  5         S#[S        5       [U        5       sU l+        U l)        U l,        [[        5       []        5       [_        5       sU l-        U l.        U l/        [a        5       U Rc                  5       sU l2        U l3        [/        S$S5      S:H  U l4        U Rk                  5         U R                  (       a  U Rm                  5         g U Ro                  5       $ )%Nrg   nextep_settings	play_typer_   
backgroundr^   r]   rx   device_listplay_selectedrandomrandom_continualautoplay_nextepTFr\   )FTdisable_autoplay_next_episodeignore_scrape_filtersry   rz   z'fenlight.results.folders_ignore_filtersz#fenlight.results.filter_size_method0
media_typetmdb_idcustom_titlecustom_yearepisode_group_labelepisodeseasoncustom_seasoncustom_episode)r_   r_   r_   r_   autoplayrT   zfenlight.results.size_unknown)8hide_busy_dialogrf   getrg   rx   r   r   r   r   r   r   r   autoscrape_nextepautoplay_next_episodeautoscrape_next_episode
autoscrapeauto_rescrape_with_allauto_episode_groupr   r   r   ry   rz   r   folders_ignore_filtersintfilter_size_methodr   r   r   r   r   r   r   r   r   check_episode_groupr   	auto_playget_metadetermine_scrapers_statusprovider_sort_ranksscraping_settings
sleep_timescraper_settingsinclude_prerelease_resultsignore_results_filterlimit_resolveresults_sort_order_quality_filtersort_functionquality_filterinclude_unknown_sizemake_search_infoautoscrape_nextep_handlerget_sources)r   rf   
params_gets      r   playback_prepSources.playback_prepA   sF   ;zz.$74{{*jj!2B7;;NFJJWegkLlm$4>{B4OQ[\hjqQrv|Q|  I  JU  W[  We  We  f  jp  p1$.$/4>)3M7)Kv)UWabqswWx&$D&'1(G'D'NPZ[movPw  |B  QB$$+t$	^^
nn))Ze+W4+?AW,,]i.Zd.BDDZ8C	5	t57L7NPgPi4d4**otoHXHXHn\`\n\nCo$/9O9QSeSg6$t6=GHY[]=^`j  lK  MT  aU  Y_  a_:$:)*A7KvU$()?AZAZ[_ee$$%79N9NOSYY$ +,UW^ _ci i$,QSV WX$",\":Jy<Q$/4<(2>4(H*UbdhJi%$T%'(=rB$	__	!":h#78#j>S:T4;-7-NPZ[kmqPr*4t*M[JT\4#5t7J4;;
:w0OSY0Y!$//2--/  "EHJ]J_aratB$/4+T-BTnTp  sH  sJ  LY  L[Q$!4#=t?Q,>,@$BVBVBX)$d))*I7SW]]$	__d446!!r   c                      [        U R                  U R                  /5      (       d  SU R                  ;   a  g [        R
                  " U R                  5      nU(       d  g [        R                  " [        R                  " US   5      S U R                  U R                  5      nU(       a=  US   US   SsU l        U l        U l        SU R                  U R                  4-  U l        g g !   Su  U l        U l         g = f)Nskip_episode_group_checkidr   r   T[B]CUSTOM GROUP: S%02dE%02d[/B]r`   )anyr   r   rf   r   r   r   r   group_episode_datagroup_detailsr   r   rw   r   )r   
group_infor   s      r   r   Sources.check_episode_groupl   s    ?	4t22
3448RVZVaVa8aci$((6:
f..x/E/EjQUFV/WY]_c_j_jlplxlxy=GTU]G^`mnw`xz~DD+T-D@DDVDVX\XkXkCllD  ?J
1$
d1s   6C* 'C* !BC* *C=c                    [        5       U l         SU R                   ;  a=  U R                  (       d  U R                  (       a  U R                   R                  S5        SU R                   ;   U l        U R                  (       a|  [        5       U l        U R
                  (       d  U R                  S5      $ [        5       u  U l        U l	        U R                  (       a  U R                  (       d  U R                  S5      $ g g )Nr   zNo Debrid Services EnabledError Importing External Module)
active_internal_scrapersry   rz   appendactive_externaldebrid_enableddisable_externalexternal_scraper_infor|   r{   r   s    r   r   !Sources.determine_scrapers_statusw   s    ":"<$	t44	4$:S:SW[WlWlos  pM  pM  pT  pT  U_  p`#t'D'DD$	')4


d&;&;<X&YY$9$;!4?DM
//t7L7LMn7o0o	 r   c                   ^  T R                   (       a  SSKJn  U" T 5      $ T R                  (       d!  T R                  (       d  T R                  5         / nT R                  (       a[  [        U 4S j[         5       5      (       a=  T R                  5       (       a(  T R                  5       nU(       a  T R                  U5      nU(       d  ST l        T R                  5         T R                  (       a  T R                  5         O!T R                  (       d  T R                  5         T R!                  5       T l        T R"                  (       d!  T R                  (       d  T R                  5         T R                  T R"                  5      nT R$                  (       a  SSKJn  U" T U5      $ U(       d  T R)                  5       $ T R*                  (       a  U$ T R-                  U5      $ )Nr   )play_selected_sourcec              3   @   >#    U  H  oTR                   ;   v   M     g 7fN)r   ).0xr   s     r   	<genexpr>&Sources.get_sources.<locals>.<genexpr>   s     bHa1!>!>>Has   F)output_sources_directory)r   modules.device_selectr   r   r   _make_progress_dialogrx   r   default_internal_scrapersprepare_internal_scraperscollect_prescrape_resultsprocess_resultsr   activate_external_providersr   _kill_progress_dialogcollect_resultsorig_resultsr   r   _process_post_resultsr   play_source)r   r   resultsr   s   `   r   r   Sources.get_sources   sG   	9
t
$$			doot7Q7Q7S'	^^bHabbb
$$&&,,.G$..w7	4>!!#
D<<>))4+E+E+G++-4


D$8$8$:T:T:V!!$"3"347	=
"4
11	3355	__Wn((r   c           	         U R                   R                  U R                  5        U R                  R                  nU R
                  (       a  U R                  U R                  5        U R                  R                  U R                  5       5        U R                  (       ab  U R                   H)  o!" [        U R                  US   US   S4US   S95        M+     U R                   Vs/ s H  o"R                  5       PM       nU R                  (       d  U R                  (       Ga  U R                  (       a  [        S U R                   5       5      (       a%  U R                   S   n[#        S[$        U   -  5      nOSu  p4U R&                  U R                  U R                   X4U R(                  U R                  U R*                  U R,                  4	U l        U R                  S	[0        S5        U R                  (       a)  U R                   Vs/ s H  o"R3                  5       PM       nU R                   $ U R4                  (       a  U R7                  5         U R                   $ s  snf s  snf )
Nr   r<   Fr=   targetargsnamec              3   0   #    U  H  oS    S:H  v   M     g7f)r   cometN r   is     r   r   *Sources.collect_results.<locals>.<genexpr>   s     =%<aDGO%<s   zfenlight.%s)r_   r_   r   )rn   extendrj   rl   r   ru   append_folder_scrapersrm   internal_sourcesr   activate_providersstartr   r   r   external_providersr   r   debrid_token_dictmetaro   r   ry   external_argsr   joinr   scrapers_dialog)r   threads_appendr   debrid_servicedebrid_tokens        r   r   Sources.collect_results   s   ,,d,,-<<&&.	$55dnnE..--/0	^^NNqN69P9PXYZ[X\^_`a^bdiWjqrstqu+vwN||$|!GGI|$	T___

=T%<%<=>>))!,^0A.0Q QR\)/
&.))T%<%<d>Q>QSaqu  rM  rM

 
 $"6"68Q8QSDJ%8
oo$,,7,Q,7	 $$d&:&:&<	 % 8s   )I!I&c           	         U R                   R                  nU R                  (       ab  U R                  (       d  [	        SU R
                  5      (       a6  U R                  U R                  5        U R                  R                  S5        U R                  R                  U R                  S5      5        U R                  (       d  / $ U R                   H)  o!" [        U R                  US   US   S4US   S95        M+     U R                    Vs/ s H  o"R                  5       PM       nU R                  R                  S U R                   5       5        U R                  (       a5  U R                    Vs/ s H  o"R                  5       PM       nU R"                  $ U R!                  5         U R"                  $ s  snf s  snf )Nr	   Tr   r<   r=   r   c              3   *   #    U  H	  oS    v   M     g7f)r=   Nr   r   s     r   r   4Sources.collect_prescrape_results.<locals>.<genexpr>   s     D,Cqd,Cs   )ri   r   ru   r   check_prescrape_sourcesr   r   rh   rp   r   r   r   r   r   r   r  r  rj   )r   r  r   s      r   r   !Sources.collect_prescrape_results   sY   ))00.	
mm.y$//JJ 7 78	*  !6!6t!<=		 	 )""aN6AXAX`abc`dfghifjlp_qxyz{x|3}$~",,-,779,-DD,C,CDD	__)?)?@)?Avvx)?@			 					 .@s   F74F<c           
         U R                   (       a  U R                  U l        O;[        [	        U R                  U R
                  -   5      5      U l        [        S5        U R                  U Vs/ s H  nSUR                  SS5      ;   d  M  UPM     sn5      U l	        U Vs/ s H  o"U R                  ;  d  M  UPM     nnU R                  (       a  SU l        U R                  U5      nOPU R                  U5      nU R                  U5      nU R                  U5      n[         H  o0R                  X5      nM     U R!                  U5      nU R#                  U5      nU$ s  snf s  snf )Nfs_filterless_searchUncachedcache_providerr_   T)rx   r   all_scraperslistsetrp   clear_propertysort_resultsr   rk   r   rt   filter_resultsfilter_audiofilter_keysspecial_filtersort_preferred_autoplay
sort_first)r   r   r   	file_types       r   r   Sources.process_results   s+   	^^)F)FT&C = =@T@T TUV4()++,m1:QRQVQVWgikQlClQ,mn$B1D,A,A'AQ'B	4w'7w'7  )7w'7y+>+>w+RK((1'OOG$'	. -nBs   .EE"E$9E$c                 :   U Hj  nUS   nUS:X  a  US   R                  5       nOUR                  5       nU R                  U5      US'   U R                  UR                  SS5      5      US'   Ml     UR	                  U R
                  S9  U R                  U5      nU$ )	Nscrape_providerr   r
   provider_rankqualityr$   quality_rankkey)lower_get_provider_rank_get_quality_rankr   sortr   _sort_uncached_results)r   r   itemprovideraccount_types        r   r  Sources.sort_results   s    d$%8*T(^-A-A-Cl (22<@400)T1JK4  
,,4%%,&''0'	.r   c                 :   U R                   (       a6  U Vs/ s H  o"S   S:X  d  M  UPM     nnU Vs/ s H  o"U;  d  M
  UPM     nnO/ nU Vs/ s H  o"S   U R                  ;   d  M  UPM     nnU R                  (       Ga  [        [	        SU R
                  -  S5      S5      S-  nUS:X  a  U R                  (       d  SnU R                  S	:X  aM  U R                  S
   =(       d    U R
                  S:X  a  SOSnSS[        [	        SS5      S5      -  -  U-  S-  nO6U R                  S:X  a&  [        [	        SU R
                  -  S5      S5      S-  nU Vs/ s H"  o"S   S:X  d  XBS   s=::  a  W::  d  M  O  M   UPM$     nnX-  nU$ s  snf s  snf s  snf s  snf )Nr  r	   r   zfenlight.results.%s_size_minr             g{Gz?r<   durationmoviei  i`	  g      ?g?zresults.line_speed25r=   zfenlight.results.%s_size_max10000size)r   r   r   r   r   r   r   r   )r   r   r   folder_resultsmin_sizer0  max_sizes          r   r  Sources.filter_results   s   	   'M1->+?9+LQ>M <A^(;a7<7G1Y<43F3F#FQ'G	k*H4??*Z\_`befimm8#od77D
"yy$VG1KQUH$=QSW1XZ^!__`dllnrrH1${+IDOO+[]degnorvvH kA&7$8I$EW]U^IjbjIjaIja7k	'	. N<G ls2   F	F		FFF(FF7F;Fc                 ~   ^ U V^s/ s H)  m[        U4S j[        5        5       5      (       a  M'  TPM+     sn$ s  snf )Nc              3   2   >#    U  H  oTS    ;   v   M     g7f	extraInfoNr   r   r   r   s     r   r   'Sources.filter_audio.<locals>.<genexpr>   s     'U_Q{^(;_   )r   audio_filters)r   r   r   s     `r   r  Sources.filter_audio   s*    	VWC'U]_'U$U!W	VV	Vs   &::c                   ^ [        U5      [        U   pCUS:X  a\  US:X  aV  U R                  [        SU R                  (       a  SOS-  S5      5      nU Vs/ s H  odUS   ;  d  US   U:  d  M  UPM     nnUS	:X  am  US
:X  aK  [        S5      S:X  a<  U V^s/ s H,  m[        U4S jUS4 5       5      (       d  UTS   ;  d  M*  TPM.     nnU$ U Vs/ s H  odUS   ;  d  M  UPM     nnU$ s  snf s  snf s  snf )NrK   r   zfenlight.filter.hevc.%smax_autoplay_qualitymax_qualityrA   r<  r!  r<   rM   rP   c              3   2   >#    U  H  oTS    ;   v   M     g7fr;  r   r=  s     r   r   )Sources.special_filter.<locals>.<genexpr>   s     (ZFYan)<FYr?  rL   )filter_statusr  r&  r   r   all)r   r   r  enable_settingr#  hevc_max_qualityr   s         `r   r  Sources.special_filter   s   %i0+i2H#Mn1,,[9Rptp}p}Vl  DQ  :R  TX  .Y  Z gAq~(=>ARVfAfa7gq	=#71#<!x'QS(ZsLFY(Z%Z%Zbeijkviwbwq'Gx	.  'Dw!Q{^.CAwD	. h yDs$   C,/C,)C1C1C6"C6c                   ^   / nST R                   ;   a!  [        S5      (       a  UR                  S5        UR                  T R                    Vs/ s H"  o3[        ;   d  M  [        U5      (       d  M   UPM$     sn5        U(       d  U$ U Vs/ s H  o3S   U;   d  M  UPM     nnUR                  U 4S jS9  U Vs/ s H  o3U;  d  M
  UPM     nnXE-   nU$ s  snf s  snf s  snf !    U$ = f)Nr	   r  c                 6   > TR                  U S   5      U S   4$ )Nr  r!  )_sort_folder_to_top)kr   s    r   <lambda>$Sources.sort_first.<locals>.<lambda>  s"    $":":1=N;O"PRSTbRc!dr   r"  )r  sort_to_topr   r   cloud_scrapersr'  )r   r   sort_first_scrapersr   r  	sort_lasts   `     r   r  Sources.sort_first   s    	4$$$Y)?)?ATA[A[\eAf$*;*;f*;QN?RqWbcdWeq*;fg
g~#SGq):';?R'RG:S??d?e":7az/79:#7	. gS:$	.sT   AC% C C2C8C% C% CC"C% ;	C C C% C% %C*c                 4  ^ U R                   (       d  U$  [        5       nU(       d  U$ U V^s/ s H!  m[        U4S jU 5       5      (       d  M  TPM#     nnU(       d  U$ U Vs/ s H  o3U;  d  M
  UPM     nn[        U VVVs/ s H\  n[	        U40 S[        U Vs/ s H  o3US   ;   d  M  UPM     sn Vs/ s H  n[        UR                  U5         PM     sn5      0D6PM^     snnnS SS9nXA-   $ s  snf s  snf s  snf s  snf s  snnnf !   Us $ = f)Nc              3   2   >#    U  H  oTS    ;   v   M     g7fr;  r   r=  s     r   r   2Sources.sort_preferred_autoplay.<locals>.<genexpr>  s     2\P[1+3FP[r?  pref_includesr<  c                     U S   $ )NrZ  r   rO  s    r   rP  1Sources.sort_preferred_autoplay.<locals>.<lambda>  s	    Q5Gr   T)r#  reverse)r   preferred_autoplayr   sorteddictsumpreference_valuesindex)r   r   preferencesr   preference_resultsr)  r   s      `   r   r  Sources.sort_preferred_autoplay	  s]   	w	#%;
g~$+]Gqs2\P[2\/\G]
Wn @A-?(?a7@$ &$$ !%T  !los  BM  vh  BM|}  VZ  [f  Vg  Qgvw  BM  vh  Di  vhpqDUVaVgVghiVjDk  vh  Di  @j  .k  !l$ &+GQUW

&& ^@ vh  Di  & .su   D D C6C6
D !D %	C;2C;8D D
D  -D  3D
8"D D
(D 6
D  
D

D Dc           	         U R                   (       a  [        U R                  5      S:X  a  g U R                   Vs/ s H  oU R                  ;  d  M  UPM     nnU R                  (       aF  U R                   (       d5  [        U Vs/ s H  n[        XR                  5      PM     sn5      (       a  gSU;   a  U R                  5        Vs/ s H%  n[        U R                  US   5      (       d  M#  UPM'     snU l
        U R                  (       aG  SU l        U Vs/ s H  oS:X  a  M
  UPM     snU R                   Vs/ s H  oS   PM	     sn-   U l        O1U Vs/ s H  oS:X  a  M
  UPM     snU l        O/ U l
        US S  U l        X l        U R                  (       a  U R                  5         gs  snf s  snf s  snf s  snf s  snf s  snf )Nr<   Fr	   Tr   )r   lenr   rp   rx   rH  r
  r   get_folderscraper_infosource_folders_directoryfolder_inforu   ro   rs   _clear_properties)r   r   r   s      r   r   !Sources.prepare_internal_scrapers  s   	c$"?"?@AEv)-)F)Fh)FASWSgSgNga)Fh	^^D00S  pH  :I  pHjk:QRSUdUd:e  pH  :I  6J  6J  SX**"&"="="?s"?QC[\`\k\kmnopmqCrq"?s4
D.F"].FS\n1.F"]osoo  aAojkcdaeo  aA  #AD3K'b3KaXaSa3K'b	$4!9!!<4":	D224	 i :Is #^  aA'bs;   F-F-F2"F7.F7	F<%F<;G	G%Gc                     U R                  X5      R                  U R                  5      nU(       d  g U(       a  U R                  R	                  U5        g U R
                  R	                  U5        g r   )_get_moduler   search_inforj   r   rn   )r   module_typefunctionrx   rn   s        r   r   Sources.activate_providers'  sP    [3;;D<L<LM'	&&&--g6G$r   c                     U R                  5       (       d  U R                  S5      $ U R                  5       U l        U R                  (       d  U R                  S5        g g )Nr   zNo External Providers Enabled)import_external_scrapersr   external_sourcesr   r   s    r   r   #Sources.activate_external_providers-  sM    		&	&	(	(1F1FGh1i*i 113$		 	 $"7"78W"X	 r   c                 f    [        SU R                  -  5        [        U R                  < SU R                  < 35      U l        [        SU R                  -  S5      " 5       R                  5        VVs/ s H!  u  pUS:X  d  M  UR                  S5      S   PM#     snnU l        g	s  snnf !    g= f)
Nzspecial://home/addons/%s/lib	.sources_z%s.modules.controlgetProviderDefaultsr]   .r<   FT)	r   r|   r   r{   r~   r   itemssplitr}   )r   rO  vs      r   rv   Sources.import_external_scrapers2  s    :T__LM*dmmT]]+[\49OPdgkgtgtPt  wL  :M  :O  :U  :U  :W  g  :W  [\  `f  [f_QWWS\!_  :W  g4	 gs$   A2B, 4B&B&	B, &B, ,B0c                     U(       a  [        US5        U R                  R                  S5        S/ sU l        U l        g !    N= f)N  r   F)notificationr   remover   r   )r   line1s     r   r   Sources.disable_external:  s=    
L%$$++J727/$/ $s	   ? Ac                    U R                    Vs/ s H  o"[        ;   d  M  UPM     nnU Vs/ s H8  nU(       a  [        X R                  5      (       d  M&  S[	        SU-  S5      U4PM:     nnU$ s  snf s  snf !   / n U$ = f)Ninternalzscrapers.%ssource)r   internal_include_listr
  r   r   )r   rx   r   active_sources
sourceDicts        r   r   Sources.internal_sources@  s    #<<[<!EZ@ZA<.[cq Tcq^_&=a&Q Zj"89JH"UWXYcqz T 
	 \Tr*	s,   A/A/A9 %A4A4+A9 4A9 9B c                 H    U R                   R                  S   nU R                  (       a  UnOU R                  (       a$  U R                   Vs/ s H  o3U;   d  M
  UPM     nnOWU Vs/ s HJ  n[
        R                  " [        SU R                  -  5      5      R                  SU-  S5      S:X  d  MH  UPML     nnU Vs/ s H3  o3[        U R                  < SU R                  < SS< SU< 3S5      4PM5     nnU$ s  snf s  snf s  snf !   U R                  5       n U$ = f)	Ntorrentsz%s_settingszprovider.%sr^   r]   rz  r|  r  )r~   total_providersry   rz   r}   jsonloadsget_propertyr{   r   r   legacy_external_sources)r   all_sourcesr  r   r  s        r   rw  Sources.external_sourcesG  s<   6!!11*=;
+D<R<R0g<Rq[fVf<R~0g~&1  XkTZZ]]a]j]jMj@k5l5p5pq~  BC  rC  EL  6M  QW  6W1k  X HV  W  HV  CD+T]]TXTaTacmop,qs{|}  HV:  W		 1h X W5t335*	sC   AD 	C=C=!D (AD3D9D ?:D9D =D D!c                 f    [        U R                  S5      " S/U R                  S9nU$ !   / n U$ = f)Nrn   r  )specified_foldersret_all)r   r{   ry   )r   r  s     r   r  Sources.legacy_external_sourcesQ  sF    *4==)DXbWcmq  nG  nG  Hz	 r*	s   &) 0c                 h   ^  U 4S jn[        U" 5       5      n[        U" 5       5      nU$ !   / n U$ = f)Nc               3   v   >#    TR                    H$  n U S   n[        SS5      nSX S   XS   44U4v   M&     g 7f)Nr   zscrapers.foldersr  r	   r<   r=   )rl  r   )r)  scraper_namemoduler   s      r   import_info+Sources.folder_sources.<locals>.import_infoW  sI     t7L#$6AFvQAw?@,
OO  s   69)r  )r   r  r  s   `  r   folder_sourcesSources.folder_sourcesV  s:    P
 KM"*'z	 r*	s   * 1c                     U R                   (       d  U R                  (       a  U R                  U5      $ U R                  U5      $ r   )r   r   	play_filedisplay_resultsr   r   s     r   r   Sources.play_sourcea  s.    	__dnnW.E'E			g	&&r   c                 B    UR                  U R                  5       5        g r   )r   r  )r   current_lists     r   r   Sources.append_folder_scraperse  s    d))+,r   c           	          [          Vs/ s H(  n[        SU-  5      U[        U R                  U5      4PM*     nnU Vs/ s H  oS   S;  d  M  US   (       d  M  UPM     sn$ s  snf s  snf )Nzfenlight.%s.display_namer   )NNoner_   r=   )folder_scrapersr   rk  r   )r   r   rl  s      r   rj  Sources.get_folderscraper_infoh  s}     zI  J  zItu+81<=qBZ[_[j[jlmBno  zI+  J 	L[!0B(B!qt![	LL J	Ls   /A#A(A(A(c                   ^ ^ UU 4S jnT R                   (       a  T R                  T R                  snmOT R                  T R                  snmT R                  U5      T l        T R                  (       d  g U" 5         Ag !    g = f)Nc            	        > [        5       n [        R                  " 5       nTR                  R                  5       (       Gds  U R	                  5       (       Gd\   T Vs/ s H'  o"R                  5       SL d  M  UR                  5       PM)     nnTR                  5         [        [        R                  " 5       U-
  S5      nSR                  U5      R                  5       n[        U[        [        5      -  S-  5      nTR                  R                  TR                  TR                   TR"                  TR$                  TR&                  XV5        [)        TR*                  5        [-        U5      S:X  a  g US:  a  g  TR                  R                  5       (       d  U R	                  5       (       d  GMZ  g g g g s  snf !   TR/                  5       s $ = f)NTr   z, rT   )xbmc_monitortimer   
iscanceledabortRequestedis_alivegetName_process_internal_resultsmaxr  upperr   floatscraper_timeoutupdate_scraperrd   rc   rb   ra   re   sleepr   ri  r   )	monitor
start_timer   remaining_providerscurrent_progressr  percent_threadsr   s	          r   _scraperDialog/Sources.scrapers_dialog.<locals>._scraperDialogm  st   ^7		:!!,,..w7M7M7O7O
019RAZZ\T=QKAIIKR	##%TYY[:5:YY*+113U$U?%;;S@AW	(($:K:KTM_M_aeapaprv  sE  sE  GL  V
4?? A%u3 !!,,..w7M7M7O7O.7O.R 04--//s+   F: F56F5
C'F: 2F: 5F: :G)rx   rh   ri   rm   rl   _get_active_scraper_namesinternal_scrapers)r   r  scraper_listr  r  s   `   @r   r  Sources.scrapers_dialogl  sj    0 
^^d.E.EtG]G]+\8!%h99,G$			$s   =A? ?Bc                    [        5       u  p#[        SSX#XR                  U R                  U R                  U R
                  U R                  U R                  S9u  pEU(       d  U R                  5         g US:X  a  U R                  X5      $ U R
                  (       a&  US:X  a  Su  U l        U l
        U R                  5       $ g g )N)windows.sourcesSourcesResultszsources_results.xml)	window_format	window_idr   r   r   r   rx   rt   rk   playperform_full_searchr\   )results_formatr   r   r   r   rx   rt   rk   r   r  rs   r   )r   r   r  window_numberactionchosen_items         r   r  Sources.display_results  s    !/!1-#$IK`'PYPYos  pH  pH**dnnVZVjVj  ~B  ~S  ~ST& 
++-w DD~~&$99+7(4>4(



 :~r   c                 6    U Vs/ s H  o"S   PM	     sn$ s  snf )Nr=   r   )r   r  r   s      r   r  !Sources._get_active_scraper_names  s    $	%1A$	%%	%s   c                    U R                   S;   a  U R                  (       aw  U R                  (       df  SU l        U R                   S:X  d)  [        U R                  R                  SS5      SS9(       a&  / SSsU l        U l        U l        U R                  5       $ U R                  S	:X  Ga  U R                  S;   Ga  U R                  (       Gd  SU l        U R                  S:X  d*  [        U R                  R                  SS5      S
S9(       Ga  U R                  (       ah  U R                  R                  S S SU R                   U R"                  4-  SS.5        / SSS4u  U l        U l        U l        U l        U R%                  5       $ U R                  S:X  a)  SSKJn  U" U R                  U R                  S   S.5      nO&[*        R,                  " U R.                  5      S   S   nU(       a  [*        R0                  " [*        R2                  " U5      S U R                   U R"                  5      nU(       aa  US   US	   pTU R                  R                  XESXE4-  S.5        / SSSS4u  U l        U l        U l        U l        U l        U R%                  5       $ U R4                  (       az  U R6                  (       di  U R8                  S:X  a  U R;                  5       $ U R8                  S:X  d)  [        U R                  R                  SS5      SS9(       a  U R=                  5       $ U R;                  5       $ !   S n GNR= f!   S n GN\= f!   S n GN= f)N)r<   r=   Tr<   rootnamer_   z'No results.[CR]Retry With All Scrapers?)headingtextFr   z;No results.[CR]Retry With Custom Episode Group if Possible?r   )r   r   r   r   r=   r   )episode_groups_choiceposter)r   r  r   r   )r   r   r   z$No results. Access Filtered Results?)r   r   rq   confirm_dialogr   r   rl   ry   rx   r   r   r   rr   rw   rf   updater   r   r   indexers.dialogsr  r   episode_groupsr   r   r   r   r   r   _no_results_process_ignore_filters)r   r  group_idr   r   r   s         r   r   Sources._process_post_results  s,   	  F*t/C/CDLbLb 4
!!Q&.z[]A^  fO  +P>@$;DL$+T^	__	!d&=&=&GPTPpPpPp&*4#
"nTYY]]:WY=Z  b_  '`  '`	[[$$  `A  EI  EP  EP  RV  R^  R^  D_  `_&*, -WY[_aeglWlTT\4)4+Ddn  !#7*DIIS[I\+]^( ,,T\\:1=dC("55h6L6LX6VX\^b^i^ikokwkwx-%h/y1Ig
kk6  fG  KQ  J[  f[  \  ]z|  C  EI  KO  QV  {VwdlD4d6LdNgimiw!!	t
  A%d.>.>.@'@
  A%		jZ\@]  eK  *L''))				! X X "T]s%   "L1  &L; -AM 1L8;MMc                     U R                   (       a  [        S5        Su  U l        U l         U R                  U R                  5      nU R                  U5      nU R                  U5      nU R                  U5      $ )Nz#Filters Ignored & Autoplay Disabledr   )r   r  rt   r  r   r  r  r   r  s     r   r  Sources._process_ignore_filters  se    	]]L!FG(3%$d//0'((1'OOG$'			'	""r   c                     U R                  5         [        5         U R                  (       a  [        SS5      $ [        SS5        g )Nz[B]Next Up:[/B] No Resultsi  z
No Resultsr  )r   r   r   r  r   s    r   r  Sources._no_results  s2    	__\*FMM|T"r   c                     U R                   R                  SS 5      =(       d=    U R                   R                  S5      =(       d    U R                   R                  S5      nU$ )Nr   english_titletitler   r   )r   search_titles     r   get_search_titleSources.get_search_title  sF    ~t4p		o8VpZ^ZcZcZgZghoZp,	r   c                     U R                   R                  SS 5      =(       d    U R                   R                  S5      nU$ )Nr   yearr  )r   r  s     r   get_search_yearSources.get_search_year  s-    	}d	+	Dtyy}}V/D$	+r   c                     U R                   R                  SS 5      =(       d    U R                   R                  S5      n[        U5      nU$ !   S n U$ = f)Nr   r   r   r   r   )r   r   s     r   
get_seasonSources.get_season  sF    99==$/J499==3J&Fv	- 4&	-   A Ac                     U R                   R                  SS 5      =(       d    U R                   R                  S5      n[        U5      nU$ !   S n U$ = f)Nr   r   r  )r   r   s     r   get_episodeSources.get_episode  sG    IIMM*D1MTYY]]95M'Ww	. D'	.r  c                     S nU R                   S   S:X  a1  U R                   R                  S5      n[        [        U5      5      nU$ U$ !   [        U5      n U$ = f)Nr   r   ep_name)r   r   r   r   )r   r  s     r   get_ep_nameSources.get_ep_name  sW    '	YY|	)YY]]9%7nW56	.. *[)7	.s   A	 	Ac                     U R                    HW  n[        [        U-  5      nUS;   a  M  [        R                  " U5      n[        [        U-  S5        U R                  U5        MY     g !    Ma  = f)N)checkedr_   Nr  )r  r  int_window_propr  r  set_property_sources_quality_count)r   r   win_propertyrn   s       r   r  !Sources._process_internal_results  s`    !!a23<++X**\*!#Y/w' " 8s   A))A.c                 ~    U R                    H-  n[        XS   [        XS   5      US   " XS   5      -   5        M/     g )Nr   r=   r<   )r   setattrgetattr)r   rn   r)  s      r   r  Sources._sources_quality_count  s>    d1gwt!W7MPTUVPWX_fgahPi7i jr   c                     U R                   (       d  SU R                  -  OSU R                  -  n[        U5      nU R                  (       a  SU;   a  U/ SQ-  nU$ )Nzresults_quality_%szautoplay_quality_%sr$   )rD   r%   r&   )r   r   r   r   )r   settingfilter_lists      r   r   Sources._quality_filter  sP    :>-- 4??2MbeietetMt'w'+	$$)<kMc>ck	r   c                     [         U   $ r   )quality_ranks)r   r   s     r   r&  Sources._get_quality_rank  s    	w	r   c                 2    U R                   U   =(       d    S$ )N   )r   )r   r+  s     r   r%  Sources._get_provider_rank  s    		!	!,	/	525r   c                     US:X  a  gg)Nr	   r   r<   r   )r   r*  s     r   rN  Sources._sort_folder_to_top  s    1r   c                     U Vs/ s H  nSUR                  SS5      ;   d  M  UPM     nnU Vs/ s H  o"U;  d  M
  UPM     nnXC-   $ s  snf s  snf )Nr  r  r_   )r   )r   r   r   uncachedcacheds        r   r(  Sources._sort_uncached_results  sS     NAJ!%%8H"2M$Ma(N4w!8mAw&4		 O4s   AA	AAc                    U R                   S:X  aC  [        R                  " SU R                  [	        5       [        5       [        5       5      U l        GO; [        R                  " SU R                  [	        5       [        5       [        5       5      U l        [        R                  " U R                  U R                  5      nU Vs/ s H  o"S   U R                  :X  d  M  UPM     snS   nUR                  SS 5      =(       d$    U R                  R                  S5      =(       d    SnUR                  SS5      nU R                  R                  US	   US   US
   UUS   XCS   U R                  S   U R                  U R                  S.
5        U R                  R                  U R                   U R                   U R"                  U R$                  S.5        g s  snf !    NR= f)Nr1  r   r   r   thumbfanartr_   episode_typer   	premieredr  plot)
r   r   r   r  r  ep_thumbr!  tvshow_plotr   r   )r   r   r   r   )r   r   
movie_metar   tmdb_api_keympaa_regionr   r   tvshow_metaepisodes_metar   r   r   r  r   r   r   r   r   )r   episodes_datar   episode_datar"  r  s         r   r   Sources.get_meta   s   	__X-@-@DLLZfZhjujw  zF  zH  .I	$$Ylnkm]i]klDI**4;;		BM,M}!)0LA}MaPL.O$))--2IORH##NB7LIIX 6<PYCZiu  wB  jC  Ua(hU[H\mqmvmvw}m~++t?R?RT U ))$//bfbsbs  EI  EU  EU  V  W N 4s&   A0G GG%B*G G G!c                     U R                  5       U R                  5       U R                  5       p2n[        U R                  U5      n[        U R                  U R                  U R                  5      nU R                  XU R                  U R                  R                  S5      UU R                  5       U R                  5       U R                  R                  S5      X5U R                  R                  SS5      S.U l        g )Nimdb_idtvdb_idtotal_seasonsr<   )r   r  r  r   r-  aliasesr   r   r.  r  expiry_timesr/  )r  r  r  r   r   r   r   r   r   r   r  r  rq  )r   r  r  r  r0  r1  s         r   r   Sources.make_search_info  s    ..0$2F2F2H$JZJZJ\w%DIIu-'!$//499dkkJ,$(OOe^b^j^jw{  xA  xA  xE  xE  FO  xP  ]d"t/?/?/Adiimm\eNfsz		oq9;$r   c                 |    US:X  a  UR                   " U R                  6 nU$ US:X  a  US   " US   6 nU$ U" 5       nU$ )Nr   r	   r   r<   )r  r   )r   rr  rs  r  s       r   rp  Sources._get_module  sR    J$:L:L)M 
- i(1+x{*C	- 	-r   c                     [          H  n[        [        U-  5        M     U R                  (       a)  U R                   H  n[        [        US   -  5        M     g g )Nr   )r   r  r  ru   rl  )r   r)  s     r   rm  Sources._clear_properties  sB    'd$8N)O'	t$q'0I!J r   c                     [        SSU R                  S9U l        [        U R                  R                  S9U l        U R
                  R                  5         g )N)r  SourcesPlaybackzsources_playback.xml)r   )r   )r   r   r   r   runr   r   r   s    r   r   Sources._make_progress_dialog"  sG    &'MOelpluluv$t';';'?'?@$r   c                     SU l         U R                  (       d  U R                  5         U R                  R                  5         g )NT)rv   r   r   enable_resolverr   s    r   _make_resolve_dialogSources._make_resolve_dialog'  s0    !$			t99;&&(r   c                     U R                   (       d  U R                  5         U R                   R                  U5        U R                   R                  $ r   )r   r   enable_resumeresume_choicer   r  s     r   _make_resume_dialogSources._make_resume_dialog,  s<    			t99;$$W-				+	++r   c                 F    [        SSU R                  US9nU$ !   Sn U$ = f)N)zwindows.next_episodeNextEpisodeznext_episode.xml)r   default_actioncancel)r   r   )r   rG  r  s      r   _make_nextep_dialogSources._make_nextep_dialog1  s8    CEW^b^g^g  yG  Hv	- 8&	-s     c                     Sn U R                   R                  5         US-  n U R                  R                  5         US-  nUS:X  d
  [	        5         U ? U ?Su  U l         U l        g !    NH= f!    N/= f)Nr   r<   r=   r`   )r   closer   r  close_all_dialog)r   successs     r   r   Sources._kill_progress_dialog6  s    '
a<7
a<7	A')

/9,$, $ $s   A' A. 'A+.A2c           
      f   [        5         SSSSSSS.U   nU R                  U5      nU" 5       R                  X45      n[        5         U(       d  [	        S5      $ UR                  S	 S
9  U(       a  X4$ U V	s/ s H5  n	SS[        U	S   5      S-  [        U	S   5      R                  5       4-  0PM7     n
n	[        R                  " U
5      USSS.n[        U40 UD6nUc  g U R                  XlS   S5      nUS   nU R                  5         [        5       R                  US5      $ !   S n N= fs  sn	f )Nr/   r1   r3   r5   r8   r:   r;   Errorc                 (    U S   R                  5       $ )Nfilename)r$  r\  s    r   rP  %Sources.debridPacks.<locals>.<lambda>N  s    !J-"5"5"7r   r"  r  z%.2f GB | %sr4  i   @rS  r]   )r}  r  	enumeratenarrow_windowlinkr_   video)show_busy_dialogdebrid_importerdisplay_magnet_packr   r  r'  r  r   r  r  dumpsselect_dialogresolve_internalr   r   r9  )r   debrid_providerr   
magnet_url	info_hashdownloaddebrid_infodebrid_functiondebrid_filesr)  
list_itemskwargschosen_resultrW  s                 r   debridPacksSources.debridPacksE  s\    +kXc[KQQ`b+((5/%';;JR|	l73378l33 EQ  R  EQ  }A.E$v,,?
,JO\`ak\lLmLsLsLu+vvw  EQ*  RZZ
+6djk&77-4			{&,A2	F$	z	"$				dG	,, ,
 Rs   D% 8<D.%D+c                 	   Su  U l         U l         [        5         S nU Vs/ s H  nSUR                  SS5      ;  d  M  UPM     nnU(       d  US   nU/nU R                  (       dB  UR                  U5      nUR                  U5        US U nUR                  5         XS  nXX-   U-   n/ n	U	R                  n
[        US5       H  u  p[        U5      nUS   nUS:X  a  US	   R                  S
S5      nOUS:X  a  US   nUR                  5       nSUS   < SUS   < SUS   < 3nUS   R                  5       nSXUU4-  US'   U
" U5        US:X  d  M  [        SS5       H"  n[        U5      nSXUUU4-  US'   U
" U5        M$     M     [        U	5      nU R                  5       (       d  U R!                  5       $ [        5         U R#                  5       U l        U R$                  S :X  a  U R!                  5       $ U R&                  (       d  U R)                  5         U R*                  (       a  [-        S5        [/        5       n[        US5       GH  u  p [        5         U R0                  (       d    GOU R0                  R3                  5         U R0                  R5                  US   S9  U R0                  R7                  5         US:  a  [-        S5        ASu  o0l         U l        US   U l        Xl        [=        5       n U R0                  R?                  5       (       d  URA                  5       (       a    OU RC                  U5      nU(       a\  SnU R0                  R7                  S5        U R0                  R5                  US9  [-        S5        URE                  X0U RF                  S 9  OGM^  U R                  (       a    OAU R                   (       a    O.U[I        U5      :X  a  S!U l        URK                  5           OGM      U R                  (       a  U R!                  5       $ U R                   (       a  W(       d  U RM                  5         Ag s  snf !    GN= f!    GM  = f!    GM  = f!   U R!                  5          N~= f!    g = f)"NNFr  r  r_   r   r<   r  r   r
   z.mer	   r  z[B]r   z
[/B] | [B]
size_labelz[/B] | r<  display_namez%02d. [B]%s[/B][CR]%s[CR]%sresolve_displayr   r=   z&%02d. [B]%s (RETRYx%s)[/B][CR]%s[CR]%sr.  )r     )NNFr   r^   )r  )rg   T)'playback_successfulcancel_all_playbackr   r   r   rd  r  r^  r   rU  ra  replacer  ranger  continue_resolve_checkr   get_playback_percentplayback_percentrv   r=  r   r  r  r   reset_is_cancelledupdate_resolverbusy_spinnerr   playing_itemr   r  r  resolve_sourcesr9  rg   ri  stopplayback_failed_action)r   r   r  urlr   r}  source_index
items_prev
items_nextprocessed_itemsprocessed_items_appendcountr)  resolve_itemr*  provider_text
extra_inforn  retryr  playerresolve_percents                         r   r  Sources.play_fileY  s   7B4$D4G'	3 RA
aee<Lb6Q(Qa7R
71:&85


==(LNN6,'J'J+E?+22q){u:L%&H:$x.*@*@*Kx	Y	4>NN$M26y/4CUW[\gWhiJ'--/L&Cu]giuFv&vL"#<(:1+$Zl(PTYjoq{  ~J  TK  )Kl$%\*  *  5

%
%
'
'0J0J0L)L4464
t#D,F,F,H%H

"
"D$=$=$?
oouT{^7q){u  %	,,.	))t4E/F)G	&&(	Cj?P<S
"D$<!&\TV				(	(	*	*g.D.D.F.F  &c	((1++O+DSzzz#$*;*;z<		!	!5		!	!5	#e*	"&t{{} 
7 *D 
d&@&@&BB		!	!d.I.I.KO SZ d* TD&$
$
$
& $s   Q( Q	Q	DQ( A%Q( :>Q( 9AQ( Q.Q( 1A!QQ)Q=4Q1Q( 3A4Q'Q( *Q;Q( =QQ( &Q6Q( 8Q( Q? 	Q( QQQQQ( QQ%!Q( (Q<?Rc                    U R                   S:X  a(  [        [        5       [        U R                  5      5      nO[[        U R                  U R                  45      (       a  g[        [        U R                  U R                  5      U R                  5      nU(       d  gU R                  U5      nUS:X  a  g US:X  a7  [        U R                   U R                  U R                  U R                  5        g[        U5      $ )Nr1  r/  rH  
start_over)r   get_progress_status_movieget_bookmarks_moviestrr   r   r   r   get_progress_status_episodeget_bookmarks_episoder   r   get_resume_statuserase_bookmarkr  )r   r  r  s      r   rv  Sources.get_playback_percent  s    	__+DEXEZ\_`d`l`l\m+n
DKK../00-.CDLLRVR]R].^`d`l`lm	!!'*&x|$//4<<dllK
	wr   c                 n    [        U R                  5      (       a  [        U5      $ U R                  U5      $ r   )auto_resumer   r  rC  rB  s     r   r  Sources.get_resume_status  s+    !!%.#8		!	!'	**r   c                     U R                  5         U R                  (       a9  U R                  (       a'  SS/ sU l        U l        U l        U R                  5         g g g rl  )r   rx   r   rv   rj   r   r   s    r   r~  Sources.playback_failed_action  sG    	^^FKUTVC4T^T-C &^r   c                 .    U R                   (       a  U R                  (       a  gU R                  (       a)  [        U R                  5      S:  a  U R	                  5       $ U R
                  (       a  U R	                  5       $ U R                  5       $ !    g= f)NTr<   F)r   r   rg   r   autoplay_nextep_handlerr   random_continual_handlerr   s    r   ru  Sources.continue_resolve_check  so    
//T33D
C 1 12Q6''))
4#?#?#AA

'
'
))s   "B 9B  B  B Bc                    [        SU R                  R                  S5      U R                  R                  S5      U R                  R                  S5      4-  SU R                  R                  S5      5        [        5       nUR	                  5       (       a"  [        S5        UR	                  5       (       a  M"  U R                  5         g)	N[B]Next Up:[/B] %s S%02dE%02dr  r   r   d  r  rT   T)r  r   r   xbmc_playerisPlayingVideor  r=  )r   r  s     r   r   Sources.random_continual_handler  s    .$))--2H$))--X`Jacgclclcpcpqzc{1||  C  EI  EN  EN  ER  ER  S[  E\  ]=&s	r   c                    U R                   (       d  U R                  (       d  g[        5       nUR                  5       (       Ga  UR	                  5       nU R                   S   U R                   S   U R                   S   pTnU(       a  S OSnSnUR                  5       (       aF   [        X!R                  5       -
  5      nX::  a  SnO"[        S5        UR                  5       (       a  MF  U(       Ga  U R                  (       a  [        U R                  5      S:  an  UR                  5       (       a"  [        S5        UR                  5       (       a  M"  [        [        U R                  5      S-
  5      U l        U R                  5         gU(       a  U R                  S	S
9nOgU(       a  U R                  US
9nOw[        SU R                  R                  S5      U R                  R                  S5      U R                  R                  S5      4-  SU R                  R                  S5      5        U(       d  UnUS	:X  a  gUS:X  a  UR                  5         gUS:X  a!  U R                  5         UR                  5         gUR                  5       (       a"  [        S5        UR                  5       (       a  M"  U R                  5         ggg!    GN= f)NF
use_windowwindow_timerG  rL  TrT   r<   rH  )rG  r  r  r   r   r  r  pauser  )r   rg   r  r  getTotalTimeroundgetTimer  r   r  r=  rI  r  r   r   r}  )	r   r  
total_timer  r  rG  r  continue_nextepremaining_times	            r   r  Sources.autoplay_nextep_handler  s   			d&7&7=&##%:-1-A-A,-OQUQeQefsQtvz  wK  wK  L\  w]N:DG6?				 	 J)99:^%o
3Z 
			 	  D"!!##U3ZF!!##c$"3"34q89d
!
t77x7Pf	d66n6UV
6$))--:PRVR[R[R_R_`hRikoktktkxkx  zC  lD  :E  E  GK  MQ  MV  MV  MZ  MZ  [c  Md  eN6%	7	[[]	6		 [[]  ""E#J6  ""	 5 Ds   #"K K Kc                    [        5       nUR                  5       (       a  U R                  5       nU(       d  [        SS5      $ [        SU R                  R                  S5      U R                  R                  S5      U R                  R                  S5      4-  SU R                  R                  S5      5        UR                  5       (       a"  [        S	5        UR                  5       (       a  M"  U R                  U5        g g )
NiD  i  z([B]Next Episode Ready:[/B] %s S%02dE%02dr  r   r   r  r  rT   )r  r  r   r  r   r   r  r  )r   r  r   s      r   r   !Sources.autoscrape_nextep_handler  s    =&7
,ud33;tyy}}W?UW[W`W`WdWdemWnptpypyp}p}  H  qI  ?J  J  LP  RV  R[  R[  R_  R_  `h  Ri  j



!
!5:&


!
! r   c                      [        [        U   6 $ r   )r   debrids)r   r_  s     r   rZ  Sources.debrid_importer  s    	!9	::r   c           	         U(       a  X l         S n SU;   a  US   nU R                   S   S:X  a|  [        U S5      (       a4  U R                  S   U R                  S   U R                  S   SU;   4u  pVpxONU R                  5       U R	                  5       U R                  5       SU;   4u  pVpxOU R                  5       S S S4u  pVpxU[        ;   a  U R                  XAS	   US
   XVXx5      nU$ UR                  SS 5      [        ;   a/  U R                  US   US   US   UR                  SS5      5      nU$ US	   n U$ !    U$ = f)Nr  r   r   rq  r  r   packageFr  hashr  r   url_dldirect_debrid_link)r   hasattrrq  r  r  r  r  debrid_providersresolve_cachedr   r   r^  )	r   r)  r   r  r  r  r   r   packs	            r   r|  Sources.resolve_sources  s   	t9#$*+Nyy)+m$$%)%5%5g%>@P@PQY@Z\`\l\lmv\w  zC  GK  zK  &K"eWd*.*:*:*<doo>OQUQaQaQcenrvev*v'5'4)-)>)>)@$e)S
&%))1D1D^Z_U`bfgmbnpu  @G  2N3
 
*	 	"D)-FF


%6 7dT(^UYU]U]^rtyUz
{C 
* E{	* $	*s   CD9 (AD9 1D9 9D>c                     U R                  U5      n[        X5      n	U" 5       R                  X#XXV5      n
U
$ !   S n
 U
$ = fr   )rZ  store_resolved_to_cloudresolve_magnet)r   r_  item_url_hashr  r   r   r  rd  store_to_cloudr  s              r   r  Sources.resolve_cached  sI    ((9/*?A.--h~V\fs	* #	*s   7 >c                 d  ^ S n U(       d  TS:X  a  UnU$ TS:X  a  SSK Jn  U" USS.5      nU$ U R                  T5      n[        U4S jS 5       5      (       a  U" 5       R	                  U5      nU$ S	T;   a  U" 5       R                  U5      S
   nU" 5       R                  U5      n U$ !    U$ = f)Nr	   r   r   )resolve_easynewsr^   )r  r  c              3   ,   >#    U  H	  oT;   v   M     g 7fr   r   )r   r   r  s     r   r   +Sources.resolve_internal.<locals>.<genexpr>)  s     
?)>A)>s   )rd_ad_tb__cloudrW  )indexers.easynewsr  rZ  r   unrestrict_linkget_item_detailsadd_headers_to_url)r   r  item_idr  r  r  r  rd  s    `      r   r^  Sources.resolve_internal   s    #Oy8# 
* 	:%2
fg>
?C 
* **?;O

?)>
???,,W5S
 
* 	O#/@/Q/QRY/Z[a/bW//8S	* $	*s   B* B* AB* 25B* *B/c                 X    [        U Vs/ s H  o3S   U:X  d  M  UPM     sn5      $ s  snf Nr   ri  )r   r}  r   r   s       r   r   Sources._quality_length1  s(    	:AI,'"9a:	;;:s   ''c                 `    [        U Vs/ s H  o3S   [        ;   d  M  UPM     sn5      $ s  snf r  )ri  sd_check)r   r}  dummyr   s       r   r   Sources._quality_length_sd4  s(    	;AI,(":a;	<<;s   ++c                     [        U5      $ r   r  )r   r}  r  s      r   r   Sources._quality_length_final7  s    	Ur   )Tr   ru   r   r  r   r   r   r   r   r   r   rr  rs   r   r   r   r   r   r   rz   r   r   ry   r   r   rw   r|   r{   r~   r   r   r   rt   rl  r   r   r   r   r   ro   r  r   r   r   r   rg   r   rf   r   r   rw  rq  r   r{  rx   rh   rj   ri   r   r   r}   r   rm   r   r   r   rp   rq   rr   rv   r   rq  r   r   r   rn   rb   ra   rc   rd   re   rl   r   rk   r   )r_   )F)rH  )J__name__
__module____qualname____firstlineno__r   r   r   r   r   r   r   r   r  r  r  r  r  r  r   r   r   rv  r   r   rw  r  r  r   r   rj  r  r  r  r   r  r  r  r  r  r  r  r  r  r   r&  r%  rN  r(  r   r   rp  rm  r   r=  rC  rI  r   ri  r  rv  r  r~  ru  r  r  r   rZ  r|  r  r^  r   r   r   __static_attributes__r   r   r   rY   rY   1   sm   g)"V	?p)2* &	$W	"%Y
<
	'-M0	&!F##(k 6
W;K

)
,

:-( &( M^
+)V	;$"<=r   rY   )fr  r  	threadingr   	itertoolswindows.base_windowr   r   caches.episode_groups_cacher   caches.settings_cacher   scrapersr   r	   modulesr
   r   r   r   r   modules.playerr   modules.source_utilsr   r   modules.utilsr   r   r   r   r   r   r   r   get_iconr  r  r  r]  r  rM  rY  r   r  r  r  r  r   r   r   r@  r
  r   r  r  rk  watched_indicatorsr   rR  r%  r&  r   r   r   r   r   r  rG  r   r   r   r   r_  r   r  r  r  r  r  r  external_exclude_listr  rd_infopm_infoad_infooc_infoed_infotb_infor  r  r   r  rS  r  r   	main_liner  r  r  rc  rY   r   r   r   <module>r     s       : < - & J J ) B n  n  n /9.A.A:CZCZ\f\l\lnx  oF  oF  /F +,|2<2J2JJLeLegq  hC  hC /~/2<2M2MzOjOjlv  mC  mC / "K-7-D-DjF]F]_i_x_x *lNJRJ\J\^f^^  BJ  B^  B^  `h  `v  `v  Kv G	#%8->F>^>^`h`~`~  AI  AU  AU ; .HPHhHhjr  kL  kL  NV  Ni  Ni E 13E9A9P9PRZRfRfhph}h}  @H  @T  @T  :T 6\;HPHbHbdl  eH  eH  JR  Ji  Ji E -/EKSKiKiks  lG  lG  IQ  I`  I`  bj  bx  bx  Lx H )>=@H@^@^`h  aA  aA  CK  CY  CY = .9A9T9TV^VqVqsy  tI  tI 6 &AOAiAiky  lN  lN  P^  Pm  Pm > .5C5_5_ao  bF  bF 2 2` U ( X ' M 'C=' C:w CW Co_f Chrt{ C  ~I  KR CC#WC.97CDNPWCYcelCny  |CCC$gC/:GCEMwCXbdkCmx  {BC e $.Zdr|  MW  cm  n 1aq1VWX #X o 	0$KTenz  Ro  pbB"Q7 G Gr   