Welcome to World of IPTV

With

+23k members
+11k threads
+106k posts

we are the most popular IPTV community on the web. 

IMPORTANT NOTE:
WE HAVE RECENTLY NOTICED THAT TOO MANY DOUBLE FAKE ACCOUNTS ARE CREATED IN THE PAST.
TO PREVENT THIS ISSUE THE DECISION WAS MADE THAT IN THE FUTURE A ANNUALLY FEE 20 EURO WILL BE RAISED FOR NEW MEMBERSHIPS.

Join now to the World of IPTV

Forum Rules

Before you start, check out the forum rules first

Account upgrade

Upgrade your account to get access to full features

Advertising

Would you like to place your advertisement with us ?

Resources Manager

Hundreds of IPTV scripts and apps are available for download
Resource icon

Tutorial Create Your Own Custom Kodi IPTV Plugin v1

Register & Get access to index

gopal

Extended Member
Ext. Member
Joined
Feb 17, 2020
Messages
5
Reaction score
4
Points
14
Location
home
Use this default.py

PHP:
 #############Imports#############
import xbmc,xbmcaddon,xbmcgui,xbmcplugin,base64,os,re,unicodedata,requests,time,string,sys,urllib,urllib2,json,urlparse,datetime,zipfile,shutil
from resources.modules import client,control,tools,user
from datetime import date
import xml.etree.ElementTree as ElementTree


#################################

#############Defined Strings#############
icon         = xbmc.translatePath(os.path.join('special://home/addons/' + user.id, 'icon.png'))
fanart       = xbmc.translatePath(os.path.join('special://home/addons/' + user.id , 'fanart.jpg'))

username     = control.setting('Username')
password     = control.setting('Password')

live_url     = '%s:%s/enigma2.php?username=%s&password=%s&type=get_live_categories'%(user.host,user.port,username,password)
vod_url      = '%s:%s/enigma2.php?username=%s&password=%s&type=get_vod_categories'%(user.host,user.port,username,password)
series_url     = '%s:%s/enigma2.php?username=%s&password=%s&type=get_series_categories'%(user.host,user.port,username,password)
panel_api    = '%s:%s/panel_api.php?username=%s&password=%s'%(user.host,user.port,username,password)
play_url     = '%s:%s/live/%s/%s/'%(user.host,user.port,username,password)


Guide = xbmc.translatePath(os.path.join('special://home/addons/addons/'+user.id+'/resources/catchup', 'guide.xml'))
GuideLoc = xbmc.translatePath(os.path.join('special://home/addons/addons/'+user.id+'/resources/catchup', 'g'))

advanced_settings           =  xbmc.translatePath('special://home/addons/'+user.id+'/resources/advanced_settings')
advanced_settings_target    =  xbmc.translatePath(os.path.join('special://home/userdata','advancedsettings.xml'))

KODIV        = float(xbmc.getInfoLabel("System.BuildVersion")[:4])
#########################################

def buildcleanurl(url):
    url = str(url).replace('USERNAME',username).replace('PASSWORD',password)
    return url
def start():
    if username=="":
        usern = userpopup()
        passw= passpopup()
        control.setSetting('Username',usern)
        control.setSetting('Password',passw)
        xbmc.executebuiltin('Container.Refresh')
        auth = '%s:%s/enigma2.php?username=%s&password=%s&type=get_vod_categories'%(user.host,user.port,usern,passw)
        auth = tools.OPEN_URL(auth)
        if auth == "":
            line1 = "[COLOR red][B]Incorrect Login Details[/COLOR]"
            line2 = "Please Re-enter" 
            line3 = "Username & Password are CaSeSenSiTiVe" 
            xbmcgui.Dialog().ok('Attention', line1, line2, line3)
            start()
        else:
            line1 = "Login Successful"
            line2 = "Welcome to "+user.name 
            line3 = ('[COLOR greeen]%s[/COLOR]'%usern)
            xbmcgui.Dialog().ok(user.name, line1, line2, line3)
            addonsettings('ADS2','')
            xbmc.executebuiltin('Container.Refresh')
            home()
    else:
        auth = '%s:%s/enigma2.php?username=%s&password=%s&type=get_vod_categories'%(user.host,user.port,username,password)
        auth = tools.OPEN_URL(auth)
        if not auth=="":
            tools.addDir('Account Information','url',6,icon,fanart,'')
            tools.addDir('Live TV','live',1,icon,fanart,'')
            tools.addDir('Catchup TV','url',12,icon,fanart,'')
            tools.addDir('VOD','vod',3,icon,fanart,'')
            tools.addDir('Series','series',3,icon,fanart,'')
            tools.addDir('Search','url',5,icon,fanart,'')
            tools.addDir('Settings','url',8,icon,fanart,'')
            tools.addDir('Extras','url',16,icon,fanart,'')
                
def home():
    tools.addDir('Account Information','url',6,icon,fanart,'')
    tools.addDir('Live TV','live',1,icon,fanart,'')
    tools.addDir('Catchup TV','url',12,icon,fanart,'')
    tools.addDir('VOD','vod',3,icon,fanart,'')
    tools.addDir('Series','series',3,icon,fanart,'')
    tools.addDir('Search','',5,icon,fanart,'')
    tools.addDir('Settings','url',8,icon,fanart,'')
    tools.addDir('Extras','url',16,icon,fanart,'')
        
def livecategory(url):
    
    open = tools.OPEN_URL(live_url)
    all_cats = tools.regex_get_all(open,'<channel>','</channel>')
    for a in all_cats:
        name = tools.regex_from_to(a,'<title>','</title>')
        name = base64.b64decode(name)
        url1  = tools.regex_from_to(a,'<playlist_url>','</playlist_url>').replace('<![CDATA[','').replace(']]>','')
        if not 'Install Videos' in name:
            if not 'TEST CHANNELS' in name:
                    tools.addDir(name,url1,2,icon,fanart,'')
        
def Livelist(url):
    url  = buildcleanurl(url)
    open = tools.OPEN_URL(url)
    all_cats = tools.regex_get_all(open,'<channel>','</channel>')
    for a in all_cats:
        name = tools.regex_from_to(a,'<title>','</title>')
        name = base64.b64decode(name)
        xbmc.log(str(name))
        name = re.sub('\[.*?min ','-',name)
        thumb= tools.regex_from_to(a,'<desc_image>','</desc_image>').replace('<![CDATA[','').replace(']]>','')
        url1  = tools.regex_from_to(a,'<stream_url>','</stream_url>').replace('<![CDATA[','').replace(']]>','')
        desc = tools.regex_from_to(a,'<description>','</description>')
        tools.addDir(name,url1,4,thumb,fanart,base64.b64decode(desc))
        
    
