def DownloadSkins():
    url = dixie.GetExtraUrl() + 'resources/skins-05-08-2014.zip'

    try:
        os.makedirs(skinfolder)
    except:
        pass

    download.download(url, dest)
    extract.all(dest, extras)
    dixie.SetSetting('SKINVERSION', SKINVERSION)

    try:
        os.remove(dest)
    except:
        pass
示例#2
0
def CheckVersion():
    prev = ADDON.getSetting('VERSION')
    curr = VERSION

    if prev == curr:
        return

    if prev == '0.0.0':
        d = xbmcgui.Dialog()
        d.ok(
            TITLE + ' - ' + VERSION,
            'For updates, channel status and support...',
            '[COLOR FF00FF00]www.tvguidedixie.com[/COLOR] or [COLOR FF00FF00]@DixieDean69[/COLOR]',
            'Thank you for using TV Guide Dixie. Enjoy.')

    dixie.SetSetting('VERSION', curr)
示例#3
0
def restoreSettings():
    udata = xbmc.translatePath('special://profile/')
    path = dixie.PROFILE
    dst = os.path.join(path, ORIGINAL)
    src = os.path.join(udata, BACKUP)

    if not sfile.exists(src):
        return backupSettings()

    try:
        sfile.remove(dst)
        sfile.copy(src, dst)
        dixie.SetSetting('validator', 1)
        xbmc.sleep(500)
    except Exception, e:
        pass
    def isUpdated(self, channelsLastUpdated, programsLastUpdated):
        zero = datetime.datetime.fromtimestamp(0)
        if channelsLastUpdated is None or channelsLastUpdated == zero:
            return True

        current = int(dixie.GetSetting('current.channels'))
        update = int(dixie.GetSetting('updated.channels'))

        #dixie.log('current = %d' % current)
        #dixie.log('update  = %d' % update)

        if update == -1:
            dixie.SetSetting('updated.channels', current)
            return True

        return current != update
def CheckVersion():
    prev = dixie.GetSetting('VERSION')
    curr = VERSION
    dixie.log('****** On-Tapp.EPG %s LAUNCHED ******' % str(VERSION))

    if prev == curr:
        return

    dixie.SetSetting('VERSION', curr)

    if not dixie.isDSF():
        dixie.DialogOK(
            'Welcome to On-Tapp.TV 3.0',
            'For online support, please register at our new forum:',
            'www.on-tapp-networks.com/forum')
        showChangelog()
示例#6
0
def miniGuide():
    try:
        install_file(filename)

        passed = (sfile.exists(file))

        if passed:
            dixie.log('Installing Mini-Guide Plugin...PASSED')
        else:
            dixie.log('Installing Mini-Guide Plugin...FAILED')

        dixie.SetSetting('MINIGUIDE', 'true')

        return passed

    except Exception, e:
        dixie.log('Installing Mini-Guide Plugin...EXCEPTION %s' % str(e))
示例#7
0
def newEPGAvailable():
    date = xbmcgui.Window(10000).getProperty('TVDIXIE_UPDATE')

    dir = xbmc.translatePath(ADDON.getAddonInfo('profile'))
    deleteFile(os.path.join(dir, 'program.db'))

    dst = os.path.join(dir, 'program.db')
    src = os.path.join(dir, 'program-XXXXXX.db')
    src = src.replace('XXXXXX', date)

    try:
        os.rename(src, dst)
    except:
        pass

    dixie.SetSetting('epg.date', date)

    xbmcgui.Window(10000).clearProperty('TVDIXIE_UPDATE')
