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@s‚ddlmZmZddlmZmZddlmZm	Z	ddl
mZddlm
Z
mZddlmZmZddlZddlZddlmZmZmZdd	lmZmZmZmZed
eƒejj _!ed
eƒejj _"ed
ddded
ƒfdedƒfgƒejj _#d„Z$d„Z%defd„ƒYZ&defd„ƒYZ'dS(iÿÿÿÿ(tTranslateTXTtSetIPTVPlayerLastHostError(t	CHostBasetCBaseHostClass(tprintDBGtprintExc(tstrwithmeta(tgetDirectM3U8PlaylisttgetMPDLinksWithMeta(tloadstdumpsN(tdatetimetdatet	timedelta(tconfigtConfigSelectiontConfigYesNotgetConfigListEntrytdefaultthlstchoicessHLS/m3u8tdashsDASH/mpdcCsyg}|jttdƒtjjjƒƒ|jttdƒtjjjƒƒ|jttdƒtjjjƒƒ|S(Ns#Show paid items (it may be illegal)sShow items with DRMsPreferred format:(	tappendRt_Rtpluginst
iptvplayerttvnowde_show_paid_itemsttvnowde_show_drm_itemsttvnowde_prefered_format(t
optionList((sJ/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hosttvnowde.pyt
GetConfigList!s
%%%cCsdS(Nshttps://www.tvnow.de/((((sJ/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hosttvnowde.pytgettytul*stTVNowDEcBsÅeZd„Zidd„Zd„Zd„Zed„Zd„Z	d„Z
d„Zd„Zd	„Z
d
„Zd„Zd„Zd
„Zd„Zd„Zd„Zd„Zdddd„ZRS(c	CsÎtj|idd6dd6ƒd|_d|_i|jd6dd	6d
d6dd
6|_t|jƒ|_|jjidd6ƒd|_i|_	g|_
igd6id6|_i|jd6td6td6td6|j
d6|_idd6tdƒd6idd6tdƒd6idd6tdƒd6id d6td!ƒd6g|_id"d6d#d$6id%d6d&d$6id'd6d(d$6id)d6d*d$6id+d6d,d$6id-d6d.d$6id/d6d0d$6g|_dS(1Ns
movs4u.comthistorysmovs4u.com.cookietcookies4https://www.tvnow.de/styles/modules/header/tvnow.pngsSUser-Agent=Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0s
User-Agentt1tDNTs?text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8tAccepts
gzip, deflatesAccept-EncodingtXMLHttpRequestsX-Requested-Withshttps://api.tvnow.de/v3/tlisttcachetheadert
use_cookietload_cookietsave_cookiet
cookiefiletaztcategorysA-ZttitletmissedsMissed the program?tchannelstChannelst	list_catst
CategoriestRTLtrtlt	f_channeltVoxtvoxsRTL 2trtl2tNitrotnitrosN-TVtntvtRTLplustrtlpluss	Super RTLtsuperrtl(Rt__init__tDEFAULT_ICON_URLt
USER_AGENTtHEADERtdicttAJAX_HEADERtupdatetMAIN_URLt
cacheLinkst
cacheAllAZtcacheAZtTruetCOOKIE_FILEt
defaultParamsRtMAIN_CAT_TABtCHANNELS_TAB(tself((sJ/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hosttvnowde.pyRB/s,		(			2 cs|ikrtˆjƒ}n‡‡fd†}iˆjjˆƒd6ˆjd6ˆjd6|d6|d<ˆjjˆ||ƒ\}}||fS(Ncs*ˆjj|ƒr|Stjˆ|ƒSdS(N(tcmt
isValidUrlturlparseturljoin(turl(tbaseUrlRR(sJ/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hosttvnowde.pyt_getFullUrlNstdomaintcookie_files
User-Agenttfull_url_handletcloudflare_params(RFROtupt	getDomainRNRDRStgetPageCFProtection(RRRXt	addParamst	post_dataRYtststdata((RXRRsJ/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hosttvnowde.pytgetPageJs8cCsM|j|dƒ}|dkr'd}ntdƒt|ƒkrC|St|ƒS(Nt(tgettNonettypetstr(RRtitemtkeytvalue((sJ/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hosttvnowde.pytgetStrXs	c
Cs,tdƒ|jdƒ}|j|ƒ\}}|s8dSyÕt|ƒ}xÂ|dD]¶}|jdtƒspqRndj|dƒ}|j|ƒ}|j|dƒ}dj|j|d	ƒƒ}t|ƒ}	|	j	i|d
6dd6|d6|d
6|d6ƒ|j
|	ƒqRWWntk
r'tƒnXdS(NsTVNowDE.listChannelsCatssG/channels/?fields=*&filter=%7B%22Active%22:true%7D&maxPerPage=50&page=1titemstactivesz/channels/{0}?fields=%5B%22*%22,%22movies%22,%5B%22id%22,%22title%22,%22episode%22,%22broadcastStartDate%22,%22articleLong%22,%22duration%22,%22free%22,%22replaceMovieInformation%22,%22seoUrl%22,%22pictures%22,%5B%22*%22%5D,%22packages%22,%5B%22*%22%5D,%22manifest%22,%5B%22*%22%5D,%22format%22,%5B%22id%22,+%22station%22,+%22title%22,%22seoUrl%22,%22defaultDvdImage%22%5D%5D%5DtidR0s5https://ais.tvnow.de/tvnow/cms/{0}/300x169/image2.jpgtdefaultImageR/tmoviestsub_keyRWticon(
Rt
getFullUrlRet
json_loadsRgRMtformatRnRFRHtaddDirt	ExceptionR(
RRtcItemtnextCategoryRWRcRdRkR0Rutparams((sJ/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hosttvnowde.pytlistChannelsCats`s&
0
c
Cs-tdƒg}t|jƒ}|rC|jidd6dd6ƒn%x"|jD]}|j|dƒqMW|jditdƒd6|d6ƒxš|D]’}d|krÃd	|d}|dg}n|jd
dƒ}|d}t|ƒ}	|	ji|d6|dd6|d
6|d6ƒ|j	|	ƒq“WdS(
NsTVNowDE.addChannelFiltertWatchBoxR0twatchboxR8is--All--t
f_channelss@https://www.tvnow.de/styles/modules/headerstations/%s_active.pngRuRfR/(
RR'RQRtinsertRRgRFRHRy(
RRR{R|twithWatchBoxtallChannelstchannelListRkRut	fChannelsR}((sJ/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hosttvnowde.pytaddChannelFilterts"
$

-c	Csøtdƒtjƒ}xÛtdƒD]Í}|td|ƒjdƒ}|dkr`tdƒ}n!|dkr{tdƒ}n|}d	j||ƒ}|j|ƒ}t	|ƒ}|j
i|d
6|d6|d6|jd
dƒd
6ƒ|j|ƒq#WdS(NsTVNowDE.addMissedDayitdayss%Y-%m-%ditTodayit	Yesterdaysê/movies?fields=*,format,paymentPaytypes,pictures,trailers,packages&filter=%7B%22BroadcastStartDate%22:%7B%22between%22:%7B%22start%22:%22{0}+00:00:00%22,%22end%22:%22{1}+23:59:59%22%7D%7D%7D&maxPerPage=200&order=BroadcastStartDate+ascR/RWR0RuRf(
RRtnowtrangeR
tstrftimeRRxRvRFRHRgRy(	RRR{R|R‹tdttR0RWR}((sJ/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hosttvnowde.pytaddMissedDayŒs
5cCs±tdƒdddddddd	d
ddd
ddddddddddddg}xR|D]J}t|ƒ}itd6|d6|jƒd6}||d<|j|ƒq_WdS(NsTVNowDE.listCatssTägliche SerientActiontCrimetRatgebertComedytShowtDocutainmenttDramatTieretNewstMagstRomantiktHorrortFamilietKochentAutotSportsReportage und DokumentationentSitcomtMysteryt	LifestyletMusikt	SpielfilmtAnimetgood_for_favR0tf_genreR/(RRFtFalsetlowerRy(RRR{R|tgenresRkR}((sJ/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hosttvnowde.pytlistCats›s
N
!
cCstdƒdt|jƒkr|jddƒ}d}xÉtrÿ|jdj|ƒƒ}|j|ƒ\}}|swdSyit|ƒ}|t|dƒ7}x"|dD]}|jj	|ƒq¥W|d|krß|d7}w:nWnt
k
rútƒnXPq:WndS(NsTVNowDE.fillAZCacheitpageisï/formats?fields=id,title,station,title,titleGroup,seoUrl,icon,hasFreeEpisodes,hasPayEpisodes,categoryId,searchAliasName,genres&filter=%7B%22Id%22:%7B%22containsNotIn%22:%5B%221896%22%5D%7D,%22Disabled%22:0%7D&maxPerPage=500&page=1&page={0}Rottotal(RtlenRKRgRMRvRxReRwRRzR(RRR{R­R®RWRcRdRk((sJ/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hosttvnowde.pytfillAZCache¦s(
	


cCsÞtdƒ|j|ƒigd6id6|_|jdgƒ}y²x«|jD] }tjjjj	r|jdt
ƒrqMn|j|dƒ}t|ƒr¯||kr¯qMn|j|dƒ}|j|dƒ}|j
|j|d	ƒƒ}|jd
gƒ}	t|	tƒr!dj|	ƒ}	nd}	itd
6|d6|d6|d6|d6|	d6}
||jdkr’|jdj|ƒg|jd|<n|jd|j|
ƒ|j|dƒ}|dkrMtd|ƒtdƒt|ƒqMqMWWntk
rtƒnX|jdjƒt|ƒr‡t|jdƒdkr‡t|ƒ}
idd6|d6dd6tdƒd6}
|j|
ƒnxP|jdD]A}t|ƒ}
idd6|d6|d6|d6}
|j|
ƒq•WdS(NsTVNowDE.listAZR'R(RthasFreeEpisodeststationt
titleGroupR0tseoUrlR«s | RfR§t	orig_itemt	f_stationtf_nametdesct
categoryIdtserietfilmtnewssUnknown categoryId [%s]s4>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>iR/tnametalltf_letters--All--(RºR»R¼(RR°RLRgRKRRRRRmR©RnR¯tcleanHtmlStrt
isinstanceR'tjoinRMRRzRtsortRFRRy(RRR{R|R†RkR²tletterR0R½R¸R}R¹((sJ/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hosttvnowde.pytlistAZ¼sN

&0

%("cCs±tdƒ|jddƒ}xŽ|jdD]}|dksH||kr*|jdj|gƒ}xE|D]:}t|ƒ}|jidd6|d6ƒ|j|ƒqhWq*q*WdS(	NsTVNowDE.listItemsByLetterR¿RfR'R¾R(R/R½(RRgRLRFRHRy(RRR{R|tfLetterRÄttabRkR}((sJ/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hosttvnowde.pytlistItemsByLetterês

cCstdƒ|jddƒ}|jddƒ}|jdjtj|ƒ|ƒƒ}|j|ƒ\}}|sqdSyst|ƒ}x`|dD]T}tj	j
jjr½|jdt
ƒr½q‹n|j|d	ƒ}	|	dkrð|j|d	ƒ}	n|j|d
ƒ}
|j|dƒ}|j|j|dƒƒ}|j|j|d
ƒƒ}
i	dd6td6|d6|d6|d6|d6|
d
6|	d6|
d6}|j|ƒ|j|dƒ}|dkr‹td|ƒtdƒt|ƒq‹q‹WWntk
rþtƒnXdS(NsTVNowDE.listCatsItemsR­iR¨Rfsl/formats/genre/{0}?fields=*&filter=%7B%22station%22:%22none%22%7D&maxPerPage=500&order=NameLong+asc&page={1}RoR±tdefaultDvdImageR0R²R´tmetaDescriptionR/R½R§RµR¶R·RuR¸R¹RºR»R¼sUnknown categoryId [%s]s4>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>(sseriesfilmsnews(RRgRvRxturllibtquoteReRwRRRRRmR©RnRÀRMRyRzR(RRR{R|R­tgenreRWRcRdRkRuR0R²R½R¸R}R¹((sJ/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hosttvnowde.pyt
listCatsItemsõs8
$&E


cCsEtdƒ|jddƒ}|jddƒ}|jdj||ƒƒ}|j|ƒ\}}|shdSy¾t|ƒ}|jdtƒrx™|ddD]ð}|jd	tƒs¶q˜ny·|j|d
ƒ}g}	x+|ddD]}
|	j|
dd
ƒqàWdt	|	ƒkrw˜nidd6dd6|	d6|d6|jddƒd6|jddƒd6}|j
|ƒWq˜tk
r‡tƒq˜Xq˜Wn–|d
}x||ddD]l}t
|j|dƒƒ}
|d}xAtdddƒD]-}|d}|dkr|d}nt|
|d|dƒt|
|dƒj}t|ƒ}||krWqãnd|
|jdƒf}|jdj|
|jdƒd|
|jdƒt|ƒjdƒ|ƒƒ}idd6d d6|d!6|d6|jddƒd6|jddƒd6}|j
|ƒqãWq¨W|jjƒWntk
r@tƒnXdS("NsTVNowDE.listNavigationR·RfR¶s“/formats/seo?fields=*,.*,formatTabs.*,formatTabs.formatTabPages.*,formatTabs.formatTabPages.container.*,annualNavigation.*&name={0}.php&station={1}t	tabSeasont
formatTabsRotvisibletheadlinetformatTabPagest	containerRqiR/R½tlist_tab_itemstf_containers_itemsR0RuR¸tannualNavigationtyeartmonthsii
is%s/%sis/movies?fields=*,format,paymentPaytypes,pictures,trailers,packages&filter=%7B%22BroadcastStartDate%22:%7B%22between%22:%7B%22start%22:%22{0}-{1}-{2}+00:00:00%22,%22end%22:+%22{3}-{4}-{5}+23:59:59%22%7D%7D,+%22FormatId%22+:+{6}%7D&maxPerPage=300&order=BroadcastStartDate+desct01tlist_video_itemsRW(RRgRvRxReRwR©RnRR¯RyRzRtintRŒRRˆRjtzfilltcurrListtreverse(RRR{R½R²RWRcRdRkR0t
containersttabItemR}RqRØRÙtmtm1Rˆ((sJ/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hosttvnowde.pytlistNavigationsV
H




-KH
cCs‹tdƒ|jdgƒ}yPxI|D]A}|jdj|ƒƒ}t|ƒ}||d<|j|ƒq&WWntk
r†tƒnXdS(NsTVNowDE.listTabItemsRÖs¶/containers/{0}/movies?fields=*,format.*,paymentPaytypes.*,livestreamEvent.*,pictures,trailers,packages,annualNavigation&maxPerPage=500&order=OrderWeight+asc,+BroadcastStartDate+descRW(RRgRvRxRFtlistVideoItemsRzR(RRR{RàRkRWR}((sJ/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hosttvnowde.pytlistTabItemsCs



cCs)td|ƒ|jddƒ}|dd|}|jdgƒ}|j|ƒ\}}|scdSy§t|ƒ}|jddƒ}|dkr||}nxi|d	D]]}y<tjjjjrÝ|jd
t	ƒrÝw¨ntjjj
jr|jdt	ƒrttdƒƒw¨n|d
d}	|j
j|	ƒs>w¨n|j|ddƒ}
t|ƒrr|
|krrw¨n|j|dƒ}dj|ƒ}|j|dƒ}
|j|j|dƒƒ}|j|dƒ}|j|ddƒ}g}xid'dtdƒfdtdƒfgD]@}|j||dƒ}|dkr|j|d|ƒqqWt|ƒr€dj|ƒd|}nd||f}i
td 6|d!6|	d6|d"6|d#6|
d$6|
d6|d6|d%6|d&6}|j|ƒWq¨tk
rtƒq¨Xq¨WWntk
r$tƒnXdS((NsTVNowDE.listVideoItems [%s]R­iRWs&page=%sRRtRfRotfreetisDrmsItems with DRM protection.tmanifestt	dashclearRxR²Rqs6https://ais.tvnow.de/tvnow/movie/{0}/600x716/title.jpgR0tarticleLongR´tbroadcastStartDates%stepisodesepisode: %stdurationsduration: %sis | s[/br]s/%s/%sR§Rµtf_seo_url_formattf_seo_url_itemR¶RuR¸(Rìs%s(RRgReRwRRRRRmR©RRRRSRTRnR¯RxRÀRRÂRMtaddVideoRzR(RRR{R­RWR†RcRdtsubKeyRkturlDashClearR²RqRuR0R¸t
seoUrlItemtseoUrlFormattdescTabRŽRR}((sJ/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hosttvnowde.pyRåPsZ
&%.L

cCsWtd|||fƒt|ƒ}|jdtj|ƒƒ|d<|j|dƒdS(NsDTVNowDE.listSearchResult cItem[%s], searchPattern[%s] searchType[%s]s/?s=RWtexplore_item(RRFRvRËt
quote_plust	listItems(RRR{t
searchPatternt
searchType((sJ/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hosttvnowde.pytlistSearchResult‚s cCs“td|ƒg}|jj|dgƒ}t|ƒr=|Sd}|jj|ƒs^yë|d}|d}|d}|jdj|||ƒƒ}|j|ƒ\}	}
|	s³gSyt	|
ƒ}
Wnt
k
rÜd}
nXd|
krö|d	}
n|
d
d}|
jdtƒr)tt
d
ƒƒn|jj|ƒs?gSWq^t
k
rZtƒq^Xn|jj|ƒro|jddƒjddƒ}|dd d|d<dj|ƒ}t|dtƒ}t|tƒ}
y.t|dd„ƒ}t|
dd„ƒ}
Wnt
k
rtƒnXtjjjjdkrR|j|ƒ|j|
ƒqo|j|
ƒ|j|ƒnt|ƒr||j|d<n|S(NsTVNowDE.getLinksForVideo [%s]RWRfRïRðR¶sh/movies/{0}/{1}?fields=*,format,files,manifest,breakpoints,paymentPaytypes,trailers,packages&station={2}terrorRµRéRêRèsVideo with DRM protection.s/vodnowusodash.s/vodnowusohls.t?iiiýÿÿÿtm3u8tcheckContentRlcSsdt|jddƒƒS(Niÿÿÿÿtbitratei(RÜRg(Rk((sJ/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hosttvnowde.pyt<lambda>¬scSsdt|jddƒƒS(Niÿÿÿÿt	bandwidthi(RÜRg(Rk((sJ/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hosttvnowde.pyR­sR(RRJRgR¯RSRTRvRxReRwRzR©RRRtreplacetsplitRÂRRMRtsortedRRRRRmtextend(RRR{tretTabtcacheTabRóRôRõR²RWRcRdturlHlsClearthlsTabtdashTab((sJ/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hosttvnowde.pytgetLinksForVideoˆs^









cCstd|ƒt|ƒ}g}t|ƒ}t|jjƒƒräx |jD]’}x‰tt|j|ƒƒD]n}||j||dkrk|j||djdƒsÕd|j||d|j||d<nPqkqkWqKWn|jj	|ƒr|j
j|ƒ}n|S(NsTVNowDE.getVideoLinks [%s]RWR½t*(RRRjR¯RJtkeysRŒt
startswithRSRTR^tgetVideoLinkExt(RRtvideoUrlturlTabtorginUrlRltidx((sJ/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hosttvnowde.pyt
getVideoLinks»s +cCs0tdƒt|ƒ}|jddƒt|ƒS(NsTVNowDE.getFavouriteDataRê(RRFtpopRht
json_dumps(RRR{R}((sJ/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hosttvnowde.pytgetFavouriteDataÐs
iRfc	CsÚtdƒtj|||||ƒ|jjddƒ}|jjddƒ}|jjddƒ}td||fƒg|_|dkr¨|j|jidd6ƒn|dkrÊ|j	|jdƒnù|d	krì|j
|jd
ƒn×|d
kr|j|jdƒnµ|dkr0|j|jdƒn“|dkrU|j
|jd
t
ƒnn|d
krw|j|jdƒnL|dkr™|j|jdƒn*|dkr»|j|jdƒn|dkrÝ|j|jdƒnæ|dkrü|j|jƒnÇ|dkr|j|jƒn¨|dkr:|j|jƒn‰|dkr†t|jƒ}|jitd6dd6ƒ|j|||ƒn=|dkr¼|jidd6dd6dtdƒƒntƒtj|||ƒdS(NshandleService startR½RfR/tmodes)handleService: || name[%s], category[%s] R2RÛR1t
missed_daytlist_missedR.tlist_aztlist_items_by_lettertlist_navigationR4tlist_cats_itemsRÕtsearchtsearch_next_pagetsearch_itemtsearch_historyR!R¸sType: (ssearchR"(RRt
handleServicetcurrItemRgRÞRhtlistsTabRPR~R‡RtlistMissedItemsRMRÅRÈR¬RÎRäRæRåRFRHR©RütlistsHistoryRRtendHandleService(	RRtindextrefreshRúRûR½R/RR{((sJ/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hosttvnowde.pyR%ÖsR
	*N(t__name__t
__module__RBRhReRnR~R©R‡RR¬R°RÅRÈRÎRäRæRåRüR
RRR%(((sJ/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hosttvnowde.pyR -s&							.		 	.	
	2		3		tIPTVHostcBseZd„ZRS(cCstj|tƒtgƒdS(N(RRBR RM(RR((sJ/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hosttvnowde.pyRBs(R-R.RB(((sJ/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hosttvnowde.pyR/
s((t7Plugins.Extensions.IPTVPlayer.components.iptvplayerinitRRRt.Plugins.Extensions.IPTVPlayer.components.ihostRRt-Plugins.Extensions.IPTVPlayer.tools.iptvtoolsRRt-Plugins.Extensions.IPTVPlayer.tools.iptvtypesRt2Plugins.Extensions.IPTVPlayer.libs.urlparserhelperRRt*Plugins.Extensions.IPTVPlayer.libs.e2ijsonR	RwR
RRURËRRR
tComponents.configRRRRR©RRRRRRRR R/(((sJ/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/hosts/hosttvnowde.pyt<module>s&"!			ÿÞ