def vod(url):
    if url =="vod":
        open = tools.OPEN_URL(vod_url)
    elif url =="series":
        open = tools.OPEN_URL(series_url)
    else:
        url  = buildcleanurl(url)
        open = tools.OPEN_URL(url)
        
    all_cats = tools.regex_get_all(open,'<channel>','</channel>')
    for a in all_cats:
        if '<playlist_url>' in open:
            name = tools.regex_from_to(a,'<title>','</title>')
            url1  = tools.regex_from_to(a,'<playlist_url>','</playlist_url>').replace('<![CDATA[','').replace(']]>','')
            tools.addDir(str(base64.b64decode(name)).replace('?',''),url1,3,icon,fanart,'')
        else:
            if xbmcaddon.Addon().getSetting('meta') == 'true':
                try:
                    name = tools.regex_from_to(a,'<title>','</title>')
                    name = base64.b64decode(name)
                    thumb= tools.regex_from_to(a,'<desc_image>','</desc_image>').replace('<![CDATA[','').replace(']]>','')
                    url  = tools.regex_from_to(a,'<stream_url>','</stream_url>').replace('<![CDATA[','').replace(']]>','')
                    desc = tools.regex_from_to(a,'<description>','</description>')
                    desc = base64.b64decode(desc)
                    plot = tools.regex_from_to(desc,'PLOT:','\n')
                    cast = tools.regex_from_to(desc,'CAST:','\n')
                    ratin= tools.regex_from_to(desc,'RATING:','\n')
                    year = tools.regex_from_to(desc,'RELEASEDATE:','\n').replace(' ','-')
                    year = re.compile('-.*?-.*?-(.*?)-',re.DOTALL).findall(year)
                    runt = tools.regex_from_to(desc,'DURATION_SECS:','\n')
                    genre= tools.regex_from_to(desc,'GENRE:','\n')
                    tools.addDirMeta(str(name).replace('[/COLOR].','.[/COLOR]'),url,4,thumb,fanart,plot,str(year).replace("['","").replace("']",""),str(cast).split(),ratin,runt,genre)
                except:pass
                xbmcplugin.setContent(int(sys.argv[1]), 'movies')
            else:
                name = tools.regex_from_to(a,'<title>','</title>')
                name = base64.b64decode(name)
                thumb= tools.regex_from_to(a,'<desc_image>','</desc_image>').replace('<![CDATA[','').replace(']]>','')
                url  = tools.regex_from_to(a,'<stream_url>','</stream_url>').replace('<![CDATA[','').replace(']]>','')
                desc = tools.regex_from_to(a,'<description>','</description>')
                tools.addDir(name,url,4,thumb,fanart,base64.b64decode(desc))
                
                
        
##############################################
#### RULE NO.1 - DONT WRITE CODE THAT IS  ####
#### ALREADY WRITTEN AND PROVEN TO WORK :)####
##############################################


def catchup():
    listcatchup()
        
def listcatchup():
    open = tools.OPEN_URL(panel_api)
    all  = tools.regex_get_all(open,'{"num','direct')
    for a in all:
        if '"tv_archive":1' in a:
            name = tools.regex_from_to(a,'"epg_channel_id":"','"').replace('\/','/')
            thumb= tools.regex_from_to(a,'"stream_icon":"','"').replace('\/','/')
            id   = tools.regex_from_to(a,'stream_id":"','"')
            if not name=="":
                tools.addDir(name,'url',13,thumb,fanart,id)
            

def tvarchive(name,description):
    days = 7
    
    now = str(datetime.datetime.now()).replace('-','').replace(':','').replace(' ','')
    date3 = datetime.datetime.now() - datetime.timedelta(days)
    date = str(date3)
    date = str(date).replace('-','').replace(':','').replace(' ','')
    APIv2 = base64.b64decode("JXM6JXMvcGxheWVyX2FwaS5waHA/dXNlcm5hbWU9JXMmcGFzc3dvcmQ9JXMmYWN0aW9uPWdldF9zaW1wbGVfZGF0YV90YWJsZSZzdHJlYW1faWQ9JXM=")%(user.host,user.port,username,password,description)
    link=tools.OPEN_URL(APIv2)
    match = re.compile('"title":"(.+?)".+?"start":"(.+?)","end":"(.+?)","description":"(.+?)"').findall(link)
    for ShowTitle,start,end,DesC in match:
        ShowTitle = base64.b64decode(ShowTitle)
        DesC = base64.b64decode(DesC)
        format = '%Y-%m-%d %H:%M:%S'
        try:
            modend = dtdeep.strptime(end, format)
            modstart = dtdeep.strptime(start, format)
        except:
            modend = datetime.datetime(*(time.strptime(end, format)[0:6]))
            modstart = datetime.datetime(*(time.strptime(start, format)[0:6]))
        StreamDuration = modend - modstart
        modend_ts = time.mktime(modend.timetuple())
        modstart_ts = time.mktime(modstart.timetuple())
        FinalDuration = int(modend_ts-modstart_ts) / 60
        strstart = start
        Realstart = str(strstart).replace('-','').replace(':','').replace(' ','')
        start2 = start[:-3]
        editstart = start2
        start2 = str(start2).replace(' ',' - ')
        start = str(editstart).replace(' ',':')
        Editstart = start[:13] + '-' + start[13:]
        Finalstart = Editstart.replace('-:','-')
        if Realstart > date:
            if Realstart < now:
                catchupURL = base64.b64decode("JXM6JXMvc3RyZWFtaW5nL3RpbWVzaGlmdC5waHA/dXNlcm5hbWU9JXMmcGFzc3dvcmQ9JXMmc3RyZWFtPSVzJnN0YXJ0PQ==")%(user.host,user.port,username,password,description)
                ResultURL = catchupURL + str(Finalstart) + "&duration=%s"%(FinalDuration)
                kanalinimi = "[COLOR white]%s[/COLOR] - %s"%(start2,ShowTitle)
                tools.addDir(kanalinimi,ResultURL,4,icon,fanart,DesC)

    
                    
def DownloaderClass(url, dest):
    dp = xbmcgui.DialogProgress()
    dp.create('Fetching latest Catch Up',"Fetching latest Catch Up...",' ', ' ')
    dp.update(0)
    start_time=time.time()
    urllib.urlretrieve(url, dest, lambda nb, bs, fs: _pbhook(nb, bs, fs, dp, start_time))

def _pbhook(numblocks, blocksize, filesize, dp, start_time):
        try: 
            percent = min(numblocks * blocksize * 100 / filesize, 100) 
            currently_downloaded = float(numblocks) * blocksize / (1024 * 1024) 
            kbps_speed = numblocks * blocksize / (time.time() - start_time) 
            if kbps_speed > 0: 
                eta = (filesize - numblocks * blocksize) / kbps_speed 
            else: 
                eta = 0 
            kbps_speed = kbps_speed / 1024 
            mbps_speed = kbps_speed / 1024 
            total = float(filesize) / (1024 * 1024) 
            mbs = '[COLOR white]%.02f MB of less than 5MB[/COLOR]' % (currently_downloaded)
            e = '[COLOR white]Speed:  %.02f Mb/s ' % mbps_speed  + '[/COLOR]'
            dp.update(percent, mbs, e)
        except: 
            percent = 100 
            dp.update(percent) 
        if dp.iscanceled():
            dialog = xbmcgui.Dialog()
            dialog.ok(user.name, 'The download was cancelled.')
                
            sys.exit()
            dp.close()
#####################################################################

def tvguide():
        xbmc.executebuiltin('ActivateWindow(TVGuide)')
def stream_video(url):
    url = buildcleanurl(url)
    url = str(url).replace('USERNAME',username).replace('PASSWORD',password)
    liz = xbmcgui.ListItem('', iconImage='DefaultVideo.png', thumbnailImage=icon)
    liz.setInfo(type='Video', infoLabels={'Title': '', 'Plot': ''})
    liz.setProperty('IsPlayable','true')
    liz.setPath(str(url))
    xbmcplugin.setResolvedUrl(int(sys.argv[1]), True, liz)
    
    
def searchdialog():
    search = control.inputDialog(heading='Search '+user.name+':')
    if search=="":
        return
    else:
        return search

    