示例#8
0
def play(url, windowed, name=None):
    
    getIdle = int(ADDON.getSetting('idle').replace('Never', '0'))
    maxIdle = getIdle * 60 * 60
 
    if (url.startswith('__SF__')) or ('plugin://plugin.program.super.favourites' in url.lower()):
        handled, url = playSF(url)

        if handled:            
            return        
 
    dixie.loadKepmap()
    # dixie.ShowBusy()
    
    if url.lower().startswith('plugin://plugin.video.skygo'):
        xbmc.executebuiltin('XBMC.RunPlugin(%s)' % url)
        return
 
    dixie.SetSetting('streamURL', url)
 
    if not checkForAlternateStreaming(url):
        item = url
        if name:
            item     = xbmcgui.ListItem(name, thumbnailImage=ICON)
            playlist = xbmc.PlayList(xbmc.PLAYLIST_VIDEO)
            playlist.clear()
            playlist.add(url, item)
            item = playlist
 
        # dixie.CloseBusy()
        xbmc.Player().play(item, windowed=windowed)
 
        xbmc.sleep(1000)
        if not xbmc.Player().isPlaying():
            # dixie.CloseBusy()
            xbmc.executebuiltin('XBMC.RunPlugin(%s)' % url)
 
    while xbmc.Player().isPlaying():
        # dixie.CloseBusy()
        xbmc.sleep(1000)
        CheckIdle(maxIdle)
示例#9
0
def updateAvailable(latest):
    dir    = datapath
    folder = os.path.join(dir, 'channels')

    files = []
    try:    current, dirs, files = os.walk(folder).next()
    except: pass

    if len(files) == 0:
        dixie.SetSetting('updated.channels', -1) #force refresh of channels
        return True

    db  = os.path.join(dir, 'program.db')
    if not os.path.exists(db):
        return True

    current = dixie.GetSetting('epg.date')
    current = parseDate(current)
    latest  = parseDate(latest)
    update  = latest > current
    return update
示例#10
0
    def _initializeS(self, cancel_requested_callback):
        BUILTIN = '0'
        CUSTOM = '1'

        logoFolder = GetLogoFolder()
        logoType = GetLogoType()

        if logoType == CUSTOM:
            logoPath = ''
        else:
            logoPath = 'special://profile/addon_data/script.tvguidedixie/extras/logos/'

        dixie.log('Logo Path Setting:   %s' % logoPath)
        dixie.log('Logo Folder Setting: %s' % logoFolder)
        dixie.log('Logo Type:           %s' % logoType)

        prevLogoFolder = dixie.GetSetting('PREVLOGO')
        currLogoFolder = logoFolder

        if currLogoFolder == prevLogoFolder:
            return True

        channels = self.getAllChannels()

        for ch in channels:
            channel = self.getChannelFromFile(ch)

            if channel == None:
                continue

            logoFile = os.path.join(logoPath, logoFolder,
                                    channel.title + '.png')
            channel.logo = logoFile

            self.replaceChannel(channel)

        dixie.SetSetting('PREVLOGO', logoFolder)
        return True
示例#11
0
extras      = os.path.join(datapath, 'extras')
logos       = os.path.join(extras, 'logos')
logofolder  = os.path.join(logos, 'None')
skinfolder  = os.path.join(extras, 'skins')
skin        = ADDON.getSetting('dixie.skin')
dest        = os.path.join(skinfolder, 'skins-12-06-2014.zip')
addonpath   = os.path.join(ADDON.getAddonInfo('path'), 'resources')
default_ini = os.path.join(addonpath, 'addons.ini')
local_ini   = os.path.join(addonpath, 'local.ini')
current_ini = os.path.join(datapath, 'addons.ini')
database    = os.path.join(datapath, 'program.db')
username    = ADDON.getSetting('username')
password    = ADDON.getSetting('password')


dixie.SetSetting('gmtfrom', 'GMT')
dixie.SetSetting('dixie.url', 'All Channels')
dixie.SetSetting('DIXIEURL', 'All Channels')



print '****** ONTAPP.TV %s LAUNCHED ******' % str(versioninfo)

try:
    os.makedirs(logofolder)
    
    if not os.path.exists(skinfolder):
        DownloadSkins()
except:
    pass
示例#12
0
def play(url, windowed, name=None):
    handled = False

    getIdle = int(ADDON.getSetting('idle').replace('Never', '0'))
    maxIdle = getIdle * 60 * 60

    dixie.SetSetting('streamURL', url)

    if 'tv/play_by_name_only_guide/' in url or 'movies/play_by_name_guide' in url or 'tv/play_by_name_guide/' in url:
        dixie.removeKepmap()
        xbmc.executebuiltin('XBMC.ActivateWindow(10025,%s)' % url)
        #        while not xbmc.Player().isPlaying():
        #            xbmc.sleep(1000)
        CheckIdle(maxIdle)
