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
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)
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()
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))
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')
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)
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
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
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
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)
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)
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)
#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')
def resetAddon(): deleteFiles() dixie.SetSetting('epg.date', '2000-01-01') dixie.SetSetting('logo.type', '0') dixie.SetSetting('dixie.logo.folder', 'None') dixie.CloseBusy()
def l1ll11111(l1ll111l1): now = datetime.datetime.today() dixie.SetSetting(l1ll111l1, str(now))
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')
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
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
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
def ResetMessage(): dixie.SetSetting('messageID', '0.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()