def search():
    if mode==3:
        return False
    text = searchdialog()
    if not text:
        xbmc.executebuiltin("XBMC.Notification([COLOR white][B]Search is Empty[/B][/COLOR],Aborting search,4000,"+icon+")")
        return
    xbmc.log(str(text))
    open = tools.OPEN_URL(panel_api)
    all_chans = tools.regex_get_all(open,'{"num":','epg')
    for a in all_chans:
        name = tools.regex_from_to(a,'name":"','"').replace('\/','/')
        url  = tools.regex_from_to(a,'"stream_id":"','"')
        thumb= tools.regex_from_to(a,'stream_icon":"','"').replace('\/','/')
        if text in name.lower():
            tools.addDir(name,play_url+url+'.ts',4,thumb,fanart,'')
        elif text not in name.lower() and text in name:
            tools.addDir(name,play_url+url+'.ts',4,thumb,fanart,'')

    
def settingsmenu():
    if xbmcaddon.Addon().getSetting('meta')=='true':
        META = '[COLOR lime]ON[/COLOR]'
    else:
        META = '[COLOR red]OFF[/COLOR]'
    if xbmcaddon.Addon().getSetting('update')=='true':
        UPDATE = '[COLOR lime]ON[/COLOR]'
    else:
        UPDATE = '[COLOR red]OFF[/COLOR]'
    tools.addDir('Edit Advanced Settings','ADS',10,icon,fanart,'')
    tools.addDir('META for VOD is %s'%META,'META',10,icon,fanart,META)
    tools.addDir('Log Out','LO',10,icon,fanart,'')
    

def addonsettings(url,description):
    url  = buildcleanurl(url)
    if   url =="CC":
        tools.clear_cache()
    elif url =="AS":
        xbmc.executebuiltin('Addon.OpenSettings(%s)'%user.id)
    elif url =="ADS":
        dialog = xbmcgui.Dialog().select('Edit Advanced Settings', ['Enable Fire TV Stick AS','Enable Fire TV AS','Enable 1GB Ram or Lower AS','Enable 2GB Ram or Higher AS','Enable Nvidia Shield AS','Disable AS'])
        if dialog==0:
            advancedsettings('stick')
            xbmcgui.Dialog().ok(user.name, 'Set Advanced Settings')
        elif dialog==1:
            advancedsettings('firetv')
            xbmcgui.Dialog().ok(user.name, 'Set Advanced Settings')
        elif dialog==2:
            advancedsettings('lessthan')
            xbmcgui.Dialog().ok(user.name, 'Set Advanced Settings')
        elif dialog==3:
            advancedsettings('morethan')
            xbmcgui.Dialog().ok(user.name, 'Set Advanced Settings')
        elif dialog==4:
            advancedsettings('shield')
            xbmcgui.Dialog().ok(user.name, 'Set Advanced Settings')
        elif dialog==5:
            advancedsettings('remove')
            xbmcgui.Dialog().ok(user.name, 'Advanced Settings Removed')
    elif url =="ADS2":
        dialog = xbmcgui.Dialog().select('Select Your Device Or Closest To', ['Fire TV Stick ','Fire TV','1GB Ram or Lower','2GB Ram or Higher','Nvidia Shield'])
        if dialog==0:
            advancedsettings('stick')
            xbmcgui.Dialog().ok(user.name, 'Set Advanced Settings')
        elif dialog==1:
            advancedsettings('firetv')
            xbmcgui.Dialog().ok(user.name, 'Set Advanced Settings')
        elif dialog==2:
            advancedsettings('lessthan')
            xbmcgui.Dialog().ok(user.name, 'Set Advanced Settings')
        elif dialog==3:
            advancedsettings('morethan')
            xbmcgui.Dialog().ok(user.name, 'Set Advanced Settings')
        elif dialog==4:
            advancedsettings('shield')
            xbmcgui.Dialog().ok(user.name, 'Set Advanced Settings')
    elif url =="tv":
        dialog = xbmcgui.Dialog().yesno(user.name,'Would You like us to Setup the TV Guide for You?')
        if dialog:
            pvrsetup()
            xbmcgui.Dialog().ok(user.name, 'PVR Integration Complete')
    elif url =="ST":
        xbmc.executebuiltin('Runscript("special://home/addons/'+user.id+'/resources/modules/speedtest.py")')
    elif url =="META":
        if 'ON' in description:
            xbmcaddon.Addon().setSetting('meta','false')
            xbmc.executebuiltin('Container.Refresh')
        else:
            xbmcaddon.Addon().setSetting('meta','true')
            xbmc.executebuiltin('Container.Refresh')
    elif url =="LO":
        xbmcaddon.Addon().setSetting('Username','')
        xbmcaddon.Addon().setSetting('Password','')
        xbmc.executebuiltin('XBMC.ActivateWindow(Videos,addons://sources/video/)')
        xbmc.executebuiltin('Container.Refresh')
    elif url =="UPDATE":
        if 'ON' in description:
            xbmcaddon.Addon().setSetting('update','false')
            xbmc.executebuiltin('Container.Refresh')
        else:
            xbmcaddon.Addon().setSetting('update','true')
            xbmc.executebuiltin('Container.Refresh')
    
        
def advancedsettings(device):
    if device == 'stick':
        file = open(os.path.join(advanced_settings, 'stick.xml'))
    elif device == 'firetv':
        file = open(os.path.join(advanced_settings, 'firetv.xml'))
    elif device == 'lessthan':
        file = open(os.path.join(advanced_settings, 'lessthan1GB.xml'))
    elif device == 'morethan':
        file = open(os.path.join(advanced_settings, 'morethan1GB.xml'))
    elif device == 'shield':
        file = open(os.path.join(advanced_settings, 'shield.xml'))
    elif device == 'remove':
        os.remove(advanced_settings_target)
    
    try:
        read = file.read()
        f = open(advanced_settings_target, mode='w+')
        f.write(read)
        f.close()
    except:
        pass
        
    
def pvrsetup():
    correctPVR()
    return
        
        
def asettings():
    choice = xbmcgui.Dialog().yesno(user.name, 'Please Select The RAM Size of Your Device', yeslabel='Less than 1GB RAM', nolabel='More than 1GB RAM')
    if choice:
        lessthan()
    else:
        morethan()
    

def morethan():
        file = open(os.path.join(advanced_settings, 'morethan.xml'))
        a = file.read()
        f = open(advanced_settings_target, mode='w+')
        f.write(a)
        f.close()

        
def lessthan():
        file = open(os.path.join(advanced_settings, 'lessthan.xml'))
        a = file.read()
        f = open(advanced_settings_target, mode='w+')
        f.write(a)
        f.close()
        
        
def userpopup():
    kb =xbmc.Keyboard ('', 'heading', True)
    kb.setHeading('Enter Username')
    kb.setHiddenInput(False)
    kb.doModal()
    if (kb.isConfirmed()):
        text = kb.getText()
        return text
    else:
        return False

        
def passpopup():
    kb =xbmc.Keyboard ('', 'heading', True)
    kb.setHeading('Enter Password')
    kb.setHiddenInput(False)
    kb.doModal()
    if (kb.isConfirmed()):
        text = kb.getText()
        return text
    else:
        return False
        
        
