Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
ó
Ch-_c@sTddlmZmZmZddlmZddlmZmZddl	m
Z
ddlmZddl
Z
ddlZddlZddlZddlZy ddlmZmZmZWnek
rØeƒnXyddlmZd	„ZWn*ek
r"dd
lmZd„ZnXd„Zd
„Zd„Zd„Zd„Z d„Z!d„Z"d„Z#ddd„Z%ddd„Z&de'e'd„Z(de'e'd„Z)dd„Z*ddddddd„Z+ddd„Z,ddd„Z-dd$d„ƒYZ.id „Z/e0e0ie'de0d!„Z1e0idd"„Z2e0idd#„Z3dS(%iÿÿÿÿ(tprintDBGtprintExctCSelOneLink(tstrwithmeta(tCParsingHelpertcommon(tm3u8(thexlifyN(turlsplitt
urlunsplitturljoin(tmd5cCst|ƒjƒS(N(Rt	hexdigest(te((sM/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/urlparserhelper.pythex_md5s(tMD5cCstƒ}t||ƒƒS(N(RR(R
thashAlg((sM/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/urlparserhelper.pyRs	cCsªtjtj}|dkr%d}n|dkr5dSd}||9}g}x)|rv|j|||ƒ||:}qNW|dkr“|jdƒn|jƒdj|ƒS(Niiÿÿÿÿt0it-t(tstringtdigitst	lowercasetappendtreversetjoin(txtbasetdigstsignR((sM/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/urlparserhelper.pytint2base s	
	
cCs
t||ƒS(N(R(RR((sM/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/urlparserhelper.pytJS_toString/scCstjƒdS(Niè(ttime(((sM/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/urlparserhelper.pytJS_DateValueOf3scGsdjtt|ƒƒS(NR(Rtmaptunichr(targs((sM/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/urlparserhelper.pytJS_FromCharCode6scs4tjdƒ‰tjd‡fd†|ƒjdƒS(Ntunicode_escapes\\u[0-9a-fA-F]{4,}csˆ|jdƒƒdS(Ni(tgroup(tm(tdecoder(sM/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/urlparserhelper.pyt<lambda>;ssutf-8(tcodecst
getdecodertretsubtencode(ts((R)sM/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/urlparserhelper.pyR&9scCs¿i}d}d}g}d}t}ddgddgddgd	d
gddgg}x`tt|ƒƒD]L}||d}x5|||dkrµ|j||ƒƒ|d7}qWqjWd}x(|d
krê||||<|d7}qÃWd}xÇ|t|ƒkrºd}	d}
d}d}|||d!}
x{|t|
ƒkr¬||
|}
|	d>|
}	|d7}x2|dkrž|d8}|||	|?dƒ7}qmW|d7}q2W|d7}qôW|S(NiRiAi[iai{i0i:i+i,i/ii@iHiii(R%trangetlenR(R
tttntrtiR0totutztatftltcth((sM/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/urlparserhelper.pytdrdX_fx=sB3

csýd„}‡fd†}dd„}|}tr¢xW|dkr‰|d8}||ƒ}	||ˆ|	<dˆ|	kr3||ƒˆ|	<q3q3Wd}|g}|}nxT|dkrø|d8}||r¥d||ƒd}
tj|
|||ƒ}q¥q¥W|S(NcSs
t|dƒS(Ni$(Rtret(R=((sM/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/urlparserhelper.pyte1ds
csˆ|jdƒS(Ni(R'(tmatchobj(td(sM/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/urlparserhelper.pytk1gscSsdS(Ns\w+((R3((sM/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/urlparserhelper.pyte2isiiRs\b(tNonetTrueR-R.(tpR:R=tkR
RCRARDREttmp1treg((RCsM/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/urlparserhelper.pytVIDEOMEGA_decryptPlayerParamscs(	
		

 cs‡‡fd†}‡fd†}dd„}|‰tr«xW|dkr’|d8}ˆ|ƒ}	||ˆ|	<dˆ|	kr<ˆ|ƒˆ|	<q<q<Wd}|g}|‰nxT|dkr|d8}||r®dˆ|ƒd}
tj|
|||ƒ}q®q®W|S(Ncsi|ˆkrd}nˆ|ˆƒ}|ˆ}|dkrR|t|dƒ7}n|t|dƒ7}|S(NRi#ii$(tchrR(R=R@(R:R
(sM/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/urlparserhelper.pyRA~s	
csˆ|jdƒS(Ni(R'(RB(RC(sM/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/urlparserhelper.pyRD‰scSsdS(Ns\w+((R3((sM/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/urlparserhelper.pyRE‹siiRs\b(RFRGR-R.(RHR:R=RIR
RCRARDRERJRK((R:RCR
sM/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/urlparserhelper.pytSAWLIVETV_decryptPlayerParams}s(
		

 cCsmd„}|}xW|dkrh|d8}||rd|||ƒd}tj||||ƒ}qqW|S(NcSs
t||ƒS(N(R(R=R:((sM/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/urlparserhelper.pyRA siis\b(R-R.(RHR:R=RIR
RCRARK((sM/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/urlparserhelper.pyt KINGFILESNET_decryptPlayerParamsŸs	

 css‡‡fd†}|‰xT|dkrn|d8}||rdˆ|ƒd}tj||||ƒ}qqW|S(Ncsi|ˆkrd}nˆ|ˆƒ}|ˆ}|dkrR|t|dƒ7}n|t|dƒ7}|S(NRi#ii$(RMR(R=R@(R:R
(sM/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/urlparserhelper.pyRA«s	
iis\b(R-R.(RHR:R=RIR
RCRARK((R:R
sM/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/urlparserhelper.pytTEAMCASTPL_decryptPlayerParamsªs

 ic	CsÒddddg}d}xE|D]=}|r=|j|ƒ}n|j|ƒ}|dkrPqqWd|krpdS|t|ƒ7}|r›|j||ƒ}n|j||ƒ}d|kr½dS||7}|||!S(Ns}(s}
(s}
(s}
(s))iÿÿÿÿR(trfindtfindR2(	tcodettypetr1tr2tmark1Tabtmark2tmark1tidx1tidx2((sM/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/urlparserhelper.pytgetParamsToupleÄs$

cCsctdƒt||||ƒ}t||ƒ}|dkr_|jdƒr_t|d |ƒ}n|S(NtunpackJSPlayerParamsRs))iÿÿÿÿ(RR\tunpackJStendswith(RSt
decryptionFunRTRURVtdata((sM/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/urlparserhelper.pyR]Ùs
RcBsã|}|d|d7}ye|ddƒ}Wnek
rLedƒdSXidd6ed6ejd6ejd	6}idd
6}y|||UWnek
r®edƒdSXy||d
ŒSWnek
rÞedƒnXdS(
NsparamsTouple = (t)Rtexecs$unpackJS compile algo code EXCEPTIONt__builtins__RtdecodeURIComponenttunescapetparamsTouplesunpackJS exec code EXCEPTIONsdecryptPlayerParams EXCEPTION(tcompilet	ExceptionRRFRturllibtunquote(RaR`taddCodet
paramsCodet
paramsAlgoObjtvGlobalstvLocals((sM/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/urlparserhelper.pyR^às&

(



cCsXxQ|dkrS|d8}||rtjdt||ƒd|||ƒ}qqW|S(Niis\b(R-R.R(RHR:R=RIR
RC((sM/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/urlparserhelper.pytVIDUPME_decryptPlayerParams÷s


1c
Cs<d}d}d}g}g}xHtrh|dkrG|j||ƒn&|t|ƒkrm|j||ƒn|d7}|dkr—|j||ƒn&|t|ƒkr½|j||ƒn|d7}|dkrç|j||ƒn&|t|ƒkr
|j||ƒn|d7}t|ƒt|ƒt|ƒt|ƒt|ƒt|ƒt|ƒkr!Pq!q!Wdj|ƒ}	dj|ƒ}
d}g}d}x“|t|ƒkr.d}t|
|ƒdrÑd}n|jtt|	||d!dƒ|ƒƒ|d7}|t|ƒkr!d}n|d7}qœWdj|ƒS(NiiiRiÿÿÿÿii$(RGRR2RtordR%tint(
twR6R0R
tlIlltll1ItIl1ltll1ltl1lItlI1ltI1lItl1lltll11((sM/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/urlparserhelper.pytVIDEOWEED_decryptPlayerParamssL	


J	+
	cCsQd}xD|t|ƒkrL|tt|||d!dƒƒ7}|d7}q	W|S(Niii$(R2R%Rs(RtR6R0R
((sM/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/urlparserhelper.pytVIDEOWEED_decryptPlayerParams2&s
$t
captchaParsercBs#eZd„Zd„Zd„ZRS(cCsdS(N((tself((sM/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/urlparserhelper.pyt__init__0scCsèg}g}tjdƒj|ƒ}t|ƒdkräx«tt|ƒƒD]”}||}|j|dƒ|jt|dƒƒ|j|ƒg}||ddkrÄ|jdd„dtƒqI|jdd	„dt	ƒqIWn|S(
Ns0padding-(.+?):(.+?)px;padding-top:.+?px;'>(.+?)<iiitlefttkeycSs|dS(Ni((R((sM/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/urlparserhelper.pyR*?sRcSs|dS(Ni((R((sM/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/urlparserhelper.pyR*As(
R-RhtfindallR2R1RRstsorttFalseRG(RRatstrTabtvalTabtmatchR6tvalue((sM/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/urlparserhelper.pyttextCaptcha3s

 cCsdS(N((RRa((sM/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/urlparserhelper.pyt	reCaptchaDs(t__name__t
__module__R‚RŒR(((sM/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/urlparserhelper.pyR€/s		cCsÖt|ƒ}|jj|ƒ|jƒ}d|jkrÒ|jdƒrVd|jd<qÒ|jdƒdjdƒr‚d|jd<qÒ|jdƒdjdƒr®d	|jd<qÒd
|krÊd|jd<qÒ|jdƒdjdƒröd|jd<qÒ|jd
ƒrd
|jd<qÒ|jdƒr4d|jd<qÒ|jdƒrSd|jd<qÒ|jdƒrrd|jd<qÒ|jdƒr‘d|jd<qÒ|jdƒr°d|jd<qÒ|jdƒrÒd|jd<qÒn|S(Nt
iptv_protosmerge://tmerget?is.m3u8Rs.f4mtf4msprotocol=hlss.mpdtmpdtrtmpthttpsthttptfiletrtsptmmstmmsh(Rtmetatupdatetlowert
startswithtsplitR_(turlt
metaParamstretUrlturlLower((sM/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/urlparserhelper.pytdecorateUrlIs:cCsp|r*|jddƒdjdƒr*gStƒ}t|ƒj}|j|ƒ\}	}
|	j|ƒg}yç|jddƒ}d|krÀt|	d<|j	||	|
ƒ\}
}|jd}n'|j	||	|
ƒ\}
}|j
ƒ}tj||ƒ}|j
ræx®|jD]£}i}|s>|jjdƒd	jdƒrx|jid
d6|jjd6ƒt|j|ƒ|d<n&|jddƒt|j|ƒ|d<|jj|d
<d|jjkrë|jjd|d<|jjd|d<nd|d<d|d<|d|d<|d|d<yp|jjjdƒ}g}xN|ddd	…D]9}|j|jdƒdj
ƒƒdj|ƒ|d<qMWWntk
r¨d|d<nXd|d
|d|d|df|d<|r•|jr•|djjdƒd
kr•x®|jD]†}t|j|djƒ}t|ƒ}d|j|df|d<tdi|d6|dd6dd6dd6ƒ|d<|j|ƒqWq|j|d<|j|ƒqW|d	krPd „}t|||ƒjƒ}qPnj|rdt|j ƒkrgSid
d6|d6d!d"6dd6dd6dd6dd6d!d
6}|j|ƒWntk
rkt!ƒnX|S(#NR’iis.m3u8tiptv_m3u8_custom_base_linkRt
with_metadataR¡iÿÿÿÿRRtiptv_bitratetbitratetwiththeigthtwidththeightt,t.R+sbitrate: %s res: %dx%d %stnames[%s] %ssmerge://audio_url|video_urlt	audio_urlt	video_urltmpegtstff_out_containerthlsdltprefered_mergertalt_audio_streamscSs2yt|dƒSWntk
r-tƒdSXdS(NR©i(RsRiR(titemLink((sM/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/urlparserhelper.pyt__getLinkQualityªs

tunknowntcodec("R R_RRRœtgetParamsFromUrlWithMetaRtgetRGtgetPagetstripRtinitst
is_variantt	playliststabsolute_uritstream_infot	bandwidthtpopRFR¥t
resolutionR+RRRiR·tdictR°RtgetSortedLinksR2tsegmentsR(tM3U8UrltcheckExttvariantChecktcookieParamstcheckContenttsortWithMaxBitratet
mergeAltAudiotcmRœtparamstpostDatatretPlaylistst
finallM3U8UrltstsRatm3u8Objtplaylisttitemt	tmpCodecsR+R=taudio_streamtaudioUrltaltItemR¹((sM/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/urlparserhelper.pytgetDirectM3U8Playlisths~&	

	&!

 

+3
	>
cCsI|r'|jdƒdjdƒr'gStƒ}|j|ƒ\}}|j|ƒg}|j|||ƒ\}}	|rEt}
dtjddtƒkr£t	}
n|j
j|	ddƒd	}|j
j|tj
d
ƒtj
dƒtƒd	jƒ}td|ƒ|d
kr|}n|j
j|ddƒ}xº|D]²}
|j
j|
dƒd}|d
krut||ƒ}n|j|ƒr8y#t|j
j|
dƒdƒ}Wntk
rÀd}nX|jid|d6|d6|d6ƒq8q8Wdt|ƒkr¯tj
dƒj|	ƒ}x”|D]‰}
t|idd6|
d6ƒ}|
rXt	|jd<nyt|
ƒ}Wntk
rd}nX|jid|
d6|d6|d6ƒqWndt|ƒkrt|idd6ƒ}|
rít	|jd<n|jidd6dd6|d6ƒn|dkrEd„}t|||ƒjƒ}qEn|S(NR’is.f4mtlives<streamType>s
</streamType>s	<manifests</manifest>is<baseURL[^>]*?>s
</baseURL>s…|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| Rs<mediat>shref=['"]([^'^"]+)['"]sbitrate=['"]([^'^"]+)['"]s[f4m/hds] bitrate[%s]R°R©R¡sbitrate="([0-9]+?)"R“RR¨tiptv_livestreams	[f4m/hds]iÿÿÿÿcSs2yt|dƒSWntk
r-tƒdSXdS(NR©i(RsRiR(R¸((sM/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/urlparserhelper.pyR¹çs

(R R_RR¼RR¾R‡RtgetDataBeetwenMarkersRGtphtgetDataBeetwenReMarkersR-RhR¿RtgetAllItemsBeetwenMarkerstgetSearchGroupsR
t
isValidUrlRsRiRR2R…RRœRRÉ(tmanifestUrlRÌRÎRÐRÒtheaderParamsRÔRÕR×RatliveStreamDetectedttmptbaseUrlRÚtlinkR©tbitratesR¹((sM/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/urlparserhelper.pytgetF4MLinksWithMetaºs^#	
	7	
#

-


-%	c
sk|r'|jdƒdjdƒr'gStƒ‰d‡fd†}ˆj|ƒ\}}|j|ƒg}ˆj|||ƒ\}}	|r7t}
d|	kr¦t}
nigd6gd6}ˆjj	|	dd	d
tƒ}t
|ƒrñ|d}	nˆjj	|	dd
d
tƒ}	xK|	D]C}
d}tjdƒj
|
ƒrCd}n$tjdƒj
|
ƒrd}nqˆjj	|
ddd
tƒ}xÑ|D]É}i}||dƒ|d<ˆjj|dƒd|d<d|dkrøˆjj|
dƒd|d<n|djdƒd|d<d|dkr)qŒn|dkr÷||dƒ|d<d|dkrn||
dƒ|d<n||dƒ|d<d|dkr§||
dƒ|d<nˆjj|dƒd|d<d|dkrDˆjj|
dƒd|d<qDnMˆjj|dƒd|d<d|dkrDˆjj|
dƒd|d<n||j|ƒqŒWqWd}xÑ|dD]Â}i}|
|d<|d|d<|d|d<|d|d<||d<t
|dƒrÊd}xU|dD]ê}t|ƒ}|dcd |d7<|dc|d7<|d|d<|d|d<|d|d<d!|d|d|d|d|d|df|d"<t|id#d$6|d%6|d&6|dd'6ƒ|d(<|j|ƒ|d)7}qÙWn\d*|d|d|df|d"<t|id#d$6|d%6|dd'6ƒ|d(<|j|ƒ|d)7}qnWn|dkrgd+„}t|||ƒjƒ}n|S(,NR’is.mpdcsBy)tˆjj|d|dƒdƒSWntk
r=|SXdS(Ns[\s]s=['"]([^'^"]+?)['"]i(RsRäRçRi(RaR°tdefault(RÒ(sM/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/urlparserhelper.pyt
_getNumAttribös)
stype="dynamic"taudiotvideos<Periods	</Period>twithMarkersiÿÿÿÿs<AdaptationSets</AdaptationSet>Rs=['"]audio['"/]s=['"]video['"/]s<RepresentationRáRÅscodecs=['"]([^'^"]+?)['"]R+R¯tvp9R¬R­sframeRate=['"]([^'^"]+?)['"]t
frame_rateslang=['"]([^'^"]+?)['"]tlangt
livestreamt
audio_rep_idxR®s[%s] bitrate: %s %dx%d %s %sfpsR°R”Rtiptv_audio_rep_idxtiptv_video_rep_idxRâR¡is[%s] bandwidth: %s %scSs2yt|dƒSWntk
r-tƒdSXdS(NRÅi(RsRiR(R¸((sM/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/urlparserhelper.pyR¹Rs

(R R_RR¼RR¾R‡RGRäRæR2R-RhtsearchRçRRÈRRRÉ(RéRÌRÎtsortWithMaxBandwidthRòRêRÔRÕR×RaRëtrepresentationRìRÚRTtreptrepParamtaudioIdxRót	audioItemtvideoIdxRôt	videoItemR¹((RÒsM/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/urlparserhelper.pytgetMPDLinksWithMetaðs¨#	
	

		
 # 


3

,
	((4t-Plugins.Extensions.IPTVPlayer.tools.iptvtoolsRRRt-Plugins.Extensions.IPTVPlayer.tools.iptvtypesRt*Plugins.Extensions.IPTVPlayer.libs.pCommonRRt"Plugins.Extensions.IPTVPlayer.libsRtbinasciiRR-R RR+RjturlparseRR	R
RithashlibRRt6Plugins.Extensions.IPTVPlayer.libs.crypto.hash.md5HashRRRR!R%R&R?RLRNRFRORPR‡R\R]R^RqR~RR€R¥RGRßRðR(((sM/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/urlparserhelper.pyt<module>sP 



						&		"
"	R6