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@sddlmZmZddlmZmZddlmZddl	m
Z
mZmZm
Z
mZmZmZmZddlmZddlmZddlmZddlmZmZdd	lZdd	lZdd
lm Z ydd	l!Z!Wne"k
rdd	l#Z!nXddl$m%Z%m&Z&m'Z'm(Z(m)Z)e(dd
de*ƒe%j+j,_-e(dd
de*ƒe%j+j,_.e'de/ƒe%j+j,_0e&dd
dd
edƒfddfddfgƒe%j+j,_1d„Z2d„Z3deefd„ƒYZ4defd„ƒYZ5d	S(iÿÿÿÿ(tTranslateTXTtSetIPTVPlayerLastHostError(t	CHostBasetCBaseHostClass(t
CaptchaHelper(tprintDBGtprintExctbyteifytrmtGetPluginDirtGetCacheSubDirtReadTextFilet
WriteTextFile(tstrwithmeta(tAES_CBC(tph(tloadstdumpsN(t	unhexlify(tconfigtConfigSelectiontConfigYesNot
ConfigTexttgetConfigListEntrytdefaulttt
fixed_sizetchoicestNones9kw.eushttps://9kw.eu/s2captcha.comshttp://2captcha.com/cCsÜg}|jttdƒtjjjƒƒ|jttdƒtjjjƒƒtjjjjdkr”|jttdƒdtjjj	ƒƒnDtjjjjdkrØ|jttdƒdtjjj
ƒƒn|S(NsUse links cachesCaptcha solving services9kw.eus
%s API KEYs    s2captcha.com(tappendRt_Rtpluginst
iptvplayertbsto_linkcachetbsto_bypassrecaptchatvaluet
api_key_9kweutapi_key_2captcha(t
optionList((sG/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hostbsto.pyt
GetConfigList's%%,,cCsdS(Nshttps://bs.to/((((sG/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hostbsto.pytgettytul3stBSTOcBs§eZiZd„Zidd„Zd„Zd„Zd„Zd„Z	d„Z
d„Zd„Ze
d	„Zd
„Zd„Zd„Zd
„Zdddd„ZRS(cCsätj|idd6dd6ƒd|_i|jd6dd6d	d
6|_t|jƒ|_|jjidd6ƒd
|_d|_	g|_
i|_i|_it
d6|jd6t
d6t
d6t
d6|jd6|_d|_dS(Nsbs.tothistorysbsto.cookietcookiesHMozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0s
User-Agentt1tDNTs	text/htmltAccepttXMLHttpRequestsX-Requested-Withshttps://bs.to/opengraph.jpgt
with_metadatatheadert
use_cookietload_cookietsave_cookiet
cookiefile(Rt__init__t
USER_AGENTtHEADERtdicttAJAX_HEADERtupdatetDEFAULT_ICON_URLRtMAIN_URLtcacheSeriestcacheGenrest
cacheLinkstTruetCOOKIE_FILEt
defaultParamst_getHeaders(tself((sG/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hostbsto.pyR68s	!					9cCsR|ikrt|jƒ}ni|jd6|jd6|d<|jj|||ƒS(Ntcookie_files
User-Agenttcloudflare_params(R9RCRBR7tcmtgetPageCFProtection(REtbaseUrlt	addParamst	post_data((sG/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hostbsto.pytgetPageGscCstj||ƒS(N(RtgetFullIconUrl(REturl((sG/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hostbsto.pyRNNscCs™d|_idd6tdƒd6|jdƒd6idd6tdƒd6|jd	ƒd6id
d6tdƒd6td6id
d6tdƒd6g|_dS(Nshttps://bs.to/tlist_genrestcategorytGenresttitles/serie-genreROtAlphabets/serie-alphabettsearchtSearchtsearch_itemtsearch_historysSearch history(R=Rt
getFullUrlRAtMAIN_CAT_TAB(RE((sG/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hostbsto.pytselectDomainQs
	''cCsŽtdƒi|_|j|dƒ\}}|s6dS|jjj|ddtƒ}x3|D]+}|j|jjj|ddtƒdƒ}|jjj|dd	tƒ}g|j|<x˜|D]}|j	|jjj
|d
ƒdƒ}|j|ƒ}	|	dkr,|j|jjj
|d
ƒdƒ}	n|j|ji|	d6|d6ƒq¾Wt|ƒ}
|
j
i|d6|d6ƒ|j|
ƒq[WdS(NsBSTO.listGenresROs<div class="genre">s</ul>s<strong>s	</strong>is<li>s</li>shref=['"]([^'^"]+?)['"]iRstitle=['"]([^'^"]+?)['"]RSRQ(RR?RMRHRtgetAllItemsBeetwenMarkerstFalsetcleanHtmlStrtgetDataBeetwenMarkersRYtgetSearchGroupsRR9R;taddDir(REtcItemtnextCategorytststdatat	genreItemt
genreTitletitemRORStparams((sG/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hostbsto.pyt
listGenresYs&
	
+

%(&cCsˆtdƒ|jj|dgƒ}x^|D]V}t|ƒ}|j|ƒ|jitd6|d6|ddd6ƒ|j|ƒq*WdS(NsBSTO.listItemsRStgood_for_favRQROs?fake=need_resolve.jpegticon(RR?tgetR9R;RARa(RERbRcttabRhRi((sG/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hostbsto.pyt	listItemsns


*cCsÊtdƒ|j|dƒ\}}|s-dS|jjj|ddtƒd}|j|jjj|ddƒdƒ}|j|jjj|dƒd	ƒ}|jjj|d
dƒd}|j|jjj|dd
tƒdƒ}t|ƒtj	|ddƒ}	x¾|	D]¶}
|j
|jjj|
dƒd	ƒ}|j|
ƒ}t|ƒ}
|
jitd6|d6d||fd6|d6|dd6|d6|d6|d6ƒtt
|
ƒƒ|j|
ƒqWdS(NsBSTO.listSeasonsROs<div id="sp_left">s<scriptis<ps</p>ssrc=['"]([^'^"]+?)['"]is<div class="seasons">s</ul>s<strong>s	</strong>s<lit>s</li>shref=['"]([^'^"]+?)['"]RkRQs%s %sRSts_numtseries_titleRltdesc(s<liRp(RRMRHRR_R]R^RNR`tfindallRYR9R;tstrRa(RERbRcRdRetdescDataRsRltseasonLabeltitemsRhRORSRi((sG/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hostbsto.pytlistSeasonsws$
"(%+

%Sc	Csätdƒi|_|d}|j|dƒ\}}|s@dS|jjj|ddƒd}tj|d$d	ƒ}xi|D]a}tj|d%dƒ}t|ƒdkr®q{n|j|jjj	|d
dƒd
ƒ}|j
|d
ƒ}|j
|jjj|dddtƒdƒ}	|j
|jjj|dddtƒdƒ}
d|jdƒ|jdƒf}g|j|<|dd|d|	}|
dkr®|d|
7}n|jjj
|dddƒ}x |D]˜}
|j
|
ƒ}|j|jjj	|
dƒd
ƒ}|dkr3|jddƒd}n|j|ji|d6t|i|d6ƒd6dd 6ƒqÔWt|j|ƒr{t|ƒ}|jitd!6|d"6|d6|d6ƒtd#t|ƒƒ|j|ƒq{q{WdS(&NsBSTO.listEpisodesRqROs<table class="episodes">s</table>is<trRps</tr>s<tds</td>iishref=['"]([^'^"]+?)['"]s<strong>s	</strong>s<i>s</i>ss%se%siRrs, t Rs (%s)s<as</a>t/iÿÿÿÿtnamet	links_keytneed_resolveRkRSs--->(s<trRp(s<tdRp(RR@RMRHRR_RttlenRYR`R^R]tzfillR\trsplitRR
R9R;RutaddVideo(RERbtsNumRdReRxRhROteNumttitle1ttitle2tkeyRStlinkR|Ri((sG/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hostbsto.pytlistEpisodessB
	

)//"

%=)cCs„td|||fƒt|jƒdkr4|jdƒ}|j|ƒ\}}|sZgS|jjj|ddtƒd}|jjj	|ddtƒ}x—|D]Œ}|j|jjj
|d	ƒdƒ}|j|ƒ}|d
kr|j|jjj
|dƒdƒ}n|jji|d6|d
6ƒq¡Wng}	dj
|jƒjƒƒ}
|
jdƒ}
xŽtt|jƒƒD]w}|j|djƒ}d}x'|
D]}
|
|kr¤|d7}q¤q¤W|dkrz|	ji|d6|d6ƒqzqzW|	jdd„dtƒxo|	D]g}|j|d}t|ƒ}|j|ƒ|jitd6dd6|d
dd6ƒ|j|ƒqWdS(NsABSTO.listSearchResult cItem[%s], searchPattern[%s] searchType[%s]is
andere-seriens<div id="seriesContainer"s<scriptis<li>s</li>shref=['"]([^'^"]+?)['"]Rstitle=['"]([^'^"]+?)['"]RSRORztidxtscoreR‡cSs|dS(NR‹((tk((sG/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hostbsto.pyt<lambda>ÐstreverseRktlist_seasonsRQs?fake=need_resolve.jpegRl(RRR>RYRMRHRR_R]R\R`R^RtjointlowertsplittrangetsortRAR9R;Ra(RERbt
searchPatternt
searchTypeRORdReRhRSt
searchResultstwordsRŠR‹twordRi((sG/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hostbsto.pytlistSearchResult´s@"
%(%
"

*cCs3td|ƒ|jddƒ}|jj|gƒS(NsBSTO.getLinksForVideo [%s]R}R(RRmR@(RERbtforEpisodesR‡((sG/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hostbsto.pytgetLinksForVideoØscCsLd„}d}||ddƒ\}}td|ddƒ}|j||ƒS(NcSscd}}x=t|ƒ||krItj||ƒjƒ}||7}q
W|| ||||!fS(NR(Rthashlibtmd5tdigest(tpasswordt
key_lengtht	iv_lengthtdtd_i((sG/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hostbsto.pytderive_key_and_ivÞs

ii R‡tkeySize(Rtdecrypt(REt	encryptedR R¥tbsR‡tivtcipher((sG/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hostbsto.pyt_cryptoJS_AES_decryptÝs
	cBsoi}|jdkr+yøddl}d}|je|ƒdjeƒjdƒdƒƒ}ej	|jdƒdƒj
ddƒ}e|ddƒ}idd6ed	6e
d
6ed6ed6ed
6ed6|d6ed6ed6ed6}idd6}|||U|d|_Wq+ek
r'eƒq+Xn|jdkrky|j|ƒ}Wqkek
rgeƒqkXn|S(Niÿÿÿÿt 89aac45129123590486772c958b0efc9074993ad1ffddc7fecfec3755806ca1d51a76813a3fbf891ee09081e10ea4f74681823b1443295b8b4ee2f14d8f209194fe5db528cbbf29117101f346dc7b4dd1474dff6face052de50948157720f1fd9d162c4068f329ca732336edd335ae93e29d3515f32b9c1963255b979da52f52bede1bfa1f505581bd8a92a4d43ce162ebe4efe19303d3a3b141305610bfe8257fa70af3c548003c3b5a216e2e5204566e2bf8fb2471468c016a74fcdbaa3926ad203810d120c5997014717abb01e7036bea34a336384d25bd3d7807d7f4e8efe3ee2393044dddca3b6e48d364b61135e1b71582b81578d394946c18f2a8e2c40a07c6ecd6bcce821876bfd0ca302aa33aef190ad5bcd2dd11caf38c7bf651d4dc96d34abd5781744a75a09cebb88933bbee4ab9d753f746e7da84e0fadf1cffe902ec710f91ba973d6b333eb52680f0497571ba1e6f20946f05956f73b901e482ba8cf7c74c6359608ab00f6aade9a203aa038e4d64a6036417063b2b11e4101bb9305699f0704a0378836fae0b1f5709c2cc79ff57aaa9f4da32c5827c5cbfedcc3ee9e82a23384c0c623e22e05935f236bbc374a304347414083c4ca10d19ec7a9d1ce5c2d9b9d37145df37d61c623a0930b991eea514a0565dac2226022a0cda6d6e77e41b5da5ad3a809f8d4fc31061b7fa040189f24f1c4fea3e908020335174e2dd66e59d2a6cd60e1781dafcfb770dcd77c605613795d6b7a9625f02bfed25661350f77cb54250c01cbf1a5707c394b10efeea54bb075d6cbb0f10e93c9744674c7f107ea892d947a2c57214ec6a68004508d5be2c203cabbd4fe247fcdabd5aaf816270b6b6c43fbe10d4e5f1ad1579ab25dcb9460672aa43fca504403f3e2d3422f7d8fec33439c73bd4336320e3cdb14dee681fb17313e36ee3792769ce192cb688f5a00bee4fc566eb859172b7993b70ce1222a55c9e94d5bae32de1525c8bbb86b54fa27215fa0d21f8RR{iûÿÿÿs
texect__builtins__RtlistR9ttimetbase64RthmactjsontintRuRD(RDRR³R¬RRR	R’R²t	b64decodetreplacetcompileRR°R9R±RR´RµRut	ExceptionR(REROtheadersR³ttmpRDtvGlobalstvLocals((sG/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hostbsto.pyt
getHeadersés(1(S



cCs#td|ƒg}t|ƒjjddƒ}||jkrÊx‰tt|j|ƒƒD]k}|j||d|krX|j||djdƒrXd|j||d|j||d<qXqXWn|j|ƒ\}}|ségSg}|j	j
j|dƒd}td	|ƒ|j	j
j|d
ƒd}	td|	ƒ|sQ|	rUgS|j	j
j|dƒd}
|
dkrÈ|j|
|j	jdd
t
jjjjƒ\}}|sÈt|ƒgSntd|ƒi|	d6|d6|d6}|jd}
|j}|j|d<||dd<|j	j|
|d|ƒ\}}|sMgStdƒt|ƒtdƒt|ƒ}|jddƒ}|rd|jj|ƒkr½tdj|ƒƒq|j	j|ƒr|tj|<t
jjjjrttd|ƒ|ƒn|jj |ƒ}qn|S(NsBSTO.getVideoLinks [%s]R}RROR|t*sdata-lid=['"]([^'^"]+?)['"]isData LID : %s s&<meta.*security_token.*content="(.*?)"sSecurity token : %s s'([0-9a-zA-Z_]{38,}?)'\)tbypassCaptchaServices
ticket: %sttokentLIDtticketsajax/embed.phpR1tRefererRLs ----------- ajax data ----------s --------------------------------Rˆis
sbs.to(!RR
tmetaRmR@R“Rt
startswithRMRHRR`tprocessCaptchaRRR R"R#RR=RCR:t
json_loadstuptcheckHostSupportRt
isValidUrlR)tLINKS_CACHER!RR
tgetVideoLinkExt(REtvideoUrlturlTabR‡RŠRdReterrorMsgTabtlidRÁtsitekeyRÃtpostDatatajaxUrlt
ajaxParamstajaxDatatjsonDatathostUrl((sG/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hostbsto.pyt
getVideoLinksÿs\ :2
4

	
!



cCs
td|ƒg}|j|jddƒƒ\}}|s?|S|j|jjj|ddƒdƒ}|jjj|ddtƒd}|j|jjj|d	d
ƒdjdƒdƒ}|dkrõ|j|jjj|d
dƒdƒ}n|j	|jjj
|dƒdƒ}|dkr3|d}n|dkrT|jddƒ}n|dkru|jddƒ}n|jdƒd}|jjj|ddƒ}t|ƒidd6dd6dd6dd6dd6d d!6}i}	xØ|D]Ð}
|j|jjj|
d"d#ƒdƒ}|jjj|
d$dƒd}|jd%j|jjj|d"d#ƒƒƒ}
|
dkr‚|j|ƒ}
n||krêy|
|	||<Wqºt
k
r¶qêqºXqêqêWi|j|ƒd6|j|ƒd&6idd6|j	|ƒd6gd'6|	d(6gS()Ns%SeriesOnlineIO.getArticleContent [%s]RORs'<div class="justify" id="desc_spoiler">s</div>is<div id="sp_left">s<scripts<h2s</h2>s<small>is<p s</p>ssrc=['"]([^'^"]+?)['"]RSRsRls<div class="infos">iÿÿÿÿs<span>tgenreRRtyeartProduktionsjahretactorstHauptdarstellertdirectort
Regisseuret
productiontProduzententwritertAutorens<spans</span>s<pRzttexttimagest
other_info(RRMRmR^RHRR_R]R’RNR`R\RR¹(RERbtretTabRdReRsRSRlt
descTabMapt	otherInfoRhR‡R»tval((sG/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hostbsto.pytgetArticleContentMsN!("5+%




(-
iRc	Csétdƒtj|||||ƒ|jdkr?|jƒn|jjddƒ}|jjddƒ}|jjddƒ}td||fƒg|_|dkrÄ|j	|j
idd6ƒn"|dkræ|j|jdƒn|dkr|j|jd	ƒnÊ|d	kr*|j
|jd
ƒn¨|d
krI|j|jƒn‰|dkr•t|jƒ}|jitd
6dd6ƒ|j|||ƒn=|dkrË|jidd6dd6dtdƒƒntƒtj|||ƒdS(NshandleService startR|RRQtmodesKhandleService: |||||||||||||||||||||||||||||||||||| name[%s], category[%s] RPt
list_itemsRt
list_episodesRUtsearch_next_pageRWRXR*RssType: (ssearchRð(RRt
handleServiceR=RR[tcurrItemRmtcurrListtlistsTabRZRjRoRyR‰R9R;R]RštlistsHistoryRRtendHandleService(	REtindextrefreshR•R–R|RQRíRb((sG/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hostbsto.pyRñus6

	*N(t__name__t
__module__RÌR6RRMRNR[RjRoRyR‰RšR]RœR¬R¾RÙRìRñ(((sG/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hostbsto.pyR)6s 								%	$			N	(tIPTVHostcBseZd„Zd„ZRS(cCstj|tƒtgƒdS(N(RR6R)RA(RE((sG/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hostbsto.pyR6žscCs8|ddkr4|ddkr4|ddkr4tStS(NttypetvideoRQRïR(R]RA(RERb((sG/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hostbsto.pytwithArticleContent¡s0(RùRúR6Rþ(((sG/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hostbsto.pyRûœs	(6t7Plugins.Extensions.IPTVPlayer.components.iptvplayerinitRRRt.Plugins.Extensions.IPTVPlayer.components.ihostRRt7Plugins.Extensions.IPTVPlayer.components.captcha_helperRt-Plugins.Extensions.IPTVPlayer.tools.iptvtoolsRRRRR	R
RRt-Plugins.Extensions.IPTVPlayer.tools.iptvtypesR
t8Plugins.Extensions.IPTVPlayer.libs.crypto.cipher.aes_cbcRt"Plugins.Extensions.IPTVPlayer.libsRt*Plugins.Extensions.IPTVPlayer.libs.e2ijsonRRÈRt
json_dumpsR²RtbinasciiRR´R¹t
simplejsontComponents.configRRRRRR]RR R$R%RAR!R"R'R(R)Rû(((sG/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hostbsto.pyt<module>s4:
(			ÿg