def accountinfo():
    try:
        open = tools.OPEN_URL(panel_api)
        username   = tools.regex_from_to(open,'"username":"','"')
        password   = tools.regex_from_to(open,'"password":"','"')
        status     = tools.regex_from_to(open,'"status":"','"')
        connects   = tools.regex_from_to(open,'"max_connections":"','"')
        active     = tools.regex_from_to(open,'"active_cons":"','"')
        expiry     = tools.regex_from_to(open,'"exp_date":"','"')
        expiry     = datetime.datetime.fromtimestamp(int(expiry)).strftime('%d/%m/%Y - %H:%M')
        expreg     = re.compile('^(.*?)/(.*?)/(.*?)$',re.DOTALL).findall(expiry)
        for day,month,year in expreg:
            month     = tools.MonthNumToName(month)
            year      = re.sub(' -.*?$','',year)
            expiry    = month+' '+day+' - '+year
            ip        = tools.getlocalip()
            extip     = tools.getexternalip()
            tools.addDir('[COLOR white]Username :[/COLOR] '+username,'','',icon,fanart,'')
            tools.addDir('[COLOR white]Password :[/COLOR] '+password,'','',icon,fanart,'')
            tools.addDir('[COLOR white]Expiry Date:[/COLOR] '+expiry,'','',icon,fanart,'')
            tools.addDir('[COLOR white]Account Status :[/COLOR] %s'%status,'','',icon,fanart,'')
            tools.addDir('[COLOR white]Current Connections:[/COLOR] '+ active,'','',icon,fanart,'')
            tools.addDir('[COLOR white]Allowed Connections:[/COLOR] '+connects,'','',icon,fanart,'')
            tools.addDir('[COLOR white]Local IP Address:[/COLOR] '+ip,'','',icon,fanart,'')
            tools.addDir('[COLOR white]External IP Address:[/COLOR] '+extip,'','',icon,fanart,'')
            tools.addDir('[COLOR white]Kodi Version:[/COLOR] '+str(KODIV),'','',icon,fanart,'')
    except:
        pass
        
    
def correctPVR():

    addon = xbmcaddon.Addon(user.id)
    username_text = addon.getSetting(id='Username')
    password_text = addon.getSetting(id='Password')
    jsonSetPVR = '{"jsonrpc":"2.0", "method":"Settings.SetSettingValue", "params":{"setting":"pvrmanager.enabled", "value":true},"id":1}'
    IPTVon        = '{"jsonrpc":"2.0","method":"Addons.SetAddonEnabled","params":{"addonid":"pvr.iptvsimple","enabled":true},"id":1}'
    nulldemo   = '{"jsonrpc":"2.0","method":"Addons.SetAddonEnabled","params":{"addonid":"pvr.demo","enabled":false},"id":1}'
    loginurl   = user.host+':'+user.port+"/get.php?username=" + username_text + "&password=" + password_text + "&type=m3u_plus&output=ts"
    EPGurl     = user.host+':'+user.port+"/xmltv.php?username=" + username_text + "&password=" + password_text

    xbmc.executeJSONRPC(jsonSetPVR)
    xbmc.executeJSONRPC(IPTVon)
    xbmc.executeJSONRPC(nulldemo)
    
    moist = xbmcaddon.Addon('pvr.iptvsimple')
    moist.setSetting(id='m3uUrl', value=loginurl)
    moist.setSetting(id='epgUrl', value=EPGurl)
    moist.setSetting(id='m3uCache', value="false")
    moist.setSetting(id='epgCache', value="false")
    xbmc.executebuiltin("Container.Refresh")

def num2day(num):
    if num =="0":
        day = 'monday'
    elif num=="1":
        day = 'tuesday'
    elif num=="2":
        day = 'wednesday'
    elif num=="3":
        day = 'thursday'
    elif num=="4":
        day = 'friday'
    elif num=="5":
        day = 'saturday'
    elif num=="6":
        day = 'sunday'
    return day
    
def extras():
    tools.addDir('Run a Speed Test','ST',10,icon,fanart,'')
    tools.addDir('Clear Cache','CC',10,icon,fanart,'')
    

params=tools.get_params()
url=None
name=None
mode=None
iconimage=None
description=None
query=None
type=None

try:
    url=urllib.unquote_plus(params["url"])
except:
    pass
try:
    name=urllib.unquote_plus(params["name"])
except:
    pass
try:
    iconimage=urllib.unquote_plus(params["iconimage"])
except:
    pass
try:
    mode=int(params["mode"])
except:
    pass
try:
    description=urllib.unquote_plus(params["description"])
except:
    pass
try:
    query=urllib.unquote_plus(params["query"])
except:
    pass
try:
    type=urllib.unquote_plus(params["type"])
except:
    pass

if mode==None or url==None or len(url)<1:
    start()

elif mode==1:
    livecategory(url)
    
elif mode==2:
    Livelist(url)
    
elif mode==3:
    vod(url)
    
elif mode==4:
    stream_video(url)
    
elif mode==5:
    search()
    
elif mode==6:
    accountinfo()
    
elif mode==7:
    tvguide()
    
elif mode==8:
    settingsmenu()
    
elif mode==9:
    xbmc.executebuiltin('ActivateWindow(busydialog)')
    tools.Trailer().play(url) 
    xbmc.executebuiltin('Dialog.Close(busydialog)')
    
elif mode==10:
    addonsettings(url,description)
    
elif mode==11:
    pvrsetup()
    
elif mode==12:
    catchup()

elif mode==13:
    tvarchive(name,description)
    
elif mode==14:
    listcatchup2()
    
elif mode==15:
    ivueint()
    
elif mode==16:
    extras()

xbmcplugin.endOfDirectory(int(sys.argv[1]))
 
Channels MatchTime Unblock CDN Offshore Server Contact
100 cnx / 90€ 5Gbps / 180€ 48CPU-256GRAM 10Gbps 569€ Skype live:giefsl
500 cnx / 350€ 10Gbps / 350€ 48CPU-128GRAM 5Gbps / 349€ TG @changglobize
1000 cnx / 500€ 20Gbps / 700€ 40CPU-128GRAM 20Gbps / €980 http://coronaserver.com

Jimbo

Extended Member
Ext. Member
Joined
Apr 6, 2020
Messages
6
Reaction score
2
Points
14
Location
Scotland
I have a problem using a certain sub, where there are square brackets in the channel name.
 

Jimbo

Extended Member
Ext. Member
Joined
Apr 6, 2020
Messages
6
Reaction score
2
Points
14
Location
Scotland
It means only either the channel name OR the program listing can be displayed, not both at the same time as per your screen shots. I guess the [ ] characters are causing an issue somewhere, any ideas on how to fix?
 
Channels MatchTime Unblock CDN Offshore Server Contact
100 cnx / 90€ 5Gbps / 180€ 48CPU-256GRAM 10Gbps 569€ Skype live:giefsl
500 cnx / 350€ 10Gbps / 350€ 48CPU-128GRAM 5Gbps / 349€ TG @changglobize
1000 cnx / 500€ 20Gbps / 700€ 40CPU-128GRAM 20Gbps / €980 http://coronaserver.com

emulatore

Extended Member
Ext. Member
Joined
Apr 18, 2020
Messages
4
Reaction score
0
Points
1
Location
brzil
Is it possible to show series (tv show) instead of only vods?
 

Fireman007

Extended Member
Ext. Member
Joined
Apr 22, 2020
Messages
29
Reaction score
18
Points
14
Location
NY
Great share, thank you! Can you check the download link though, not working now? Thanks again!
 
Channels MatchTime Unblock CDN Offshore Server Contact
100 cnx / 90€ 5Gbps / 180€ 48CPU-256GRAM 10Gbps 569€ Skype live:giefsl
500 cnx / 350€ 10Gbps / 350€ 48CPU-128GRAM 5Gbps / 349€ TG @changglobize
1000 cnx / 500€ 20Gbps / 700€ 40CPU-128GRAM 20Gbps / €980 http://coronaserver.com

