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@snddlmZmZmZddlmZddlmZm	Z	m
Z
mZmZm
Z
mZmZmZmZddlmZmZmZddlmZddlmZddlmZmZddlZddl Z ddl!Z!yddl"Z"Wne#k
rnXddl$Z$ddl%Z%ddl&Z&ddl'Z'yddl(Z(Wne#k
r_nXyHydd	l)m*Z*Wn!e#k
ršdd	l*m*Z*nXddl+Z+Wne#k
r»nXdd
l,m-Z-m,Z,m.Z.m/Z/m0Z0ddl1m2Z2ddl3Z3d„Z4d
„Z5de j6fd„ƒYZ7de j8fd„ƒYZ9ddd„ƒYZ:ddd„ƒYZ;dS(iÿÿÿÿ(tTranslateTXTt
GetIPTVNotifytGetIPTVSleep(tstrwithmeta(
tprintDBGtprintExctIsHttpsCertValidationEnabledtbyteifytGetDefaultLangtrmt	UsePyCurltGetJSScriptFiletIsExecutabletiptv_system(tIsMainThreadtIsThreadTerminatedtSetThreadKillable(tjs_execute_ext(tph(tloadstdumpsN(tStringIO(turljointurlparset
urlunparsetparse_qst	parse_qsl(thexlifycCs(t|ƒ}tjd|ƒ}|jƒS(Ntfileobj(RtgziptGzipFiletread(tdatatbuftf((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pyt
DecodeGzipped%scCsXtƒ}tjddd|ddƒ}|j|ƒ|jƒ|jƒ}|jƒ|S(NtmodetwbRt
compressleveli(RRRtwritetclosetgetvalue(R R"tgzftencoded((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pyt
EncodeGzipped*s	


t
NoRedirectioncBs)eZd„ZeZeZeZeZRS(cCs1tj|||jƒƒ}||_||_|S(N(turllibt
addinfourltget_full_urltstatustcode(tselftreqtfpR2tmsgtheaderstinfourl((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pythttp_error_3024s		(t__name__t
__module__R9thttp_error_300thttp_error_301thttp_error_303thttp_error_307(((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pyR-3s
	tMultipartPostHandlercBs0eZejjdZd„Zd„ZeZRS(i
cCsc|jƒ}|dk	r_t|ƒtkr_|j|ƒ\}}|jd|ƒ|j|ƒn|S(NsContent-Type(tget_datatNonettypetstrtencode_multipart_formdatatadd_unredirected_headertadd_data(R3trequestR tcontent_type((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pythttp_requestAsc	Csªd}d}g}xP|D]H\}}|jd|ƒ|jd|ƒ|jdƒ|j|ƒqW|jd|dƒ|jdƒ|j|ƒ}d|}||fS(Ns+-----------------------------14312495924498s
s--s)Content-Disposition: form-data; name="%s"ts multipart/form-data; boundary=%s(tappendtjoin(	R3tfieldstLIMITtCRLFtLtkeytvaluetbodyRI((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pyREIs


(R:R;turllib2tHTTPHandlert
handler_orderRJREt
https_request(((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pyR@>s		tCParsingHelpercBsCeZed„ƒZeded„ƒZeed„ƒZeeed„ƒZeeed„ƒZ	eeed„ƒZ
eeed„ƒZeed„ƒZeeed	„ƒZ
eed
ed„ƒZeeed„ƒZeed
ed
„ƒZedd„ƒZedd„ƒZedd„ƒZed„ƒZRS(cCs.idd6}d}x|dt|ƒkr ||jdƒsR||jdƒr²|d7}tj||dƒ\}}}d|kr”g|d<n|dj|ƒ||7}n[||jdƒsØ||jd	ƒrï|d8}|d7}n|dc||7<|d7}|dkrPqqW|||fS(
NRKtdatiis<uls<litlists</ul>s</li>(tlent
startswithRYt	listToDirRL(tcListtidxtcTreetdeeptnTreetnDeep((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pyR^[s$
&


&


icCs%tj|||rtjnd|ƒS(Ni(Rtsearcht
IGNORECASE(R tpatterntgrupsNumt
ignoreCase((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pytgetSearchGroupspscCsë|j|ƒ}d|ks0d|jdƒkr:tdfS|j||jdƒƒ}d|kswd|jdƒkrtdfS|r·t||jdƒ|jdƒ|jdƒ!fSt||jdƒ|jdƒ|jdƒ!fSdS(NiÿÿÿÿiRK(ReRBtstarttFalsetendtTrue(R tpattern1tpattern2twithMarkerstmatch1tmatch2((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pytgetDataBeetwenReMarkersts!
!
0cCsOd}|r#|tjtjBO}n|s9|tjO}ntj||||ƒS(Ni(RtSTART_EtEND_ERftfind(R tmarker1tmarker2Rqt
caseSensitivetflags((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pytgetDataBeetwenMarkers€scCsOd}|r#|tjtjBO}n|s9|tjO}ntj||||ƒS(Ni(RRuRvRftfindall(R RxRyRqRzR{((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pytgetAllItemsBeetwenMarkers‡scCsOd}|r#|tjtjBO}n|s9|tjO}ntj||||ƒS(Ni(RRuRvRftrfindall(R RxRyRqRzR{((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pytrgetAllItemsBeetwenMarkersŽscCsOd}|r#|tjtjBO}n|s9|tjO}ntj||||ƒS(Ni(RRuRvRftrfind(R RxRyRqRzR{((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pytrgetDataBeetwenMarkers2•scCs‘|j|ƒ}d|kr%tdfS|j||t|ƒƒ}d|krWtdfS|rp|t|ƒ}n|t|ƒ}t|||!fS(NiÿÿÿÿRK(RRlR\Rn(R RxRyRqtidx1tidx2((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pytrgetDataBeetwenMarkersœs

cCsOd}|r#|tjtjBO}n|s9|tjO}ntj||||ƒS(Ni(RRuRvRfRw(R tnode1tnode2t	withNodesRzR{((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pytgetDataBeetwenNodesªsiÿÿÿÿcCsUd}|r#|tjtjBO}n|s9|tjO}ntj||||d|ƒS(Nitlimits(RRuRvRfR}(R R†R‡RˆtnumNodesRzR{((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pytgetAllItemsBeetwenNodes±scCsOd}|r#|tjtjBO}n|s9|tjO}ntj||||ƒS(Ni(RRuRvRfR(R R†R‡RˆRzR{((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pytrgetDataBeetwenNodes¸scCsUd}|r#|tjtjBO}n|s9|tjO}ntj||||d|ƒS(NiRŠ(RRuRvRfR(R R†R‡RˆR‹RzR{((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pytrgetAllItemsBeetwenNodes¿stwcCs0|}t||ƒ}|j|ƒ|jƒdS(N(topenR'R((tfileR R$t	file_patht	text_file((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pytwriteToFileÈs
cCs”i dd6dd6dd6dd6dd	6d
d6dd
6dd6dd6dd6dd6dd6dd6dd6dd6dd6dd 6dd!6dd"6d#d$6d%d&6dd'6d
d6d(d)6d(d*6dd+6dd,6d-d.6dd/6dd6d0d16d0d26}|jd3ƒ}d|kr||}ntjd4|ƒ}g}xU|D]M}t|ƒd5krm|j|ƒ}|rz|j|ƒqzq-|j|ƒq-Wd6j|ƒjd3ƒS(7NuauąucućuęulułunuńuouóusuśuzużuźuAuĄuCuĆuEuĘuLuŁuNuŃuOuÓuSuŚuZuŻuŹuáueuéuiuíuñuuuúuüuÁuÉuIuÍuÑuUuÚuÜsutf-8tNFCi€RK(	tdecodeRBtunicodedatat	normalizetordtgetRLRMtencode(ttxtR`tPOLISH_CHARACTERStnrmtxttret_strtitem((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pytgetNormalizeStrÐs B?14

cCstj||ƒjƒS(N(RYR¡tisalpha(RœR`((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pyR¢ãscCs
tj|ƒS(N(Rt
clean_html(RD((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pytcleanHtmlStrçsN(R:R;tstaticmethodR^RlRjRnRtR|R~R€R‚R…R‰RŒRRŽR”RBR¡R¢R¤(((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pyRYZs<
tcommoncBsßeZdZeZeZedd„ƒZeed„ƒZ	ee
d„ƒZedd„ƒZed„ƒZ
ed„ƒZd	e
ed
„Zd„Zd„Zed
„Zee
d„Zgeee
d„Zd„Zee
d„Zee
d„Zee
d„Zgeee
d„Zied„Zied„Ze
e
d„Zied„Zied„Ze
d„Z ied„Z!ied„Z"d„Z#d„Z$ied„Z%d „Z&d!„Z'd"„Z(d#gd$„Z)RS(%siMozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36tfirefoxcCs\|dkrd}n|dkr*d}nd}i|d6dd6d	d
6dd6}t|ƒS(
NR§sHMozilla/5.0 (Windows NT 6.1; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0t
iphone_3_0sMozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16siMozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36s
User-Agents?text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8tAccepts
gzip, deflatesAccept-EncodingitDNT(tdict(tbrowsertuatHTTP_HEADER((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pytgetDefaultHeaderðs		

cCsddlm}|j}i}i}d}t|tƒrýd|krS||d<n
i|d<x5|jD]*}||krg|j||d|<qgqgWdt|dƒkr´|}nd|jkr×|jd|d<nd|jkrý|jd|d<qýn||fS(	Niÿÿÿÿ(tDMHelpertheaderitiptv_proxy_gatewayt
proxy_gatewaytiptv_http_proxyt
http_proxy(t+Plugins.Extensions.IPTVPlayer.iptvdm.iptvdhR°tHANDLED_HTTP_HEADER_PARAMSRBt
isinstanceRtmetaR\(turltbaseHeaderOutParamsR°R·t	outParamst	tmpParamstpostDataRR((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pytgetParamsFromUrlWithMetaýs&	

	cCs=t|ƒ}|r'djd|ƒ}ndjd|ƒ}|S(Ns{uri.netloc}turis{uri.scheme}://{uri.netloc}/(Rtformat(Rºt
domainOnlyt
parsed_uritdomain((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pyt
getBaseUrls
shttp://fake/cCs|s
dS|jdƒr&|d}n|}tj|ƒ}|jdƒrq|jddƒd}|d|}n›|jdƒr£|jddƒd}||}ni|jdƒrÃ||d}nIdt|ƒkrd|kr||krú||}qt||ƒ}n|S(	NRKs./is//s://it:t/(R]R¦RÅtsplitR\R(RºtmainUrltcurrUrltproto((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pyt
getFullUrls&


cCs|jdƒp|jdƒS(Nshttp://shttps://(R](Rº((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pyt
isValidUrl3scs)‡fd†‰g}ˆ||dƒ|S(Ncs¿t|tƒr[x©|jƒD]8\}}|r>d||fn|}ˆ|||ƒqWn`t|tƒr¨xNtt|ƒƒD]$}ˆ|||d||fƒq}Wn|j||fƒdS(Ns%s[%s](R¸R«t	iteritemsR[trangeR\RL(tqueryR t
key_prefixRRRSR`(t_process(sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pyRÒ9s%RK((RÐt_query((RÒsE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pytbuildHTTPQuery7s
RKcCsO||_||_i|_i|_d|_d|_|sKtdƒ‚ndS(NssYou should stop use parameter useMozillaCookieJar it change nothing, because from only MozillaCookieJar can be used(tproxyURLtuseProxytgeolocationR¹RBtcurlSessiontpyCurlAvailablet	Exception(R3RÕRÖtuseMozillaCookieJar((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pyt__init__Gs						cCsp|j|tƒ}g}|jtdƒ|ƒ|jtdƒ|ƒ|dkrqtƒrq|jtdƒƒnÒt}y[tjƒ}td|gƒ|dd@rÑ|dj	d	ƒrÑ|d
dkrÑt}nWnt
k
rìtƒnX|r,tƒs|jtdƒƒqC|jtd
ƒdƒn|jtdƒdƒt
ƒjdj|ƒdd||dƒdS(NsHTTPS connection error "%s"
sUIt looks like your current configuration do not allow to connect to the https://%s/.
tverifysfYou can disable HTTPS certificates validation in the E2iPlayer configuration to suppress this problem.susePyCurl VERSION: %siiis7.6iswolfSSL/3.15.3sIYou can enable PyCurl in the E2iPlayer configuration to fix this problem.s/Please report this problem to the developer %s.siptvplayere2@gmail.coms;You can install PyCurl package from %s to fix this problem.s http://www.iptvplayer.gitlab.io/s
terrori(i€(RÅRnRLt_RRltpycurltversion_infoRR]RÚRR
RtpushRM(R3RCRºR6RÄtmessagestpyCurlInstalledtverInfo((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pytreportHttpsErrorRs(1

	cCs™t}tƒr•|jdkr‰yDtjƒ}td|gƒ|dd@rXt|_n	t|_Wq‰tk
r…t|_t	ƒq‰Xn|j}n|S(NsusePyCurl VERSION: %siiii€(
RlR
RÙRBRàRáRRnRÚR(R3tbRetRå((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pyt	usePyCurlls	

	cCsd|jkrf|jdƒ\}}|rfyt|ƒd|jd<Wqctk
r_tƒqcXqfn|jjddƒjƒS(NtcountryCodeshttp://ip-api.com/jsonRK(R×tgetPaget
json_loadsRÚRRštlower(R3RìtstsR ((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pytgetCountryCode‚s
c
Cstjƒ}t|ƒ}|jƒ}|jƒx¸tt|ƒƒD]¤}t}||jdƒ}	t|	ƒdkrxqAn|	dj	dƒr¦|	dd|	d<t
}n|	ddkrÉd|	d<t
}n|rAdj|	ƒ||<qAqAW|jt
dj|ƒƒ|d	|d
|ƒ|S(Ns	iis
#HttpOnly_i
it0RKtignore_discardtignore_expires(t	cookielibtMozillaCookieJarRt	readlinesR(RÏR\RlRÈR]RnRMt_really_loadR(
R3t
cookiefilet
ignoreDiscardt
ignoreExpirestcjR"tlinesR`tlineNeedFixRN((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pyt_pyCurlLoadCookieŒs&
	
	+c	CsøyØg}|jƒr-|j|||ƒ}ntjƒ}|j|d|ƒxH|D]@}|j|krSd|ksƒ|j|krS|j|ƒqSqSWx*|D]"}|j|j	|j
|jƒqžW|j|d|ƒWntk
rót
ƒtSXtS(NRð(RèRüRòRótloadtnameRBRLtclearRÄtpathtsaveRÚRRlRn(	R3Röt
leaveNamestremoveNamesR÷RøttoRemoveRùtcookie((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pytclearCookie s 
*
 
cCs|j|ƒ}|j|dƒS(NRK(tgetCookieItemsRš(R3RöR tcookiesDict((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pyt
getCookieItem³scCsld}yG|jƒr-|j|||ƒ}ntjƒ}|j|d|ƒWntk
rgtƒnX|S(NRð(RBRèRüRòRóRýRÚR(R3RöR÷RøRù((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pyt	getCookie·s
cCs_i}y:|j|||ƒ}x|D]}|j||j<q%WWntk
rZtƒnX|S(N(R
RSRþRÚR(R3RöR÷RøRRùR((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pyRÃs

c#Csrtdt|ƒ|fƒd}|jddƒ}|jddƒ}|jddƒ}|jddƒjdƒ}	x=t|	ƒr°d|	d	ks¦t|	d	ƒd	kr°|	d	=qtW|jd
dƒ}
|jddƒ}|dkrêt}nt}|	sd}
t}t}n.|	d	}
t}|
jdƒr3t}nt}|oB|s]td
t|ƒƒdSy}t	j
dd	d|d|d|d|d|
d|d|d
|
dtdtd|dtdddddidd6dtƒ}WntƒdSXyg|jƒr|j
|||ƒ}nt	jƒ}|j|d|ƒ|j|ƒ|j|d|ƒWntk
rmtƒnXdS(Ns%pCommon.addCookieItem %s to file '%s'RþRKRStportRÄRÇthttpiRtexpirest.scookie not valid : %s tversiontport_specifiedtdomain_specifiedtdomain_initial_dottpath_specifiedtsecuretdiscardtcommenttcomment_urltresttHttpOnlytrfc2109Rð(Rt
json_dumpsRBRšRÈR\RlRnR]RòtCookieRRèRüRóRýt
set_cookieRRÚ(R3Röt
cookieDictR÷RøRùt
cookieNametcookieValuet
cookiePorttdomainPartst
cookiePatht
cookieExpirestcookiePortSpecifiedtcookieDomaintcookieDomainSpecifiedtcookieDomainDottc((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pyt
addCookieItemÍsN5		
	}

c
Cs©d}y„|j|||ƒ}xh|D]`}dt|ƒkrO||krOq%n||}	|rqtj|	ƒ}	n|d||	f7}q%WWntk
r¤tƒnX|S(NRKis%s=%s; (RR\R.tunquoteRÚR(
R3RötallowedNamesR+R÷RøtretRRþRS((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pytgetCookieHeaders


cstƒrUtdƒ}tdƒ}tƒjdj||gƒddƒtdƒ‚ndˆkrntˆd<ni|_|j}d}t	}t
ƒ‰ˆjdgƒ‰d‰tg‰ˆjd	d
ƒ‰i‰‡‡fd†}	‡‡fd†}
‡‡‡‡‡‡fd
†}d„}yX	ˆjddƒ}
dˆkrGˆd}n	|j}dˆkriˆd}n(d|j
kr„|j
}n
i|d6}d|krª||d<ntdtˆƒƒtdt|ƒƒdˆkrôtˆddƒ‰ntt	ƒd|jkrtjƒ}nYˆjdt	ƒrY|j}d|_|jƒtjƒ}n|j}d|_|jƒˆjdt	ƒr|jtjdƒng}x§|D]Ÿ}|jƒ}|dkrâ|jtj||ƒqª|dkr|jtj||ƒqª|dkr.|jtj||ƒqª|jd|||fƒqªWt|ƒro|jtj|ƒn|jtj dƒdˆjddƒkrÒ|j!ˆdƒ}d|krÒ|jtj"|ƒqÒnd ˆkrd!ˆkrd"ˆksd#ˆkrtˆd <nˆjd t	ƒrd}xXˆjd$iƒj#ƒD]>}td%|ˆd$|fƒ|d&|ˆd$|f7}q@W|dkr¤|jtj|ƒnˆjd"t	ƒrØ|jtj$ˆjd!dƒƒnˆjd#t	ƒr|jtj%ˆjd!dƒƒqn|
dkrW|jtj&|
ƒ|jtj'|
ƒ|jtj(d'ƒnˆjd(t	ƒs¥|jtj)dƒ|jtj*dƒ|jtj+d)ƒnt,ƒsê|jtj-d*ƒ|jtj.d*ƒ|jtj/d*ƒn&|jtj0d+ƒ|jtj1d+ƒ|j2r%|j3}nd}d,ˆkrDˆd,}nd|krptd-ƒ|jtj4|ƒn|}ˆjd.dƒ}|dkr²|j5t6j7|dƒƒ}ntd/|ƒ|jtj8|ƒd|krrtd0t|ƒƒˆjd1t	ƒr|jtj9|ƒqrˆjd2t	ƒrStd3ƒ|}|jtj:|ƒqr|jtj9t6j;|ƒƒn|jtj<|	ƒˆr¡|jtj=|ƒn5ˆd*krÃ|jtj=|
ƒn|jtj>ˆƒ|jtj?t	ƒ|jtj@|ƒ|jtjAdƒtBƒs]
ˆd*krqy|jCƒWq{tjDk
rm}|d*tjEkrc|‚qntFƒq{Xn
|jCƒ|jGtjHƒ|d4<|jGtjIƒ|d5<|jGtjJƒ|d6<ˆjd t	ƒr
	ˆjd#t	ƒr
	|jtjKd7ƒ|jtjKd8ƒn|jƒ||_ttƒ|jL|ˆd9ˆjd:ƒƒˆdr_	ˆjMƒ}nd}|jNˆ||ƒ\}}|d5d;krî	ˆjd<dGdHgƒ}x¯|D]8}|d5|d*kr¯	|d5|dkr¯	t}Pq¯	q¯	Wq]
t}|d?d@kr]
ˆdjOdAdBƒ}tdC|ƒy%tPjQˆd|ƒ|jR|ƒWqZ
qZ
Xq]
nˆrp
ˆjƒnWnRtjDk
r®
}|d*t|dƒf|dD<tFƒntk
rÅ
tFƒnXttƒtdE||fƒˆjdFt	ƒrtS||ƒ}n||fS(INs=It is not allowed to call getURLRequestData from main thread.s>You should never perform block I/O operations in the __init__.s\sRÞi(sWrong usage!treturn_datatcheck_first_bytest
max_data_sizeiÿÿÿÿcs×d|krdˆkr‰|dkrGdˆkr4dSˆjddƒq‰|jdƒr‰|jddƒd	dd!dkr‰tˆd<q‰ndS|jddƒ\}}|jƒ}|jƒ}|jƒ}|ˆ|<dS(NRÆis
s
tnsHTTP/s 30iiÿÿÿÿt1t2t3t7(s
s
(R3R4R5R6(tpopRBR]RÈRntstripRì(t
headerLineRþRS(tmaxDataSizetresponseHeaders(sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pyt_headerFunction0s2cs'ˆj|ƒˆˆjƒkr#dSdS(Ni(R'ttell(ttoWriteData(tbufferR:(sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pyt_breakConnectionCs
cs‡ˆdrtˆd<dˆkrjˆdˆjddƒjddƒdkrjtdˆjddƒƒdSdˆkrˆjddƒjddƒd	}yYt}x(ˆdD]}||kr¬t}Pq¬q¬W|sðtd
ˆjddƒƒdSWqtk
rtƒdSXqntˆƒrƈj|ƒd}t}ˆj
ƒ}x^ˆD]V}t|ƒt|ƒkr‰|j|ƒr¡t}ˆ2Pq¡qK|j|ƒrKt}qKqKW|sÆtdt|ƒƒdSnˆdkr]dtˆƒkr]yZˆj
ƒdkr!ˆj
ƒdkr!ˆjˆj
ƒƒn|dkr=ˆj|ƒnWq]tk
rYtƒdSXn|dkrƒˆdrƒˆj|ƒndS(
Nitcheck_maintypescontent-typeRKRÇiswrong maintype: %stcheck_subtypesiÿÿÿÿswrong type: %sswrong body: %sR/(RlRšRÈRRnRÚRR\R'RBR)R]RR=(R>tcontentSubTypetvalidtsubTypeRSttoCheck(R?tcheckFromFirstBytestfileHandlertfirstAttempttparamsR;(sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pyt
_bodyFunctionHs^

,"



$
cSstƒrtdƒtSdS(Ns>> _terminateFunction(RRRn(t
download_tt
download_dtupload_ttupload_d((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pyt_terminateFunction„s	
ttimeoutthostR±s
User-Agents)pCommon - getPageWithPyCurl() -> params: s*pCommon - getPageWithPyCurl() -> headers: tsave_to_fileR%tuse_new_sessiontuse_fresh_connectis
user-agentRtreferers%s: %sRKtssl_protocolt
use_cookieRötload_cookietsave_cookietcookie_itemsscookie_item[%s=%s]s%s=%s; i
tno_redirectioniis"/etc/ssl/certs/ca-certificates.crtRµsgetPageWithPyCurl USE PROXYR³s
pageUrl: [%s]s,pCommon - getPageWithPyCurl() -> post data: t
raw_post_datatmultipart_post_datas!multipart_post_data NOT SUPPORTEDRºtstatus_codet
size_downloadtFLUSHtALLtcollectAllHeaderstcollect_all_headersiÈtignore_http_code_rangesi”iôscontent-types
image/webps.jpgs.webps"Change extension of webp image: %stpycurl_errors>pCommon - getPageWithPyCurl() return -> 
sts: %s
metadata: %s
t
with_metadata(i”i”(iôiô(TRRßRRâRMRÚRnR¹RBRlRRštHOSTtHEADERRRDR‘RRØRàtCurlR(tresettsetoptt
FRESH_CONNECTRìt	USERAGENTtCOOKIEtREFERERRLR\t
HTTPHEADERtACCEPT_ENCODINGtgetPyCurlSSLProtocolVersiont
SSLVERSIONtkeyst
COOKIEFILEt	COOKIEJARtCONNECTTIMEOUTtLOW_SPEED_TIMEtLOW_SPEED_LIMITtFOLLOWLOCATIONtUNRESTRICTED_AUTHt	MAXREDIRSRtSSL_VERIFYHOSTtSSL_VERIFYPEERtPROXY_SSL_VERIFYPEERtCAINFOtPROXY_CAINFORÖRÕtPROXYRÁR.t
quote_plustURLt
POSTFIELDStHTTPPOSTt	urlencodetHEADERFUNCTIONt
WRITEFUNCTIONt	WRITEDATAt
NOPROGRESStPROGRESSFUNCTIONtNOSIGNALRtperformRÞt
E_WRITE_ERRORRtgetinfot
EFFECTIVE_URLt	HTTP_CODEt
SIZE_DOWNLOADt
COOKIELISTtfillHeaderItemsR)t
handleCharsettreplacetostrenametconvertWebpR(R3RºRJt	post_datatmsg1tmsg2tmetadatatout_dataRíR<R@RKRPRQRRR7RØt
customHeadersRRtlKeytsslProtoVert
cookiesStrt	cookieKeyRµtpageUrlR³tdataPosttetignoreCodeRangestignoreCodeRangetnew_name((R?RGRHRIR:RJR;sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pyt_getPageWithPyCurls`	%
				<	
	



		
		

0
 "%		


		
$
	


(



c	Cs7|jdkrt}nt}td}}yçd}d}xõ||kr1|d7}|j|||ƒ\}}|r-d|jkr-tj|jddkr-d|jddksÌd|jddkrëtdƒ|r*t}q=q*q-d|jddkr-d	|kr-t	|ƒ}d
|d	<q=q-nPq=W|rd|jkr|jddtjkrƒ|j
d||jddƒq|jddtjtjtj
tjgkrÓ|j
d||jddƒq|jddtjkr|j
d||jddƒqnWntk
r,tƒnX||fS(
NiiiRfsSSL_set_session faileds-308s8pCommon - getPageWithPyCurl() - retry with fresh sessions-313RWtTLSv1_2totherRÝ(RØRBRnRlR¬R¹RàtE_SSL_CONNECT_ERRORRR«RætE_SSL_CACERTtE_SSL_ISSUER_ERRORtE_SSL_PEER_CERTIFICATEtE_SSL_CACERT_BADFILEtE_SSL_INVALIDCERTSTATUSRÚR(	R3RºRJRœt
sessionReusedRíR tmaxTriesttries((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pytgetPageWithPyCurl_sB	

.
	#
	!!(
c
Csddddg}|r-ddddg}n|}xCtt|ƒƒD]/}|||krF||||||<qFqFW|rd	|krç|d	}|jd
ƒ}	x@|	D]5}
|
jƒ}
|
|kr«||
||
jƒ<q«q«Wnx1|jƒD] \}}||||jƒ<qôWndS(Nscontent-typescontent-dispositionscontent-lengthtlocationsContent-TypesContent-DispositionsContent-LengthtLocationsAccess-Control-Allow-Headerst,(RÏR\RÈR8RìRÎ(
R3RŸR;t	camelCaseRct
returnKeyst
sourceKeysR`tacaht	acah_keysRRR±RS((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pyR–ˆs"

cCs
|jdtƒr1|jƒr1|j|||ƒSy?||d<d|krWt|d<n|j||ƒ}t}Wndtjk
r±}ytƒt}|}|jdtƒr’i|_	|j	}|j
jƒ|d<|j|d<|j
||j
jƒtd|jdƒƒ|j
j|jddƒƒ}|j
jƒjdd	ƒd
krXt|ƒ}n|j|||ƒ\}}t||ƒ}|j
jƒnWq×tk
r­tƒq×Xn&tjk
r³}tƒt|ƒ}	d|kr2d|	kr2y-t|ƒ}
d
|
d<|j||
|ƒSWq2tk
r.q2Xnd|	krT|jd||	ƒnPd|	krv|jd||	ƒn.d|	ksŽd|	kr¤|jd||	ƒnd}t}n$tk
rÖtƒd}t}nX|dr|rt|tƒrt}n||fS(s wraps getURLRequestData R/RºR_RcRdR1iÿÿÿÿsContent-EncodingRKRRWtTLSV1_ALERT_PROTOCOL_VERSIONR­tVERSIONRt
VERIFY_FAILEDRÝtSSLsunknown url type: httpsR®N(RšRnRèR¸tgetURLRequestDataRUt	HTTPErrorRRlR¹R5tgeturlR2R–tinfoRR#R—RR(RÚtURLErrorRDR«RêRæRBR¸t
basestring(R3Rºt	addParamsRœtresponseR1R¨RŸR terrorMsgt	newParams((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pyRê§sh


		
+!


	

 	cKsz|jdiƒ‰‡‡fd†}‡fd†}d}|}i|d6ˆjddƒd6dd6}|j|jd	iƒƒ|jitd
6td6td6td
6ˆjddƒd6|d	6ƒˆj|||ƒ\}	}
d}xŠ|dkro|	rkd|
krktjƒ}|d7}td|ƒt}
yˆj|
j	dƒ}|
}d|krjd|krjPnˆj
j|dƒd}ˆj
j|dƒd}|dkr¡ˆj
j|dƒdr}tdƒtj
d|tjƒ}|sïwæn|d}ddlm}|dtƒd|ƒ}|j||tƒ|ƒ}|dkrRtdfStj
d|ƒd}tj
d|ƒd}tj
d|ƒd}tj
d |ƒd}ttj
d!|ƒƒ}||d"<||d#<||d$<td%ƒtt|ƒƒ|||ƒ}itd6td
6td6td&6td'6|ddd6}i|d6d(d)6d*d6d+d,6d-d6|d	<t|ƒ}nÔtd.ƒdd/lm}|dtƒƒ}||jd<dˆjddƒkrâˆd|jd<n|j|ƒ}|dkrtdfSˆj
j|d0d1d2tƒ\}	}|	s;tdfSˆj
j|dƒd}|dkrr|||ƒ}n
|
j	d}ˆj
j|d3dtƒdjƒ}ttj
d!|ƒƒ}d|krÕ||d$<nwæt|ƒ}t|d	ƒ|d	<||d	d<|d4krQd5|kr+|d67}n
|d57}|tj|ƒ7}d}nˆj|||ƒ\}	}
td7ƒt|	ƒtd8ƒt|
ƒtd9ƒnªtd:ƒd} d}!t
j
|d´d=d>dƒ}"xR|"D]J}#d?|#krd@|#kr|#} d}!PqÙdA|#krÙ|#} dB}!PqÙqÙW|!dkrmtƒjtdCƒdDdEƒˆj|||ƒ\}	}
nÞ|!dBkrâtdFƒtj
dG|
tjƒ}$|$rÄ|$d}$tdHƒt|$ƒtj
dI|
tjƒ}%|%rÄt||%dƒ}%t|%ƒˆj|%|ƒ\}	}&tdJƒtdKƒt|&ƒtdKƒd}'dL|&krp|&|&j dLƒdM dN}(d}'n0dO|&kr |&|&j dPƒdM dQ}(dB}'ntdRƒt|(ƒtdKƒi|(dS6g})t!|)ƒ}*|*dTr±g}+x(|*dTj"dUƒD]},|+j#|,ƒqþWx™t$t%|+ƒƒD]‚}-|'dkrltj&dVt'|-ƒdWdX|+|-dX|&ƒ}&q(|'dBkr(tj&dYt'|-ƒdWdX|+|-dX|&ƒ}&q(q(Wn|'dkrÕtj&dZd[|&ƒ}&n$|'dBkrùtj&d\d]|&ƒ}&n|&j(d^d_ƒ}&|&j(d`daƒ}&it)dbƒdc6g})dd}.|$de|&dU|.}/tdfƒtdKƒt|/ƒtdKƒ|)j#i|/dS6ƒt!|)ƒ}*yt*|*dTƒ}0ˆj+|0d|ƒ}1|0d	}t|ƒ}t|d	ƒ|d	<|d	j|0d	ƒ|d	jidgd)6ƒtt,|0dhj(didjƒƒƒ}2|0dk}3t|3ƒ|3j"dlƒ}4|4dj"dmƒ}5ˆj-|di|5ddn6|5ddo6|dp6ƒtdqt.|5ƒƒˆj|1|dh|2ƒ\}	}6|	rž|6j/drƒ}7ds|7dt|/}/|'dBkrKtj
du|/ƒ}8|8r>|/j(dvdw|8ddxƒ}/qKtdyƒntdzƒt|/ƒtd{ƒit)dbƒdc6g})|)j#i|/dS6ƒt!|)ƒ}*|*dTrž|*dTj/drƒ}9td|ƒt|9ƒtd}ƒ|9j(d~dUƒ}9tj&dd€|9d>tjƒ}9|9j(dd‚ƒ}9|$dU|&dU|9dU}/tdƒƒt|/ƒtd„ƒit)dbƒdc6g})|)j#i|/dS6ƒt!|)ƒ}*t|*dTƒqžnWqÁt0ƒt|*dTƒqÁXqÄnˆj|||ƒ\}	}
nid}:it)d…ƒdc6g})d};dE}<tj
d†|
ƒ}=xj|=D]b}>|>d}?t%|?ƒd‡kr#
t%|?ƒdˆkr#
|<d}<|>d}@|;d‰|?|<|@f};q#
q#
WtdŠƒt|;ƒtd‹ƒtdŒƒt| ƒtd‹ƒtj1dtjƒ}Atj&|AdŽ| ƒ} d| kr| j(ddƒ} n| j(d‘d’ƒ} | j(d“dƒ} | j(d”dƒ} | j(d•dƒ} tj1d–tjƒ}Btj&|Bd—| ƒ} | j(d˜d™ƒ} dš| krÁ| j(d›dœƒj(d|ƒ} n| j(dždœƒj(d|ƒ} tj1dŸtjƒ}Ctj&|Cd| ƒ} td ƒt| ƒtd‹ƒ|)j#id¡|;| fdS6ƒt!|)ƒ}*t|*ƒˆj
j2|dµd¶ƒd}Dtj&d£d¤|Dƒ}Dtd¥ƒt|Dƒtd¥ƒttj
d!|Dƒƒ}Ettj
d¦|Dƒƒ}Ftd§t.|Eƒƒtd¨t.|Fƒƒi}Gx1|ED])}H|Gj|Hdƒs|E|H|G|H<qqWx5|FD]-}H|Gj|F|HdƒsC|H|G|F|H<qCqCW|*dTj(dUdƒ|Gd©<|t
j3|dªƒ|ƒ}I|Ij(d«d6ƒ}Ii}Jx5|GD]-}|G||J|<|d¬krÈ|G|}qÈqÈWtd­|Iƒtd®t.|Jƒƒt|ƒ}t|d
<t|d<t|jd	iƒƒ|d	<|d	ji|d6ˆjddƒd6d¯d)6d*d6d+d,6ƒ|jd&tƒr¹|j4d&ƒntd°tjƒ|ƒ|dkrþt5ƒj6d±tjƒ|ƒnt5ƒj6d±ƒtd°tjƒ|ƒtd·ƒˆj|I||Jƒ\}	}
Wqlt7k
rgt0ƒPqlXqæPqæW|	|
fS(¸Ntcloudflare_paramscs*dˆkrˆd|ƒSˆj||ƒS(Ntfull_url_handle(RÌ(RºtbaseUrl(tcfParamsR3(sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pyt_getFullUrlêscsdˆkrˆd|ƒS|S(Ntfull_url_handle2((RºRÑ(RÒ(sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pyt_getFullUrl2ïsRKtReferers
User-AgentttextsAccept-EncodingR±RgRXRZRYtcookie_fileRöiiis"Cloudflare protection -- try n. %sRºtsitekeyt	challengesdata-sitekey="([^"]+?)"sdata-ray="([^"]+?)"s9*************** CloudFlare prompts hCaptcha *************s((<form class="challenge-form".*?</form>)iÿÿÿÿ(tUnCaptchahCaptchatlangRJsaction="([^"]+?)"s<script.*src="([^"]+?)"s3<input[^>]*name="([^"]*)"[^>]*value="([^"]*)"[^>]*>tidsh-captcha-responsesg-recaptcha-responses4--------------- post data after captcha ------------R]R/s	text/htmlR©Rs!application/x-www-form-urlencodedsContent-TypesiMozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.106 Safari/537.36s:*************** CloudFlare prompts reCaptcha *************(tUnCaptchaReCaptchas<forms</form>Rzsmethod="([^"]+?)"Ršt?t&s
+++++++++++++s
-------------s++++++++++++++sC*************** CloudFlare: Searching javascript code *************s<scriptt>s	</script>R{t
setTimeoutssubmit()swindow._cf_chl_optis!New javascript not yet supported!RÈisChallenge type 2s(window._cf_chl_opt=\{.*?\};)s(-------------- data_input---------------scpo.src\s?=\s?"([^"]+?)"s"-------------  jsCode  -----------s"----------------------------------s
e=c[a],e},i	s8; for(var i=0; i<c.length; i++){ console.log(d(i));}}();s
e=a[c],e},s	e=a[c],e}s8; for(var i=0; i<a.length; i++){ console.log(b(i));}}();s%----- 1st duktape - only strings-----R2R s
sd\('s'\)t'sb\('s1([fg])=function\(h,i\)\{.*?\},([fg])\(function\(hs)PIPPO1=function(h,i){ },PIPPO1(function(hs>([defgh])=function\s[defgh]\(i\)\{.*?\},([defgh])\(function\(isBPIPPO1 = function(i){window['_cf_chl_enter']()}, PIPPO1(function(is
c=this||self,s	c=window,snew c[('XMLHttpRequest')]()swindow['XMLHttpRequest']scf_new_max.byteRs
                                    LZString = window['LZString'];
                                    window['JSON'] = JSON;
                                    _ = window['_'];

                                    window._cf_chl_enter();
                                    s

s"------ 1st duktape - all code ----s*/*Rœt t+Rt;t=RþRSRÄsnew cookie: sunicode-escapes*window['XMLHttpRequest']['responseText']="s";
showPost=false;
s([defgh]+?)=function\([ij]\)\{s}()
s
str = sB(window['XMLHttpRequest']['responseText']);
console.log(str);
}()
sfunction name letter not found!s8----- code 2nd duktape ---with responseText from POST---s4----------------------------------------------------s----------- jsCode2 -----------s-------------------------------s\ns(const\s?\{(.*?)\}\s?=\s?([a-z0-9\(\)]+?)sconst \2 = {\1}swindow._=function(){};s)window._=function(){};
n_ = window['_'];
s8--------  code 3rd duktape - with new code from POST ---s(----------------------------------------scf_max.bytes<div.*?id="([^"]+)">(.*?)</div>iis_
document.children.push ( new element('', '%s', 'div')); document.children[%d].innerHTML ='%s';s)--------------- code 2 ------------------s)-----------------------------------------sA-------------- dat prima delle sostituzioni----------------------s"\(function\(\)\{.*?b\(function\(\)sfunction pippo()sreturn  f.submit();s!print(a.value); return (a.value);s
f.submit()sprint(a.value);ssetTimeout(function(){s;var cookiesEnabled=(navigator.cookieEnabled)? true : false;s<var cookieSupportInfix=cookiesEnabled?'/nocookie':'/cookie';s\},4000\);.*?\)\(\)t}s?r = (setInterval(function(){}, 100),t.match(/https?:\/\//)[0]);sr = t.match(/https?:\/\//)[0];tcposÁt = document.createElement('div');
        cpo = {};
        t.innerHTML="<a href='/'>x</a>";
        cpo.src = "/cdn-cgi/challenge-platform/orchestrate/jsch/v1";
        t = t.firstChild.href;s
t="%domain%";s%domain%sjt = document.createElement('div');
        t.innerHTML="<a href='/'>x</a>";
        t = t.firstChild.href;s&var a = document.*?appendChild\(.*?\);s=-------------- dat dopo le sostituzioni----------------------s%s
%s

pippo(); s</forms
<!--.*?-->s<!-- -->s!--------challenge form-----------s3<input[^>]*value="([^"]*)"[^>]*name="([^"]*)"[^>]*>sget_data_1: %ssget_data_2: %stjschl_answertactions&amp;trsCF verification url: %ssCF post data: %ss/text/html,application/xhtml+xml,application/xmlsTime spent: [%s]is
Timeout: [%s]i (s<scriptRá(s<formRáRÚ(s</formRásTimeout: [4000](8RštupdateRnRêRBttimeRRlRÅR¹RRjtreR}tSt+Plugins.Extensions.IPTVPlayer.libs.hcaptchaRÛRtprocessCaptchaR«Rt/Plugins.Extensions.IPTVPlayer.libs.recaptcha_v2RÞR®R|RìR.RˆRRâRßRRwRRÈRLRÏR\tsubthexR˜RRëRÌRR*RDR›RtcompileR‰tgetattrR7RtSleepRÚ(KR3RÑRJRœRÓRÕRìRºR±RíR tcurrentt
start_timet	doRefreshRÄtverDataRÙRÝtchallenge_formRÛthcaptchattokenRëRRtdatarayt	scriptUrlt
post_data2tparams2RÞt	recaptchattmpt
actionTypeRZt
challengeTypetdatasR t
data_inputtjsch_urltjsCodetcodeTypetjsCode1t	js_paramsR-twordsRtitfinaleR2tjsonPostDatatpostUrlR¾Rtc2R)tresponseTexttstring2tfunctionLettertjsCode2tdecodedtcode2tnumChildrentdivstttname_idtvalue_idRgRptpattern3tformTagt
get_data_1t
get_data_2RAtxxtverUrlt
postDataCF((RÒR3sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pytgetPageCFProtectionçsT'C










$

%


	















		



29




"

1!










	

$







!











@!

cCstd|ƒ|jddƒ}|jddƒ}tdƒr™|rcd||||||f}nd||||f}td|ƒt|ƒ|_ndS(	NsPCommon.convertWebp %ss.webps.jpgs.pngtffmpegs2ffmpeg -i %s %s && test -e %s && rm %s && mv %s %ss'ffmpeg -i %s %s && test -e %s && rm %s sSend command %s(RR˜RR
tcmd(R3R’tpngtoutput_pathtpng_pathtcommand((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pyR›Ûsc	Cs±t}d}t|d<||d<d|krB|jdƒ|d<nd|krd|jdƒ|d<n|j|||ƒ\}}|r•|jd}n
t|ƒi|d	6|d
6S(NiRgRStmaintypeRAtsubtypesRBR`Rítfsize(RlRnR7R¸R¹R	(	R3R’Rºt
add_paramsRœRçtdownDataSizeRíR ((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pytsaveWebFileWithPyCurlés


cCst|ƒ}|j|ƒ\}}|j|ƒd|krmd|krmd}i|d6dd6}||d<nt|d<|jƒr™|j||||ƒSt}	d}
i}y0|j|||ƒ\}}
|jd	tƒr|
jƒ}t	|j
d
ƒdƒ}nd}|jdgƒ}t}d|kr‰|d|
j
jkr‰td
|d|
j
jfƒdt|ƒkr€|
jƒnt}n|rÕd|krÕt}x1|dD]"}||
j
jkr¬t}Pq¬q¬Wn|sçt|ƒrÚ|jddƒ}d}x2tr3|
j|ƒ}t|ƒrÜt}x|D]•}|j|ƒr0|d#kr^tdƒn]|dkrwtdƒnD|d$krtdƒn+|dkr»tdƒ|jddƒ}nt}Pq0q0W|sÓPqÜg}n|sæPn|
t|ƒ7}
t|ƒr|dkr t|dƒ}n|j|ƒqqW|dkrM|jƒn|
jƒd|kr{||
krt}	qn|
dkrt}	n|jdƒrÚ|jdtƒrÇ|j|dtƒq×|j|ƒqÚnWntk
røtd ƒnX|ji|	d!6|
d"6ƒ|S(%NR±RRshMozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36s
User-Agents?text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8R©R/itignore_content_lengthsContent-LengthR0R.s;common.getFile wrong maintype! requested[%r], retrieved[%r]R/t
block_sizei sÿØsÿÙsSaveWebFile. It's a jpegs‰PNGsSaveWebFile. It's a pngtGIF87atGIF89asSaveWebFile. It's a giftRIsSaveWebFile. It's a webps.jpgs.webpR%twebp_convert_to_pngR*s&common.getFile download file exceptionRíR0(sÿØsÿÙ(R6R7(R«R¿RíRlRèR3RêRšRÈtintt
getheadersRBRnR7R.RR\R(tsubtypeRR]R˜R‘R'tendswithR›RÚR(R3R’RºRËRœR¼R¾RRR±RçR2tdictRetRítdownHandlerR¹t
contentLengthRGtOKR t	blockSizeRHR?((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pytsaveWebFileûsœ


"
		




	

	
cCsSt|tƒs)tƒjdddƒ|S|dkr<tjS|dkrOtjSdS(NsWgetUrllibSSLProtocolVersion error. Please report this problem to iptvplayere2@gmail.comRÞi(R­tTLSv1_1(R¸RÊRRâtssltPROTOCOL_TLSv1_2tPROTOCOL_TLSv1_1RB(R3tprotocolName((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pytgetUrllibSSLProtocolVersion`scCsSt|tƒs)tƒjdddƒ|S|dkr<tjS|dkrOtjSdS(NsWgetPyCurlSSLProtocolVersion error. Please report this problem to iptvplayere2@gmail.comRÞi(R­RD(R¸RÊRRâRàtSSLVERSION_TLSv1_2tSSLVERSION_TLSv1_1RB(R3RH((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pyRsjsc$Cs(
d„}tƒr^tdƒ}tdƒ}tƒjdj||gƒddƒtdƒ‚nd|krŒ|jd	tƒrŒtd
ƒ‚ntj	ƒ}d}d}d}	d}
i|_|j}|jddƒ}d|krí|d}
n	|j}
d
|kr|d
}n(d|j
kr*|j
}n
i|
d6}d|krP|
|d<ntdt|ƒƒtdt|ƒƒg}d|kr»d|kr»d|ks®d|kr»t|d<n|jdtƒr?|jdtƒr:y|j|ddtƒWq:tk
rtd|dƒq:tk
r6tƒq:XnyÑxÊ|jdiƒjƒD]°}td||d|fƒtjddd|d|d|dddtdd d!td"td#d$d%td&td'dd(td)dd*dd+idd,6d-tƒ}|j|ƒqVWWntk
r%tƒnX|jtj|ƒƒn|jd.tƒrd|jtƒƒnd|jd/dƒkr’|j|d/ƒ}nd}tƒsÿyG|dkrÂtj|ƒ}ntjƒ}|jtjd0|ƒƒWq6tk
rûq6Xn7|dkr6tj |ƒ}|jtjd0|ƒƒn|j!rK|j"}nd }d1|krj|d1}nd |kr½td2ƒ|jtj#i|d36ƒƒ|jtj#i|d46ƒƒn|d5}|jd6d ƒ}|d kr|j$t%j&|d ƒƒ}ntd7|ƒd|kržtd8t|ƒƒ|jd9tƒrL|}n:|jd:tƒrw|jt'ƒƒ|}nt%j(|ƒ}tj)|||ƒ}ntj)|d|ƒ}|jd	tƒsÚ||||ƒ}	n”t}y¿||||ƒ}|j*ƒjd;ƒd<krt}nyL|j+ƒ|d5<|j,ƒ|d=<|j-||j*ƒtd>|jd?ƒƒWntk
rxnX|j.|jdd@ƒƒ}|j/ƒWn#tj0k
rÄ}|jdAdSdTgƒ}t}|j1|d=<x>|D]6}|j1|dkræ|j1|dDkræt}PqæqæW|rØtdE|j1ƒ|j2j*ƒjd;d ƒd<krat}nyB|j2j+ƒ|d5<|j-||j2j*ƒtd>|jd?ƒƒWntk
r¶nX|j2j.|jdd@ƒƒ}qÅ|j1dFkrE|jdtƒr<|j2j*ƒjdGd ƒ}tdH|ƒ|j3|ddtƒn|‚qÅ|j1dUkr»|jdtƒr»|jdtƒr»|j2j*ƒjdGd ƒ}tdH|ƒ|j3|ddtƒn|‚nXy)|rçtdMƒt4|ƒ}	n|}	Wn}tk
rm	}tƒ|jdd@ƒd@krd	tdNƒ}tdOt|ƒƒ}tƒjdP||fddQƒn|}	nX|jdtƒrÓ	|jdtƒrÓ	y|j3|ddtƒWqÓ	tk
rÏ	}tƒ|‚qÓ	Xn|j5||	|ƒ\}	}|jdRtƒr$
|jd	tƒr$
t6|	|ƒ}	n|	S(VNcSsŽt|ƒdkrWtj|Œ}|dkrE|j|d|ƒ}qŠ|j|ƒ}n3|dkr{tj|d|ƒ}ntj|ƒ}|S(NiRQ(R\RUtbuild_openerRBRturlopen(R4t
customOpenersRQtopenerRÌ((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pyturlOpenvss=It is not allowed to call getURLRequestData from main thread.s>You should never perform block I/O operations in the __init__.s\sRÞi(sWrong usage!R1R/sreturn_data == False is not accepted with max_data_size.
Please also note that return_data == False is deprecated and not supported with PyCurl HTTP backend!RQRRR±s
User-Agents)pCommon - getURLRequestData() -> params: s*pCommon - getURLRequestData() -> headers: RXRöRYRZRðsCookie file [%s] not existsR[scookie_item[%s=%s]RiRþRSRRRÄRKRRRRÇRRR
RRRRRRR\RWtcontextRµsgetURLRequestData USE PROXYRthttpsRºR³s
pageUrl: [%s]s,pCommon - getURLRequestData() -> post data: R]R^sContent-EncodingRR_RcRdiÿÿÿÿRei”iôis(!!!!!!!! %s: getURLRequestData - handledi÷s
Set-Cookies> new_cookie[%s]i,i.i/i3sContent-Encoding == gzips;Critical Error – Content-Encoding gzip cannot be handled!sLast error:
%ss%s

%siRg(i”i”(iôiô(i,i.i/i3(7RRßRRâRMRÚRšRlRòRóRBR¹RhRiRRDRnRýtIOErrorRRuRRRLRUtHTTPCookieProcessorR-RIRREt_create_unverified_contexttHTTPSHandlert
SSLContextRÖRÕtProxyHandlerRÁR.R„R@RˆtRequestRÈRÇtgetcodeR–RR(RÆR2R5RR#R—R(R3RJRœRPRRžRùRÌR4R RORŸRQRRR7RNR¥t
cookieItemR£tctxRµR¦R³R§t
gzip_encodingR R¨R©t
ignoreCodeRªt
new_cookie((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pyRÅts2		%		
	


0



	
	

 
			,


&!	/
!	3


#
$
$cCs]y8|jdtƒr7|jdtƒr7d}d|krk|jj|dddtƒdjƒjƒ}n|dkrÖ|jdtƒrÖ|jj|d	d
tƒd}|jj|ddtƒdjƒjƒ}n|dkr7td|ƒy|j|ƒj	dƒ}Wnt
k
r&tƒnX||d
<q7nWnt
k
rRtƒnX||fS(NR/tconvert_charsetRKscontent-typescharset=([A-Za-z0-9\-]+)iitsearch_charsets (<meta[^>]+?Content-Type[^>]+?>)RisUTF-8s>> encoding[%s]torig_charset(RKsUTF-8(RšRlRnRRjR8tupperRR–R›RÚR(R3RJR RŸtencoding((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pyR—Bs$$2.

cCstjdd„|ƒS(Ns[€-ÿ]cSsdt|jdƒƒS(Ns%%%02xi(R™tgroup(R)((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pyt<lambda>Xs(RïRô(R3tb((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pyturlEncodeNonAsciiWscCsÍy®t|jdƒƒ}g}x‚t|ƒD]t\}}|}y:|dkr^|jdƒ}n|j|jdƒƒ}Wntk
r‘tƒnX|j|ƒq+Wt|ƒSWntk
rÈtƒnX|S(Nsutf-8itidna(	RR–t	enumerateR›RhRÚRRLR(R3tiritpartstencodedPartstpartitparttnewPart((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pytiriToUriZs 

s0 - 9cCsCt|ƒ}x0tddƒD]}|jtt|ƒƒƒqW|S(NiAi[(R[RÏRLRDtunichr(R3ttabtstrTabR((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pytmakeABCListks(*R:R;RhRBRiRYRR¥R¯R¿RlRÅRÌRÍRÔRnRÜRæRèRîRüRR	R
RR*R.R¬R¸R–RêR'R›R3RCRIRsRÅR—RhRqRu(((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pyR¦ësR		
	
?
ÿG)@ÿõe	
	
Î			(((<t7Plugins.Extensions.IPTVPlayer.components.iptvplayerinitRRßRRt-Plugins.Extensions.IPTVPlayer.tools.iptvtypesRt-Plugins.Extensions.IPTVPlayer.tools.iptvtoolsRRRRRR	R
RRR
t2Plugins.Extensions.IPTVPlayer.components.asynccallRRRt)Plugins.Extensions.IPTVPlayer.tools.e2ijsRt"Plugins.Extensions.IPTVPlayer.libsRt*Plugins.Extensions.IPTVPlayer.libs.e2ijsonRRëRRR.RUtbase64RERÚRïRîRòR—Ràt	cStringIORRRRRRRtbinasciiRR™R#R,tHTTPRedirectHandlerR-tBaseHandlerR@RYR¦(((sE/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/libs/pCommon.pyt<module>sLF



(			‘