#        xbmc.sleep(2000)
#        wait(maxIdle)
#        dixie.loadKepmap()

    else:
        dixie.loadKepmap()
        # dixie.ShowBusy()

        if url.startswith('HDTV'):
            import hdtv
            delay = 5
            stream = hdtv.getURL(url)

            if not playAndWait(stream, windowed, maxIdle, delay=delay):
                dixie.SetSetting('LOGIN_HDTV', '2001-01-01 00:00:00')
                stream = hdtv.getURL(url)
                playAndWait(stream, windowed, maxIdle, delay=delay)
            return

        if url.startswith('IPLAY'):
            import iplayer
            stream = iplayer.getURL(url)
            playAndWait(stream, windowed, maxIdle)
            return

        if url.startswith('IPTV:'):
            import iptv
            url = iptv.getURL(url)
            dixie.log(url)
            xbmc.executebuiltin('XBMC.RunPlugin(%s)' % url)
            return

        if url.startswith('UKTV'):
            import uktv
            stream = uktv.getURL(url)
            dixie.log(stream)
            playAndWait(stream, windowed, maxIdle)
            return

        if url.isdigit():
            command = (
                '{"jsonrpc": "2.0", "id":"1", "method": "Player.Open","params":{"item":{"channelid":%s}}}'
                % url)
            xbmc.executeJSONRPC(command)
            return

        if (url.startswith('__SF__')) or (
                'plugin://plugin.program.super.favourites' in url.lower()):
            handled, url = playSF(url)
            if handled:
                return

        if not checkForAlternateStreaming(url):
            playAndWait(url, windowed, maxIdle)

            xbmc.sleep(3000)
            if not xbmc.Player().isPlaying():
                # dixie.CloseBusy()
                xbmc.executebuiltin('XBMC.RunPlugin(%s)' % url)
                wait(maxIdle)
示例#13
0
def play(url, windowed, name=None):
    handled = False

    getIdle = int(ADDON.getSetting('idle').replace('Never', '0'))
    maxIdle = getIdle * 60 * 60

    dixie.SetSetting('streamURL', url)

    if 'tv/play_by_name_only_guide/' in url or 'movies/play_by_name_guide' in url or 'tv/play_by_name_guide/' in url:
        dixie.removeKepmap()
        xbmc.executebuiltin('XBMC.ActivateWindow(10025,%s)' % url)
        CheckIdle(maxIdle)

    else:
        dixie.loadKepmap()

        if url.startswith('HDTV'):
            import hdtv
            delay = 5
            stream = hdtv.getURL(url)

            if not playAndWait(stream, windowed, maxIdle, delay=delay):
                dixie.SetSetting('LOGIN_HDTV', '2001-01-01 00:00:00')
                stream = hdtv.getURL(url)
                playAndWait(stream, windowed, maxIdle, delay=delay)
            return

        if url.startswith('IPLAY'):
            import iplayer
            stream = iplayer.getURL(url)
            playAndWait(stream, windowed, maxIdle)
            return

        if url.startswith('IPTV:'):
            import iptv
            url = iptv.getURL(url)
            dixie.log(url)
            xbmc.executebuiltin('XBMC.RunPlugin(%s)' % url)
            return

        if url.startswith('UKTV'):
            import uktv
            stream = uktv.getURL(url)
            dixie.log(stream)
            playAndWait(stream, windowed, maxIdle)
            return

        if url.isdigit():
            command = (
                '{"jsonrpc": "2.0", "id":"1", "method": "Player.Open","params":{"item":{"channelid":%s}}}'
                % url)
            xbmc.executeJSONRPC(command)
            return

        if (url.startswith('__SF__')) or (
                'plugin://plugin.program.super.favourites' in url.lower()):
            handled, url = playSF(url)
            if handled:
                return

        if not checkForAlternateStreaming(url):
            my_playback = koding.Play_Video(url)
            if not my_playback:
                if CLEAN_STREAMS == 'true':
                    clean_ini(url)
            koding.Notify(title='PLAYBACK FAILED',
                          message='Please try another link',
                          duration=5000)