Dropy2008

Banned
Banned
Ext. Member
Joined
Oct 27, 2019
Messages
254
Reaction score
2,070
Points
104
Location
Black2Side
Hello, every one have the problem, whit live tv and vod to be empty after login, but when u searching for a channels to be fiind, I have the same addon on 2 different services but on one service sadly 4 day ago stop to show the channels in live tv and vod
 

Eddiebo

Extended Member
Ext. Member
Joined
Sep 23, 2019
Messages
106
Reaction score
53
Points
39
Location
Uk
put user and pass in get error .?
 

Dropy2008

Banned
Banned
Ext. Member
Joined
Oct 27, 2019
Messages
254
Reaction score
2,070
Points
104
Location
Black2Side
put user and pass in get error .?
I d9nt have any errors, I can login and see all the details from my account, in account section but live tv is empty
Screenshot_20200422-150056_Kodi.jpg

I now my provider stop support for stb emu, I don't now if have any connection whit stopping kodi addon printing the live tv category
 
Channels MatchTime Unblock CDN Offshore Server Contact
100 cnx / 90€ 5Gbps / 180€ 48CPU-256GRAM 10Gbps 569€ Skype live:giefsl
500 cnx / 350€ 10Gbps / 350€ 48CPU-128GRAM 5Gbps / 349€ TG @changglobize
1000 cnx / 500€ 20Gbps / 700€ 40CPU-128GRAM 20Gbps / €980 http://coronaserver.com

Eddiebo

Extended Member
Ext. Member
Joined
Sep 23, 2019
Messages
106
Reaction score
53
Points
39
Location
Uk
where does this one go ?

tools.addDir('Series','series',3,icon,fanart,'')
 

Eddiebo

Extended Member
Ext. Member
Joined
Sep 23, 2019
Messages
106
Reaction score
53
Points
39
Location
Uk
installed but when open get error
 
Channels MatchTime Unblock CDN Offshore Server Contact
100 cnx / 90€ 5Gbps / 180€ 48CPU-256GRAM 10Gbps 569€ Skype live:giefsl
500 cnx / 350€ 10Gbps / 350€ 48CPU-128GRAM 5Gbps / 349€ TG @changglobize
1000 cnx / 500€ 20Gbps / 700€ 40CPU-128GRAM 20Gbps / €980 http://coronaserver.com

On4sat

Extended Member
Ext. Member
Joined
Jul 2, 2019
Messages
354
Reaction score
1,738
Points
104
Location
Internet
Website
www.startstv.com
Use this default.py

PHP:
#############Imports#############
import xbmc,xbmcaddon,xbmcgui,xbmcplugin,base64,os,re,unicodedata,requests,time,string,sys,urllib,urllib2,json,urlparse,datetime,zipfile,shutil
from resources.modules import client,control,tools,user
from datetime import date
import xml.etree.ElementTree as ElementTree


#################################

#############Defined Strings#############
icon         = xbmc.translatePath(os.path.join('special://home/addons/' + user.id, 'icon.png'))
fanart       = xbmc.translatePath(os.path.join('special://home/addons/' + user.id , 'fanart.jpg'))

username     = control.setting('Username')
password     = control.setting('Password')

live_url     = '%s:%s/enigma2.php?username=%s&password=%s&type=get_live_categories'%(user.host,user.port,username,password)
vod_url      = '%s:%s/enigma2.php?username=%s&password=%s&type=get_vod_categories'%(user.host,user.port,username,password)
series_url     = '%s:%s/enigma2.php?username=%s&password=%s&type=get_series_categories'%(user.host,user.port,username,password)
panel_api    = '%s:%s/panel_api.php?username=%s&password=%s'%(user.host,user.port,username,password)
play_url     = '%s:%s/live/%s/%s/'%(user.host,user.port,username,password)


Guide = xbmc.translatePath(os.path.join('special://home/addons/addons/'+user.id+'/resources/catchup', 'guide.xml'))
GuideLoc = xbmc.translatePath(os.path.join('special://home/addons/addons/'+user.id+'/resources/catchup', 'g'))

advanced_settings           =  xbmc.translatePath('special://home/addons/'+user.id+'/resources/advanced_settings')
advanced_settings_target    =  xbmc.translatePath(os.path.join('special://home/userdata','advancedsettings.xml'))

KODIV        = float(xbmc.getInfoLabel("System.BuildVersion")[:4])
#########################################

def buildcleanurl(url):
    url = str(url).replace('USERNAME',username).replace('PASSWORD',password)
    return url
def start():
    if username=="":
        usern = userpopup()
        passw= passpopup()
        control.setSetting('Username',usern)
        control.setSetting('Password',passw)
        xbmc.executebuiltin('Container.Refresh')
        auth = '%s:%s/enigma2.php?username=%s&password=%s&type=get_vod_categories'%(user.host,user.port,usern,passw)
        auth = tools.OPEN_URL(auth)
        if auth == "":
            line1 = "[COLOR red][B]Incorrect Login Details[/COLOR]"
            line2 = "Please Re-enter"
            line3 = "Username & Password are CaSeSenSiTiVe"
            xbmcgui.Dialog().ok('Attention', line1, line2, line3)
            start()
        else:
            line1 = "Login Successful"
            line2 = "Welcome to "+user.name
            line3 = ('[COLOR greeen]%s[/COLOR]'%usern)
            xbmcgui.Dialog().ok(user.name, line1, line2, line3)
            addonsettings('ADS2','')
            xbmc.executebuiltin('Container.Refresh')
            home()
    else:
        auth = '%s:%s/enigma2.php?username=%s&password=%s&type=get_vod_categories'%(user.host,user.port,username,password)
        auth = tools.OPEN_URL(auth)
        if not auth=="":
            tools.addDir('Account Information','url',6,icon,fanart,'')
            tools.addDir('Live TV','live',1,icon,fanart,'')
            tools.addDir('Catchup TV','url',12,icon,fanart,'')
            tools.addDir('VOD','vod',3,icon,fanart,'')
            tools.addDir('Series','series',3,icon,fanart,'')
            tools.addDir('Search','url',5,icon,fanart,'')
            tools.addDir('Settings','url',8,icon,fanart,'')
            tools.addDir('Extras','url',16,icon,fanart,'')
               
def home():
    tools.addDir('Account Information','url',6,icon,fanart,'')
    tools.addDir('Live TV','live',1,icon,fanart,'')
    tools.addDir('Catchup TV','url',12,icon,fanart,'')
    tools.addDir('VOD','vod',3,icon,fanart,'')
    tools.addDir('Series','series',3,icon,fanart,'')
    tools.addDir('Search','',5,icon,fanart,'')
    tools.addDir('Settings','url',8,icon,fanart,'')
    tools.addDir('Extras','url',16,icon,fanart,'')
       
def livecategory(url):
   
    open = tools.OPEN_URL(live_url)
    all_cats = tools.regex_get_all(open,'<channel>','</channel>')
    for a in all_cats:
        name = tools.regex_from_to(a,'<title>','</title>')
        name = base64.b64decode(name)
        url1  = tools.regex_from_to(a,'<playlist_url>','</playlist_url>').replace('<![CDATA[','').replace(']]>','')
        if not 'Install Videos' in name:
            if not 'TEST CHANNELS' in name:
                    tools.addDir(name,url1,2,icon,fanart,'')
       
