def __init__(self, database):
     super(Scoreboard, self).__init__()
     if 55 - 55:
         iIiiiI1IiI1I1 - i1.I1i1iI1i * i11Ii11I1Ii1i * o0oOOo0O0Ooo / iIiiiI1IiI1I1
     if 79 - 79: O00oOoOoO0o0O + ooO.OOoO * i11Ii11I1Ii1i % Oo0ooO0oo0oO.i1
     if 94 - 94: II * I1i1iI1i / i11Ii11I1Ii1i.o0oOOo0O0Ooo * II
     self.database = database
     self.selected_program = None
     self.is_future = False
     self.top_list = []
     self.right_list = []
     self.left_list = []
     self.bottom_list = []
     self.score_list = list()
     self.label_list = list()
     self.game_list = list()
     self.league = ''
     iiiii11iII1 = os.path.join(
         xbmc.translatePath(ADDON.getAddonInfo('profile')), "5")
     if os.path.isfile(iiiii11iII1):
         self.team_map = ConfigParser.ConfigParser()
         self.team_map.read(iiiii11iII1)
     else:
         self.team_map = None
         xbmc.log('[%s] Team-Map not found' % ADDON.getAddonInfo('id'),
                  xbmc.LOGERROR)
         if 54 - 54:
             OOoO.OOoO / iIiiiI1IiI1I1 / Oo0ooO0oo0oO + O00oOoOoO0o0O / Ii1I
Beispiel #2
0
def showChangelog(addonID=None):
    try:
        if addonID:
            ADDON = xbmcaddon.Addon(addonID)
        else:
            ADDON = xbmcaddon.Addon(ADDONID)

        text = sfile.read(ADDON.getAddonInfo('changelog'))
        title = '%s - %s' % (xbmc.getLocalizedString(24054),
                             ADDON.getAddonInfo('name'))

        showText(title, text)

    except:
        pass
    def onCachesUpdated(self):

        if ADDON.getSetting('notifications.enabled') == 'true':
            n = notification.Notification(self.database, ADDON.getAddonInfo('path'))
            n.scheduleNotifications()

        self.database.close(None)
def reset_playing():
    path = xbmc.translatePath(ADDON.getAddonInfo('profile'))
    if not os.path.exists(path):
        os.mkdir(path)
    proc_file = os.path.join(path, 'proc')
    f = open(proc_file, 'w')
    f.write('')
    f.close()
def reset_playing():
    path = xbmc.translatePath(ADDON.getAddonInfo('profile'))
    if not os.path.exists(path):
        os.mkdir(path)
    proc_file = os.path.join(path, 'proc')
    f = open(proc_file, 'w')
    f.write('')
    f.close()
Beispiel #6
0
    def fetch_file(self):
        ret_val = self.FETCH_NOT_NEEDED
        fetch = False
        if not os.path.exists(self.file_path):  # always fetch if file doesn't exist!
            fetch = True
        else:
            interval = self.interval  # int(self.addon.getSetting('xmltv.interval'))
            if interval != self.INTERVAL_ALWAYS:
                mod_time = datetime.datetime.fromtimestamp(os.path.getmtime(self.file_path))
                td = datetime.datetime.now() - mod_time
                # need to do it this way cause Android doesn't support .total_seconds() :(
                diff = (td.microseconds + (td.seconds + td.days * 24 * 3600) * 10 ** 6) / 10 ** 6
                if ((interval == self.INTERVAL_2 and diff >= 7200) or
                        (interval == self.INTERVAL_6 and diff >= 21600) or
                        (interval == self.INTERVAL_12 and diff >= 43200) or
                        (interval == self.INTERVAL_24 and diff >= 86400) or
                        (interval == self.INTERVAL_48 and diff >= 172800)):
                    fetch = True
            else:
                fetch = True

        if fetch:
            tmp_file = os.path.join(self.base_path, 'tmp')
            if self.file_type == self.TYPE_REMOTE:
                xbmc.log('[plugin.video.sportsaccess] file is in remote location: %s' % self.file_url,
                         xbmc.LOGDEBUG)
                if not xbmcvfs.copy(self.file_url, tmp_file):
                    xbmc.log(
                        '[plugin.video.sportsaccess] Remote file couldn\'t be copied: %s' % self.file_url,
                        xbmc.LOGERROR)
            else:
                f = open(tmp_file, 'wb')
                xbmc.log('[plugin.video.sportsaccess] file is on the internet', xbmc.LOGDEBUG)
                try:
                    tmp_data = urllib2.urlopen(self.file_url)
                    data = tmp_data.read()
                    if tmp_data.info().get('content-encoding') == 'gzip':
                        data = zlib.decompress(data, zlib.MAX_WBITS + 16)
                    f.write(data)
                except urllib2.URLError as e:
                    xbmc.log('[plugin.video.sportsaccess] Error downloading file: %s' % str(e), xbmc.LOGERROR)
                    if self.show_popup:
                        xbmcgui.Dialog().ok(ADDON.getAddonInfo('name'),
                                            '[COLOR red]Error downloading Guide Data![/COLOR]', str(e))
                    return self.FETCH_ERROR
                f.close()
            if os.path.getsize(tmp_file) > 256:
                if os.path.exists(self.file_path):
                    os.remove(self.file_path)
                os.rename(tmp_file, self.file_path)
                ret_val = self.FETCH_OK
                xbmc.log('[plugin.video.sportsaccess] file %s was downloaded' % self.file_path, xbmc.LOGDEBUG)
            else:
                ret_val = self.FETCH_ERROR
        return ret_val