示例#14
0
    dixie.log('Response in message._check %s' % str(response))

    response = json.loads(u"" + (response))

    try:
        currentID = dixie.GetSetting('messageID')
        currentID = float(currentID)
    except Exception, e:
        currentID = 0

    newID = float(response['ID'])

    if newID <= currentID:
        return False

    dixie.SetSetting('messageID', str(newID))

    live = parseDate(response['Live'])
    expires = parseDate(response['Expires'])

    now = datetime.datetime.now()

    if live > now:
        return False

    if now > expires:
        return False

    try:
        title = response['Title']
    except:
def play(url, windowed, name=None):
    dixie.SetSetting('streamURL', url)
    handled = False

    getIdle = int(ADDON.getSetting('idle').replace('Never', '0'))
    maxIdle = getIdle * 60 * 60

    dixie.loadKepmap()

    if url.startswith('HDTV'):
        import hdtv
        delay = 5
        stream = hdtv.getURL(url)

        if not playAndWait(stream, windowed, maxIdle, delay=delay):
            dixie.SetSetting('LOGIN_HDTV', '2001-01-01 00:00:00')
            stream = hdtv.getURL(url)
            playAndWait(stream, windowed, maxIdle, delay=delay)
        return

    if url.startswith('IPLAYD'):
        import iplayer
        stream = iplayer.getURL(url)
        dixie.log(stream)
        xbmc.executebuiltin('XBMC.RunPlugin(%s)' % stream)
        return

    if url.startswith('IPLAY'):
        import iplayer
        stream = iplayer.getURL(url)
        playAndWait(stream, windowed, maxIdle)
        return

    if url.startswith('LIVETV'):
        import livetv
        stream = livetv.getLIVETV(url)
        dixie.log(stream)
        playAndWait(stream, windowed, maxIdle)
        return

    if url.startswith('IPTV'):
        import iptv
        url = iptv.getURL(url)
        dixie.log(url)
        xbmc.executebuiltin('XBMC.RunPlugin(%s)' % url)
        return

    if url.isdigit():
        command = (
            '{"jsonrpc": "2.0", "id":"1", "method": "Player.Open","params":{"item":{"channelid":%s}}}'
            % url)
        xbmc.executeJSONRPC(command)
        return

    if (url.startswith('__SF__')) or (
            'plugin://plugin.program.super.favourites' in url.lower()):
        handled, url = playSF(url)
        if handled:
            return

    if url.lower().startswith('dsf'):
        if playDSF(url, windowed):
            wait(maxIdle)
        return

    # if url.lower().startswith('upnp:'):
    #     playAndWait(url, windowed, maxIdle)
    #     return

    if not checkForAlternateStreaming(url):
        playAndWait(url, windowed, maxIdle)

        xbmc.sleep(3000)
        if not xbmc.Player().isPlaying():
            xbmc.executebuiltin('XBMC.RunPlugin(%s)' % url)
            wait(maxIdle)
示例#16
0
        #if generateMD5(path) != md5:
        #    deleteFile(path)
        #    return False

        zip = path
        dst = xbmc.translatePath(ADDON.getAddonInfo('profile'))

        import dxmnew
        dxmnew.unzipAndMove(zip, dst, None)

        try:
            deleteFile(zip)
        except:
            pass

    dixie.SetSetting('updated.channels', channel)

    xbmcgui.Window(10000).setProperty('TVDIXIE_UPDATE', date)

    if xbmcgui.Window(10000).getProperty('TVDIXIE_RUNNING') == 'True':
        return

    newEPGAvailable()

    if not silent:
        ok(TITLE, '', 'EPG successfully updated.', '')


def newEPGAvailable():
    date = xbmcgui.Window(10000).getProperty('TVDIXIE_UPDATE')
示例#17
0
def resetAddon():
    deleteFiles()
    dixie.SetSetting('epg.date', '2000-01-01')
    dixie.SetSetting('logo.type', '0')
    dixie.SetSetting('dixie.logo.folder', 'None')
    dixie.CloseBusy()
示例#18
0
def l1ll11111(l1ll111l1):
    now = datetime.datetime.today()
    dixie.SetSetting(l1ll111l1, str(now))