def Livelist(url):
    url  = buildcleanurl(url)
    open = tools.OPEN_URL(url)
    all_cats = tools.regex_get_all(open,'<channel>','</channel>')
    for a in all_cats:
        name = tools.regex_from_to(a,'<title>','</title>')
        name = base64.b64decode(name)
        xbmc.log(str(name))
        name = re.sub('\[.*?min ','-',name)
        thumb= tools.regex_from_to(a,'<desc_image>','</desc_image>').replace('<![CDATA[','').replace(']]>','')
        url1  = tools.regex_from_to(a,'<stream_url>','</stream_url>').replace('<![CDATA[','').replace(']]>','')
        desc = tools.regex_from_to(a,'<description>','</description>')
        tools.addDir(name,url1,4,thumb,fanart,base64.b64decode(desc))
       
   
def vod(url):
    if url =="vod":
        open = tools.OPEN_URL(vod_url)
    elif url =="series":
        open = tools.OPEN_URL(series_url)
    else:
        url  = buildcleanurl(url)
        open = tools.OPEN_URL(url)
       
    all_cats = tools.regex_get_all(open,'<channel>','</channel>')
    for a in all_cats:
        if '<playlist_url>' in open:
            name = tools.regex_from_to(a,'<title>','</title>')
            url1  = tools.regex_from_to(a,'<playlist_url>','</playlist_url>').replace('<![CDATA[','').replace(']]>','')
            tools.addDir(str(base64.b64decode(name)).replace('?',''),url1,3,icon,fanart,'')
        else:
            if xbmcaddon.Addon().getSetting('meta') == 'true':
                try:
                    name = tools.regex_from_to(a,'<title>','</title>')
                    name = base64.b64decode(name)
                    thumb= tools.regex_from_to(a,'<desc_image>','</desc_image>').replace('<![CDATA[','').replace(']]>','')
                    url  = tools.regex_from_to(a,'<stream_url>','</stream_url>').replace('<![CDATA[','').replace(']]>','')
                    desc = tools.regex_from_to(a,'<description>','</description>')
                    desc = base64.b64decode(desc)
                    plot = tools.regex_from_to(desc,'PLOT:','\n')
                    cast = tools.regex_from_to(desc,'CAST:','\n')
                    ratin= tools.regex_from_to(desc,'RATING:','\n')
                    year = tools.regex_from_to(desc,'RELEASEDATE:','\n').replace(' ','-')
                    year = re.compile('-.*?-.*?-(.*?)-',re.DOTALL).findall(year)
                    runt = tools.regex_from_to(desc,'DURATION_SECS:','\n')
                    genre= tools.regex_from_to(desc,'GENRE:','\n')
                    tools.addDirMeta(str(name).replace('[/COLOR].','.[/COLOR]'),url,4,thumb,fanart,plot,str(year).replace("['","").replace("']",""),str(cast).split(),ratin,runt,genre)
                except:pass
                xbmcplugin.setContent(int(sys.argv[1]), 'movies')
            else:
                name = tools.regex_from_to(a,'<title>','</title>')
                name = base64.b64decode(name)
                thumb= tools.regex_from_to(a,'<desc_image>','</desc_image>').replace('<![CDATA[','').replace(']]>','')
                url  = tools.regex_from_to(a,'<stream_url>','</stream_url>').replace('<![CDATA[','').replace(']]>','')
                desc = tools.regex_from_to(a,'<description>','</description>')
                tools.addDir(name,url,4,thumb,fanart,base64.b64decode(desc))
               
               
       
##############################################
#### RULE NO.1 - DONT WRITE CODE THAT IS  ####
#### ALREADY WRITTEN AND PROVEN TO WORK :)####
##############################################


def catchup():
    listcatchup()
       
def listcatchup():
    open = tools.OPEN_URL(panel_api)
    all  = tools.regex_get_all(open,'{"num','direct')
    for a in all:
        if '"tv_archive":1' in a:
            name = tools.regex_from_to(a,'"epg_channel_id":"','"').replace('\/','/')
            thumb= tools.regex_from_to(a,'"stream_icon":"','"').replace('\/','/')
            id   = tools.regex_from_to(a,'stream_id":"','"')
            if not name=="":
                tools.addDir(name,'url',13,thumb,fanart,id)
           

def tvarchive(name,description):
    days = 7
   
    now = str(datetime.datetime.now()).replace('-','').replace(':','').replace(' ','')
    date3 = datetime.datetime.now() - datetime.timedelta(days)
    date = str(date3)
    date = str(date).replace('-','').replace(':','').replace(' ','')
    APIv2 = base64.b64decode("JXM6JXMvcGxheWVyX2FwaS5waHA/dXNlcm5hbWU9JXMmcGFzc3dvcmQ9JXMmYWN0aW9uPWdldF9zaW1wbGVfZGF0YV90YWJsZSZzdHJlYW1faWQ9JXM=")%(user.host,user.port,username,password,description)
    link=tools.OPEN_URL(APIv2)
    match = re.compile('"title":"(.+?)".+?"start":"(.+?)","end":"(.+?)","description":"(.+?)"').findall(link)
    for ShowTitle,start,end,DesC in match:
        ShowTitle = base64.b64decode(ShowTitle)
        DesC = base64.b64decode(DesC)
        format = '%Y-%m-%d %H:%M:%S'
        try:
            modend = dtdeep.strptime(end, format)
            modstart = dtdeep.strptime(start, format)
        except:
            modend = datetime.datetime(*(time.strptime(end, format)[0:6]))
            modstart = datetime.datetime(*(time.strptime(start, format)[0:6]))
        StreamDuration = modend - modstart
        modend_ts = time.mktime(modend.timetuple())
        modstart_ts = time.mktime(modstart.timetuple())
        FinalDuration = int(modend_ts-modstart_ts) / 60
        strstart = start
        Realstart = str(strstart).replace('-','').replace(':','').replace(' ','')
        start2 = start[:-3]
        editstart = start2
        start2 = str(start2).replace(' ',' - ')
        start = str(editstart).replace(' ',':')
        Editstart = start[:13] + '-' + start[13:]
        Finalstart = Editstart.replace('-:','-')
        if Realstart > date:
            if Realstart < now:
                catchupURL = base64.b64decode("JXM6JXMvc3RyZWFtaW5nL3RpbWVzaGlmdC5waHA/dXNlcm5hbWU9JXMmcGFzc3dvcmQ9JXMmc3RyZWFtPSVzJnN0YXJ0PQ==")%(user.host,user.port,username,password,description)
                ResultURL = catchupURL + str(Finalstart) + "&duration=%s"%(FinalDuration)
                kanalinimi = "[COLOR white]%s[/COLOR] - %s"%(start2,ShowTitle)
                tools.addDir(kanalinimi,ResultURL,4,icon,fanart,DesC)

   
                   
def DownloaderClass(url, dest):
    dp = xbmcgui.DialogProgress()
    dp.create('Fetching latest Catch Up',"Fetching latest Catch Up...",' ', ' ')
    dp.update(0)
    start_time=time.time()
    urllib.urlretrieve(url, dest, lambda nb, bs, fs: _pbhook(nb, bs, fs, dp, start_time))