Beispiel #7
0
def save_setting(key, value, is_list=False):

    xbmc.log(
        '[%s] Tyring to save setting: key "%s" / value "%s"' %
        (ADDON.getAddonInfo('id'), key, str(value)), xbmc.LOGDEBUG)

    file_path = xbmc.translatePath(
        os.path.join(ADDON.getAddonInfo('profile'), 'settings.xml'))
    if not os.path.exists(file_path):
        generate_settings_file(file_path)
    tree = eT.parse(file_path)
    root = tree.getroot()
    updated = False
    for item in root.findall('setting'):
        if item.attrib['id'] == key:
            if is_list:
                cur_values = item.attrib['value']
                if not cur_values:
                    cur_values = []
                else:
                    cur_values = json.loads(cur_values)
                if isinstance(value, list):
                    for val in value:
                        if val not in cur_values:
                            cur_values.append(val)
                else:
                    if value not in cur_values:
                        cur_values.append(value)
                item.attrib['value'] = json.dumps(cur_values)
                ADDON.setSetting(key, cur_values)
            else:
                item.attrib['value'] = value
                ADDON.setSetting(key, value)
            updated = True
    if updated:
        tree.write(file_path)
    return True
def save_setting(key, value, is_list=False):

    xbmc.log('[%s] Tyring to save setting: key "%s" / value "%s"' %
             (ADDON.getAddonInfo('id'), key, str(value)), xbmc.LOGDEBUG)

    file_path = xbmc.translatePath(
        os.path.join(ADDON.getAddonInfo('profile'), 'settings.xml'))
    if not os.path.exists(file_path):
        generate_settings_file(file_path)
    tree = eT.parse(file_path)
    root = tree.getroot()
    updated = False
    for item in root.findall('setting'):
        if item.attrib['id'] == key:
            if is_list:
                cur_values = item.attrib['value']
                if not cur_values:
                    cur_values = []
                else:
                    cur_values = json.loads(cur_values)
                if isinstance(value, list):
                    for val in value:
                        if val not in cur_values:
                            cur_values.append(val)
                else:
                    if value not in cur_values:
                        cur_values.append(value)
                item.attrib['value'] = json.dumps(cur_values)
                ADDON.setSetting(key, cur_values)
            else:
                item.attrib['value'] = value
                ADDON.setSetting(key, value)
            updated = True
    if updated:
        tree.write(file_path)
    return True
def generate_settings_file(target_path):
    source_path = xbmc.translatePath(
        os.path.join(ADDON.getAddonInfo('path'), 'resources', 'settings.xml'))
    root_target = ceT.Element("settings")
    tree_source = eT.parse(source_path)
    root_source = tree_source.getroot()
    for item in root_source.findall('category'):
        for setting in item.findall('setting'):
            if 'id' in setting.attrib:
                value = ''
                if 'default' in setting.attrib:
                    value = setting.attrib['default']
                ceT.SubElement(root_target, 'setting', id=setting.attrib['id'], value=value)
    tree_target = ceT.ElementTree(root_target)
    f = open(target_path, 'w')
    tree_target.write(f)
    f.close()