示例#19
0
DIXIEURL = dixie.GetSetting('dixie.url').upper()
DIXIELOGOS = dixie.GetSetting('dixie.logo.folder')
GMTOFFSET = dixie.GetGMTOffset()

datapath = xbmc.translatePath(
    'special://profile/addon_data/script.tvguidedixie/')
channelPath = os.path.join(datapath, 'channels')
extras = os.path.join(datapath, 'extras')
logopath = os.path.join(extras, 'logos')
username = ADDON.getSetting('username')
password = ADDON.getSetting('password')

LOGOCHANGED = DIXIELOGOS != ADDON.getSetting('PREVLOGO')

if LOGOCHANGED:
    dixie.SetSetting('PREVLOGO', DIXIELOGOS)

try:
    os.makedirs(channelPath)
except:
    pass

settingsFile = os.path.join(xbmc.translatePath(ADDON.getAddonInfo('profile')),
                            'settings.cfg')

USE_DB_FILE = True

if len(DIXIELOGOS):
    logos = os.path.join(logopath, DIXIELOGOS)
else:
    logos = dixie.SetSetting('dixie.logo.folder', 'None')
示例#20
0
extras = os.path.join(datapath, 'extras')
logos = os.path.join(extras, 'logos')
logofolder = os.path.join(logos, 'None')
skinfolder = os.path.join(extras, 'skins')
skin = ADDON.getSetting('dixie.skin')
dest = os.path.join(skinfolder, 'skins-28-04-2014.zip')
addonpath = os.path.join(ADDON.getAddonInfo('path'), 'resources')
default_ini = os.path.join(addonpath, 'addons.ini')
local_ini = os.path.join(addonpath, 'local.ini')
current_ini = os.path.join(datapath, 'addons.ini')
database = os.path.join(datapath, 'program.db')
username = ADDON.getSetting('username')
password = ADDON.getSetting('password')

if ADDON.getSetting('dixie.url') == 'G-Box Midnight MX2':
    dixie.SetSetting('dixie.url', 'Dixie')

dixie.SetSetting('gmtfrom', 'GMT')
dixie.SetSetting('autoStart', 'false')

print '****** ONTAPP.TV LAUNCHED ******'
print versioninfo

try:
    os.makedirs(logofolder)

    if not os.path.exists(skinfolder):
        DownloadSkins()
except:
    pass
示例#21
0
    def _updateChannelAndProgramListCaches(self, date, progress_callback,
                                           clearExistingProgramList):
        sqlite3.register_adapter(datetime.datetime, self.adapt_datetime)
        sqlite3.register_converter('timestamp', self.convert_datetime)

        if not self._isCacheExpired(date):
            return

        self.updateInProgress = True
        self.updateFailed = False
        dateStr = date.strftime('%Y-%m-%d')

        try:
            xbmc.log('[script.tvguidedixie] Updating caches...', xbmc.LOGDEBUG)
            if progress_callback:
                progress_callback(0)

            if self.settingsChanged:
                self.source.doSettingsChanged()

            self.settingsChanged = False  # only want to update once due to changed settings

            toDelete = self.getAllChannels()

            weight = 0

            imported = imported_channels = imported_programs = 0
            for item in self.source.getDataFromExternal(
                    date, progress_callback):
                imported += 1

                if isinstance(item, Channel):
                    imported_channels += 1
                    channel = item

                    clean = CleanFilename(channel.id)
                    if clean in toDelete:
                        toDelete.remove(clean)

                    weight += 1
                    channel.weight = weight
                    self.addChannel(channel)

            #channels updated
            try:
                settings.set('ChannelsUpdated',
                             self.adapt_datetime(datetime.datetime.now()),
                             settingsFile)
            except:
                pass

            # for id in toDelete:
            #     self.removeCleanChannel(id)

            if imported_channels == 0:
                self.updateFailed = True
            if imported_programs == 0:
                self.updateFailed = (not USE_DB_FILE)

        except SourceUpdateCanceledException:
            # force source update on next load
            try:
                settings.set('ChannelsUpdated', 0, settingsFile)
            except:
                pass

        except Exception:
            import traceback as tb
            import sys
            (etype, value, traceback) = sys.exc_info()
            tb.print_exception(etype, value, traceback)

            try:
                # invalidate cached data
                try:
                    settings.set('ChannelsUpdated', 0, settingsFile)
                except:
                    pass

            except:
                pass

            self.updateFailed = True
        finally:
            update = dixie.GetSetting('updated.channels')
            if int(update) < 0:
                dixie.SetSetting('updated.channels', 0)
                dixie.SetSetting('current.channels', 0)
            else:
                dixie.SetSetting('current.channels', update)
                self.channelDict = {}
                self.updateInProgress = False