def _pbhook(numblocks, blocksize, filesize, dp, start_time):
        try:
            percent = min(numblocks * blocksize * 100 / filesize, 100)
            currently_downloaded = float(numblocks) * blocksize / (1024 * 1024)
            kbps_speed = numblocks * blocksize / (time.time() - start_time)
            if kbps_speed > 0:
                eta = (filesize - numblocks * blocksize) / kbps_speed
            else:
                eta = 0
            kbps_speed = kbps_speed / 1024
            mbps_speed = kbps_speed / 1024
            total = float(filesize) / (1024 * 1024)
            mbs = '[COLOR white]%.02f MB of less than 5MB[/COLOR]' % (currently_downloaded)
            e = '[COLOR white]Speed:  %.02f Mb/s ' % mbps_speed  + '[/COLOR]'
            dp.update(percent, mbs, e)
        except:
            percent = 100
            dp.update(percent)
        if dp.iscanceled():
            dialog = xbmcgui.Dialog()
            dialog.ok(user.name, 'The download was cancelled.')
               
            sys.exit()
            dp.close()
#####################################################################

def tvguide():
        xbmc.executebuiltin('ActivateWindow(TVGuide)')
def stream_video(url):
    url = buildcleanurl(url)
    url = str(url).replace('USERNAME',username).replace('PASSWORD',password)
    liz = xbmcgui.ListItem('', iconImage='DefaultVideo.png', thumbnailImage=icon)
    liz.setInfo(type='Video', infoLabels={'Title': '', 'Plot': ''})
    liz.setProperty('IsPlayable','true')
    liz.setPath(str(url))
    xbmcplugin.setResolvedUrl(int(sys.argv[1]), True, liz)
   
   
def searchdialog():
    search = control.inputDialog(heading='Search '+user.name+':')
    if search=="":
        return
    else:
        return search

   
def search():
    if mode==3:
        return False
    text = searchdialog()
    if not text:
        xbmc.executebuiltin("XBMC.Notification([COLOR white][B]Search is Empty[/B][/COLOR],Aborting search,4000,"+icon+")")
        return
    xbmc.log(str(text))
    open = tools.OPEN_URL(panel_api)
    all_chans = tools.regex_get_all(open,'{"num":','epg')
    for a in all_chans:
        name = tools.regex_from_to(a,'name":"','"').replace('\/','/')
        url  = tools.regex_from_to(a,'"stream_id":"','"')
        thumb= tools.regex_from_to(a,'stream_icon":"','"').replace('\/','/')
        if text in name.lower():
            tools.addDir(name,play_url+url+'.ts',4,thumb,fanart,'')
        elif text not in name.lower() and text in name:
            tools.addDir(name,play_url+url+'.ts',4,thumb,fanart,'')

   
def settingsmenu():
    if xbmcaddon.Addon().getSetting('meta')=='true':
        META = '[COLOR lime]ON[/COLOR]'
    else:
        META = '[COLOR red]OFF[/COLOR]'
    if xbmcaddon.Addon().getSetting('update')=='true':
        UPDATE = '[COLOR lime]ON[/COLOR]'
    else:
        UPDATE = '[COLOR red]OFF[/COLOR]'
    tools.addDir('Edit Advanced Settings','ADS',10,icon,fanart,'')
    tools.addDir('META for VOD is %s'%META,'META',10,icon,fanart,META)
    tools.addDir('Log Out','LO',10,icon,fanart,'')
   

def addonsettings(url,description):
    url  = buildcleanurl(url)
    if   url =="CC":
        tools.clear_cache()
    elif url =="AS":
        xbmc.executebuiltin('Addon.OpenSettings(%s)'%user.id)
    elif url =="ADS":
        dialog = xbmcgui.Dialog().select('Edit Advanced Settings', ['Enable Fire TV Stick AS','Enable Fire TV AS','Enable 1GB Ram or Lower AS','Enable 2GB Ram or Higher AS','Enable Nvidia Shield AS','Disable AS'])
        if dialog==0:
            advancedsettings('stick')
            xbmcgui.Dialog().ok(user.name, 'Set Advanced Settings')
        elif dialog==1:
            advancedsettings('firetv')
            xbmcgui.Dialog().ok(user.name, 'Set Advanced Settings')
        elif dialog==2:
            advancedsettings('lessthan')
            xbmcgui.Dialog().ok(user.name, 'Set Advanced Settings')
        elif dialog==3:
            advancedsettings('morethan')
            xbmcgui.Dialog().ok(user.name, 'Set Advanced Settings')
        elif dialog==4:
            advancedsettings('shield')
            xbmcgui.Dialog().ok(user.name, 'Set Advanced Settings')
        elif dialog==5:
            advancedsettings('remove')
            xbmcgui.Dialog().ok(user.name, 'Advanced Settings Removed')
    elif url =="ADS2":
        dialog = xbmcgui.Dialog().select('Select Your Device Or Closest To', ['Fire TV Stick ','Fire TV','1GB Ram or Lower','2GB Ram or Higher','Nvidia Shield'])
        if dialog==0:
            advancedsettings('stick')
            xbmcgui.Dialog().ok(user.name, 'Set Advanced Settings')
        elif dialog==1:
            advancedsettings('firetv')
            xbmcgui.Dialog().ok(user.name, 'Set Advanced Settings')
        elif dialog==2:
            advancedsettings('lessthan')
            xbmcgui.Dialog().ok(user.name, 'Set Advanced Settings')
        elif dialog==3:
            advancedsettings('morethan')
            xbmcgui.Dialog().ok(user.name, 'Set Advanced Settings')
        elif dialog==4:
            advancedsettings('shield')
            xbmcgui.Dialog().ok(user.name, 'Set Advanced Settings')
    elif url =="tv":
        dialog = xbmcgui.Dialog().yesno(user.name,'Would You like us to Setup the TV Guide for You?')
        if dialog:
            pvrsetup()
            xbmcgui.Dialog().ok(user.name, 'PVR Integration Complete')
    elif url =="ST":
        xbmc.executebuiltin('Runscript("special://home/addons/'+user.id+'/resources/modules/speedtest.py")')
    elif url =="META":
        if 'ON' in description:
            xbmcaddon.Addon().setSetting('meta','false')
            xbmc.executebuiltin('Container.Refresh')
        else:
            xbmcaddon.Addon().setSetting('meta','true')
            xbmc.executebuiltin('Container.Refresh')
    elif url =="LO":
        xbmcaddon.Addon().setSetting('Username','')
        xbmcaddon.Addon().setSetting('Password','')
        xbmc.executebuiltin('XBMC.ActivateWindow(Videos,addons://sources/video/)')
        xbmc.executebuiltin('Container.Refresh')
    elif url =="UPDATE":
        if 'ON' in description:
            xbmcaddon.Addon().setSetting('update','false')
            xbmc.executebuiltin('Container.Refresh')
        else:
            xbmcaddon.Addon().setSetting('update','true')
            xbmc.executebuiltin('Container.Refresh')
   
       
def advancedsettings(device):
    if device == 'stick':
        file = open(os.path.join(advanced_settings, 'stick.xml'))
    elif device == 'firetv':
        file = open(os.path.join(advanced_settings, 'firetv.xml'))
    elif device == 'lessthan':
        file = open(os.path.join(advanced_settings, 'lessthan1GB.xml'))
    elif device == 'morethan':
        file = open(os.path.join(advanced_settings, 'morethan1GB.xml'))
    elif device == 'shield':
        file = open(os.path.join(advanced_settings, 'shield.xml'))
    elif device == 'remove':
        os.remove(advanced_settings_target)
   
    try:
        read = file.read()
        f = open(advanced_settings_target, mode='w+')
        f.write(read)
        f.close()
    except:
        pass
       
   
def pvrsetup():
    correctPVR()
    return
       
       
def asettings():
    choice = xbmcgui.Dialog().yesno(user.name, 'Please Select The RAM Size of Your Device', yeslabel='Less than 1GB RAM', nolabel='More than 1GB RAM')
    if choice:
        lessthan()
    else:
        morethan()
   