def generate_settings_file(target_path):
    source_path = xbmc.translatePath(
        os.path.join(ADDON.getAddonInfo('path'), 'resources', 'settings.xml'))
    root_target = ceT.Element("settings")
    tree_source = eT.parse(source_path)
    root_source = tree_source.getroot()
    for item in root_source.findall('category'):
        for setting in item.findall('setting'):
            if 'id' in setting.attrib:
                value = ''
                if 'default' in setting.attrib:
                    value = setting.attrib['default']
                ceT.SubElement(root_target, 'setting', id=setting.attrib['id'], value=value)
    tree_target = ceT.ElementTree(root_target)
    f = open(target_path, 'w')
    tree_target.write(f)
    f.close()
Beispiel #11
0
 def __init__(self):
     self.database = source.Database(False)
     self.database.initialize(self.onInit)
     self.pluginData = xbmc.translatePath(os.path.join('special://profile', 'addon_data', ADDON.getAddonInfo('id')))
Beispiel #12
0
        xbmc.log("[plugin.video.sportsaccess] No username or password configured!",
                 xbmc.LOGWARNING)
        ok = False
    else:
        ok = verify_login(user, passw, False)
    if ok:
        xbmc.log("[plugin.video.sportsaccess] Service now being triggered...", xbmc.LOGNOTICE)
        Service()
    else:
        xbmc.log("[plugin.video.sportsaccess] Service cannot be triggered", xbmc.LOGWARNING)


if __name__ == '__main__':

    # After a restart the proc file should be wiped!
    path = xbmc.translatePath(ADDON.getAddonInfo('profile'))
    if not os.path.exists(path):
        os.mkdir(path)
    f = open(PROC_FILE, 'w')
    f.write('')
    f.close()

    try:
        ADDON = xbmcaddon.Addon('plugin.video.sportsaccess')
        if ADDON.getSetting('autostart') == "true":
            xbmc.executebuiltin("RunAddon(plugin.video.sportsaccess)")

        monitor = xbmc.Monitor()
        xbmc.log("[plugin.video.sportsaccess] Background service started...", xbmc.LOGNOTICE)
        run_service()
Beispiel #13
0
    return int(version[0]), int(version[1])  #major, minor eg, 13.9.902


def GETTEXT(id):
    text = ADDON.getLocalizedString(id)
    name = ADDON.getLocalizedString(30121)

    if name == DISPLAY:
        return text
    text = text.replace(name, DISPLAY)
    return text


ADDONID = 'script.opentvguide'
ADDON = xbmcaddon.Addon(ADDONID)
HOME = ADDON.getAddonInfo('path')
ROOT = ADDON.getSetting('FOLDER')
PROFILE = os.path.join(ROOT, 'Super Favourites')
VERSION = ADDON.getAddonInfo('version')
ICON = os.path.join(HOME, 'icon.png')
FANART = os.path.join(HOME, 'fanart.jpg')
SEARCH = os.path.join(HOME, 'resources', 'media', 'search.png')
DISPLAY = ADDON.getSetting('DISPLAYNAME')
TITLE = GETTEXT(30000)

DEBUG = ADDON.getSetting('DEBUG') == 'true'

KEYMAP_HOT = 'super_favourites_hot.xml'
KEYMAP_MENU = 'super_favourites_menu.xml'