示例#22
0
extras      = os.path.join(datapath, 'extras')
logos       = os.path.join(extras, 'logos')
logofolder  = os.path.join(logos, 'None')
skinfolder  = os.path.join(extras, 'skins')
skin        = ADDON.getSetting('dixie.skin')
dest        = os.path.join(skinfolder, 'skins-12-06-2014.zip')
addonpath   = os.path.join(ADDON.getAddonInfo('path'), 'resources')
default_ini = os.path.join(addonpath, 'addons.ini')
local_ini   = os.path.join(addonpath, 'local.ini')
current_ini = os.path.join(datapath, 'addons.ini')
database    = os.path.join(datapath, 'program.db')
username    = ADDON.getSetting('username')
password    = ADDON.getSetting('password')

if ADDON.getSetting('dixie.url') == 'G-Box Midnight MX2':
    dixie.SetSetting('dixie.url', 'Dixie')

dixie.SetSetting('gmtfrom', 'GMT')


print '****** ONTAPP.TV LAUNCHED ******'
print versioninfo


try:
    os.makedirs(logofolder)
    
    if not os.path.exists(skinfolder):
        DownloadSkins()
except:
    pass
示例#23
0
def ResetMessage():
    dixie.SetSetting('messageID', '0.0')
示例#24
0
def main(doLogin=True):
    busy = None
    try:
        busy = xbmcgui.WindowXMLDialog('DialogBusy.xml', '')
        busy.show()

        try:    busy.getControl(10).setVisible(False)
        except: pass

    except:
        busy = None

    import buggalo
    import gui

    buggalo.GMAIL_RECIPIENT = '*****@*****.**'
        
    try:
        if doLogin:
            url      = dixie.GetDixieUrl(DIXIEURL) + 'update.txt'
            code     = session.doLogin()
            response = session.checkFiles(url)
        else:
            code = 200
            response = ''
            
        if code == 503:
            d = xbmcgui.Dialog()
            d.ok(TITLE + ' Error', 'OnTapp.TV failed with error code - %s.' % code, 'Something went wrong with your login', 'Please check your settings.')
            d.ok(TITLE + ' Error', 'OnTapp.TV failed with error code - %s.' % code, 'Daily IP Address limit reached.', 'Restricted for 2 hours.')
            return
        
        if response == 401:
            d = xbmcgui.Dialog()
            d.ok(TITLE + ' Error', 'OnTapp.TV failed with error code - %s.' % response, 'Something went wrong with your login', 'You will now get Basic Channels.')
            d.ok(TITLE + ' Error - %s.' % response, 'OnTapp.TV failed to log in', 'Check your settings.', 'Please subscribe at www.on-tapp.tv.')
            dixie.SetSetting('dixie.url', 'Basic Channels')
            dixie.SetSetting('DIXIEURL', 'Basic Channels')
            return
            
        else:
            # if doLogin:
            #     xbmcgui.Dialog().ok(TITLE + ' Status', 'Status - %s' % response, 'Login OK.', 'Thank you.')
            CheckDixieURL()
            CheckVersion()
            GetCats()
            CheckSkin()
            CheckSkinVersion()
            CheckIniVersion()
            CheckForUpdate()
        
            xbmcgui.Window(10000).setProperty('OTT_RUNNING', 'True')
            xbmc.executebuiltin('XBMC.ActivateWindow(home)')
        
            w = gui.TVGuide()
        
            if busy:
               busy.close()
               busy = None
           
            CopyKeymap()
            w.doModal()
            RemoveKeymap()
            del w
        
            xbmcgui.Window(10000).clearProperty('OTT_RUNNING')

    except Exception:
       buggalo.onExceptionRaised()