def morethan():
        file = open(os.path.join(advanced_settings, 'morethan.xml'))
        a = file.read()
        f = open(advanced_settings_target, mode='w+')
        f.write(a)
        f.close()

       
def lessthan():
        file = open(os.path.join(advanced_settings, 'lessthan.xml'))
        a = file.read()
        f = open(advanced_settings_target, mode='w+')
        f.write(a)
        f.close()
       
       
def userpopup():
    kb =xbmc.Keyboard ('', 'heading', True)
    kb.setHeading('Enter Username')
    kb.setHiddenInput(False)
    kb.doModal()
    if (kb.isConfirmed()):
        text = kb.getText()
        return text
    else:
        return False

       
def passpopup():
    kb =xbmc.Keyboard ('', 'heading', True)
    kb.setHeading('Enter Password')
    kb.setHiddenInput(False)
    kb.doModal()
    if (kb.isConfirmed()):
        text = kb.getText()
        return text
    else:
        return False
       
       
def accountinfo():
    try:
        open = tools.OPEN_URL(panel_api)
        username   = tools.regex_from_to(open,'"username":"','"')
        password   = tools.regex_from_to(open,'"password":"','"')
        status     = tools.regex_from_to(open,'"status":"','"')
        connects   = tools.regex_from_to(open,'"max_connections":"','"')
        active     = tools.regex_from_to(open,'"active_cons":"','"')
        expiry     = tools.regex_from_to(open,'"exp_date":"','"')
        expiry     = datetime.datetime.fromtimestamp(int(expiry)).strftime('%d/%m/%Y - %H:%M')
        expreg     = re.compile('^(.*?)/(.*?)/(.*?)$',re.DOTALL).findall(expiry)
        for day,month,year in expreg:
            month     = tools.MonthNumToName(month)
            year      = re.sub(' -.*?$','',year)
            expiry    = month+' '+day+' - '+year
            ip        = tools.getlocalip()
            extip     = tools.getexternalip()
            tools.addDir('[COLOR white]Username :[/COLOR] '+username,'','',icon,fanart,'')
            tools.addDir('[COLOR white]Password :[/COLOR] '+password,'','',icon,fanart,'')
            tools.addDir('[COLOR white]Expiry Date:[/COLOR] '+expiry,'','',icon,fanart,'')
            tools.addDir('[COLOR white]Account Status :[/COLOR] %s'%status,'','',icon,fanart,'')
            tools.addDir('[COLOR white]Current Connections:[/COLOR] '+ active,'','',icon,fanart,'')
            tools.addDir('[COLOR white]Allowed Connections:[/COLOR] '+connects,'','',icon,fanart,'')
            tools.addDir('[COLOR white]Local IP Address:[/COLOR] '+ip,'','',icon,fanart,'')
            tools.addDir('[COLOR white]External IP Address:[/COLOR] '+extip,'','',icon,fanart,'')
            tools.addDir('[COLOR white]Kodi Version:[/COLOR] '+str(KODIV),'','',icon,fanart,'')
    except:
        pass
       
   
def correctPVR():

    addon = xbmcaddon.Addon(user.id)
    username_text = addon.getSetting(id='Username')
    password_text = addon.getSetting(id='Password')
    jsonSetPVR = '{"jsonrpc":"2.0", "method":"Settings.SetSettingValue", "params":{"setting":"pvrmanager.enabled", "value":true},"id":1}'
    IPTVon        = '{"jsonrpc":"2.0","method":"Addons.SetAddonEnabled","params":{"addonid":"pvr.iptvsimple","enabled":true},"id":1}'
    nulldemo   = '{"jsonrpc":"2.0","method":"Addons.SetAddonEnabled","params":{"addonid":"pvr.demo","enabled":false},"id":1}'
    loginurl   = user.host+':'+user.port+"/get.php?username=" + username_text + "&password=" + password_text + "&type=m3u_plus&output=ts"
    EPGurl     = user.host+':'+user.port+"/xmltv.php?username=" + username_text + "&password=" + password_text

    xbmc.executeJSONRPC(jsonSetPVR)
    xbmc.executeJSONRPC(IPTVon)
    xbmc.executeJSONRPC(nulldemo)
   
    moist = xbmcaddon.Addon('pvr.iptvsimple')
    moist.setSetting(id='m3uUrl', value=loginurl)
    moist.setSetting(id='epgUrl', value=EPGurl)
    moist.setSetting(id='m3uCache', value="false")
    moist.setSetting(id='epgCache', value="false")
    xbmc.executebuiltin("Container.Refresh")

def num2day(num):
    if num =="0":
        day = 'monday'
    elif num=="1":
        day = 'tuesday'
    elif num=="2":
        day = 'wednesday'
    elif num=="3":
        day = 'thursday'
    elif num=="4":
        day = 'friday'
    elif num=="5":
        day = 'saturday'
    elif num=="6":
        day = 'sunday'
    return day
   
def extras():
    tools.addDir('Run a Speed Test','ST',10,icon,fanart,'')
    tools.addDir('Clear Cache','CC',10,icon,fanart,'')
   

params=tools.get_params()
url=None
name=None
mode=None
iconimage=None
description=None
query=None
type=None

try:
    url=urllib.unquote_plus(params["url"])
except:
    pass
try:
    name=urllib.unquote_plus(params["name"])
except:
    pass
try:
    iconimage=urllib.unquote_plus(params["iconimage"])
except:
    pass
try:
    mode=int(params["mode"])
except:
    pass
try:
    description=urllib.unquote_plus(params["description"])
except:
    pass
try:
    query=urllib.unquote_plus(params["query"])
except:
    pass
try:
    type=urllib.unquote_plus(params["type"])
except:
    pass

if mode==None or url==None or len(url)<1:
    start()

elif mode==1:
    livecategory(url)
   
elif mode==2:
    Livelist(url)
   
elif mode==3:
    vod(url)
   
elif mode==4:
    stream_video(url)
   
elif mode==5:
    search()
   
elif mode==6:
    accountinfo()
   
elif mode==7:
    tvguide()
   
elif mode==8:
    settingsmenu()
   
elif mode==9:
    xbmc.executebuiltin('ActivateWindow(busydialog)')
    tools.Trailer().play(url)
    xbmc.executebuiltin('Dialog.Close(busydialog)')
   
elif mode==10:
    addonsettings(url,description)
   
elif mode==11:
    pvrsetup()
   
elif mode==12:
    catchup()

elif mode==13:
    tvarchive(name,description)
   
elif mode==14:
    listcatchup2()
   
elif mode==15:
    ivueint()
   
elif mode==16:
    extras()

xbmcplugin.endOfDirectory(int(sys.argv[1]))
Good work thanks a lot
 
Channels MatchTime Unblock CDN Offshore Server Contact
100 cnx / 90€ 5Gbps / 180€ 48CPU-256GRAM 10Gbps 569€ Skype live:giefsl
500 cnx / 350€ 10Gbps / 350€ 48CPU-128GRAM 5Gbps / 349€ TG @changglobize
1000 cnx / 500€ 20Gbps / 700€ 40CPU-128GRAM 20Gbps / €980 http://coronaserver.com
shape1
shape2
shape3
shape4
shape5
shape6
Top
AdBlock Detected

We know, ad-blocking software do a great job at blocking ads. But our site is sponsored by advertising. 

For the best possible site experience please take a moment to disable your AdBlocker.
You can create a Account with us or if you already have account, you can prefer an Account Upgrade.

I've Disabled AdBlock