MAJOR, MINOR = GetXBMCVersion()
Beispiel #14
0
class FileFetcher(object):
    INTERVAL_ALWAYS = 0
    INTERVAL_2 = 2
    INTERVAL_6 = 6
    INTERVAL_12 = 12
    INTERVAL_24 = 24
    INTERVAL_48 = 48

    FETCH_ERROR = -1
    FETCH_NOT_NEEDED = 0
    FETCH_OK = 1

    TYPE_DEFAULT = 1
    TYPE_REMOTE = 2

    base_path = xbmc.translatePath(ADDON.getAddonInfo('profile'))
    file_path = ''
    file_url = ''
    addon = None
    file_type = TYPE_DEFAULT

    def __init__(self, file_name, addon, show_popup=True, interval=None):
        self.addon = addon
        self.show_popup = show_popup
        if interval is None:
            interval = self.INTERVAL_2
        self.interval = interval

        if file_name.startswith("http://") or file_name.startswith("sftp://") or file_name.startswith(
                "ftp://") or \
                file_name.startswith("https://") or file_name.startswith(
            "ftps://") or file_name.startswith("smb://") or \
                file_name.startswith("nfs://"):
            self.file_type = self.TYPE_REMOTE
            self.file_url = file_name
            self.file_path = os.path.join(self.base_path, file_name.split('/')[-1])
        else:
            self.file_type = self.TYPE_DEFAULT
            user = addon.getSetting('skyusername')
            passw = addon.getSetting('skypassword')
            data = {'username': user, 'password': passw, 'type': file_name}
            data = urllib.urlencode(data)
            self.file_url = MAIN_URL + '?' + data
            self.file_path = os.path.join(self.base_path, file_name)

        # make sure the folder is actually there already!
        if not os.path.exists(self.base_path):
            os.makedirs(self.base_path)

    def fetch_file(self):
        ret_val = self.FETCH_NOT_NEEDED
        fetch = False
        if not os.path.exists(self.file_path):  # always fetch if file doesn't exist!
            fetch = True
        else:
            interval = self.interval  # int(self.addon.getSetting('xmltv.interval'))
            if interval != self.INTERVAL_ALWAYS:
                mod_time = datetime.datetime.fromtimestamp(os.path.getmtime(self.file_path))
                td = datetime.datetime.now() - mod_time
                # need to do it this way cause Android doesn't support .total_seconds() :(
                diff = (td.microseconds + (td.seconds + td.days * 24 * 3600) * 10 ** 6) / 10 ** 6
                if ((interval == self.INTERVAL_2 and diff >= 7200) or
                        (interval == self.INTERVAL_6 and diff >= 21600) or
                        (interval == self.INTERVAL_12 and diff >= 43200) or
                        (interval == self.INTERVAL_24 and diff >= 86400) or
                        (interval == self.INTERVAL_48 and diff >= 172800)):
                    fetch = True
            else:
                fetch = True

        if fetch:
            tmp_file = os.path.join(self.base_path, 'tmp')
            if self.file_type == self.TYPE_REMOTE:
                xbmc.log('[plugin.video.sportsaccess] file is in remote location: %s' % self.file_url,
                         xbmc.LOGDEBUG)
                if not xbmcvfs.copy(self.file_url, tmp_file):
                    xbmc.log(
                        '[plugin.video.sportsaccess] Remote file couldn\'t be copied: %s' % self.file_url,
                        xbmc.LOGERROR)
            else:
                f = open(tmp_file, 'wb')
                xbmc.log('[plugin.video.sportsaccess] file is on the internet', xbmc.LOGDEBUG)
                try:
                    tmp_data = urllib2.urlopen(self.file_url)
                    data = tmp_data.read()
                    if tmp_data.info().get('content-encoding') == 'gzip':
                        data = zlib.decompress(data, zlib.MAX_WBITS + 16)
                    f.write(data)
                except urllib2.URLError as e:
                    xbmc.log('[plugin.video.sportsaccess] Error downloading file: %s' % str(e), xbmc.LOGERROR)
                    if self.show_popup:
                        xbmcgui.Dialog().ok(ADDON.getAddonInfo('name'),
                                            '[COLOR red]Error downloading Guide Data![/COLOR]', str(e))
                    return self.FETCH_ERROR
                f.close()
            if os.path.getsize(tmp_file) > 256:
                if os.path.exists(self.file_path):
                    os.remove(self.file_path)
                os.rename(tmp_file, self.file_path)
                ret_val = self.FETCH_OK
                xbmc.log('[plugin.video.sportsaccess] file %s was downloaded' % self.file_path, xbmc.LOGDEBUG)
            else:
                ret_val = self.FETCH_ERROR
        return ret_val
 def query_data(self):
     OOoOO00OOO0OO = d_t.datetime.now(pytz.timezone(self.time_zone))
     iI1I111Ii111i = int(OOoOO00OOO0OO.strftime("%Y%m%d"))
     I11IiI1I11i1i = int(OOoOO00OOO0OO.strftime("%H%M"))
     if I11IiI1I11i1i < 400:
         if 38 - 38: Ii1I
         iI1I111Ii111i = int(
             (OOoOO00OOO0OO - d_t.timedelta(days=1)).strftime("%Y%m%d"))
         if 57 - 57: ooOoO / O00oOoOoO0o0O * ooO / I11i.o0
     i1iIIi1 = {'in': [], 'pre': [], 'end': []}
     i11iIIIIIi1 = self.league
     try:
         iiII1i1 = urllib2.urlopen(self.url % (i11iIIIIIi1, iI1I111Ii111i))
         o00oOO0o = iiII1i1.read()
         iiII1i1.close()
         OOO00O = o00oOO0o.replace('shsMSNBCTicker.loadGamesData(',
                                   '').replace(');', '')
         OOoOO0oo0ooO = json.loads(OOO00O)
         for O0o0O00Oo0o0 in OOoOO0oo0ooO.get('games', []):
             O00O0oOO00O00 = Et.XML(O0o0O00Oo0o0)
             if 11 - 11: i11Ii11I1Ii1i.iii1I1I
             if i11iIIIIIi1 == 'EPL':
                 o0oo0oOo = O00O0oOO00O00.find('home-team')
                 o000O0o = O00O0oOO00O00.find('visiting-team')
             else:
                 o0oo0oOo = O00O0oOO00O00.find('visiting-team')
                 o000O0o = O00O0oOO00O00.find('home-team')
             iI1iII1 = O00O0oOO00O00.find('gamestate')
             oO0OOoo0OO = o000O0o.get('nickname')
             O0 = o000O0o.get('alias')
             ii1ii1ii = o000O0o.get('score')
             oooooOoo0ooo = o0oo0oOo.get('nickname')
             I1I1IiI1 = o0oo0oOo.get('alias')
             III1iII1I1ii = o0oo0oOo.get('score')
             oOOo0 = iI1iII1.get('status')
             oo00O00oO = int(
                 time.mktime(
                     time.strptime(
                         '%s %d' % (iI1iII1.get('gametime'), iI1I111Ii111i),
                         '%I:%M %p %Y%m%d')))
             if 23 - 23: OOooOOo + OOooOOo.O0oo0OO0
             if oOOo0 == 'In-Progress':
                 ii1ii11IIIiiI = 'in'
             elif oOOo0 == 'Pre-Game':
                 ii1ii11IIIiiI = 'pre'
             else:
                 ii1ii11IIIiiI = 'end'
             i1iIIi1[ii1ii11IIIiiI].append({
                 'league':
                 i11iIIIIIi1.upper(),
                 'orig-start':
                 oo00O00oO,
                 'start':
                 self._to_local_time(oo00O00oO).strftime("%I:%M %p").lstrip(
                     '0'),
                 'home':
                 oO0OOoo0OO,
                 'home-alias':
                 O0.upper(),
                 'home-guide':
                 self._get_mapped_team(i11iIIIIIi1, O0.upper()),
                 'away':
                 oooooOoo0ooo,
                 'away-alias':
                 I1I1IiI1.upper(),
                 'away-guide':
                 self._get_mapped_team(i11iIIIIIi1, I1I1IiI1.upper()),
                 'home-score':
                 ii1ii1ii,
                 'away-score':
                 III1iII1I1ii,
                 'status':
                 oOOo0,
                 'clock':
                 iI1iII1.get('display_status1'),
                 'clock-section':
                 iI1iII1.get('display_status2')
             })
     except Exception, O00OOOoOoo0O:
         xbmc.log(
             "[%s] ERROR: %s" %
             (ADDON.getAddonInfo('id'), O00OOOoOoo0O.message),
             xbmc.LOGERROR)
         if 77 - 77: II % II * O00oOoOoO0o0O - i11iIiiIii
 def __new__(cls, database):
     return super(Scoreboard, cls).__new__(cls,
                                           'script-tvguide-scoreboard.xml',
                                           ADDON.getAddonInfo('path'), OO0o)
     if 1 - 1: o0 - iii1I1I % i11iIiiIii + i11Ii11I1Ii1i.ooO