Exemplo n.º 1
0
 def __new__(cls):
     if xbmc.getFreeMem() == long():
         KodiLogger.kodirunning = False
     if KodiLogger._instance is None:
         with KodiLogger._lock:
             if KodiLogger._instance is None:
                 KodiLogger._instance = super(KodiLogger, cls).__new__(cls)
     return KodiLogger._instance
Exemplo n.º 2
0
 def __new__(cls):
     if xbmc.getFreeMem() == long():
         KodiLogger.kodirunning = False
     if KodiLogger._instance is None:
         with KodiLogger._lock:
             if KodiLogger._instance is None:
                 KodiLogger._instance = super(KodiLogger, cls).__new__(cls)
     return KodiLogger._instance
Exemplo n.º 3
0
def LOG( status, format, *args ):
    try:
        dwAvailPhys = str( long( xbmc.getFreeMem() * 1024.0 * 1024.0 ) )
    except:
        dwAvailPhys = "?"
    status = ( "ERROR", "INFO", "NOTICE", "DEBUG", "WARNING", )[ status - 1 ]
    _pre_line_ = "%s M: %s %s: " % ( time.strftime( "%X" ), dwAvailPhys, status.rjust( 7 ), )
    _write_line_ = "%s\n" % ( format % args, )
    file( LOG_SCRIPT, "a" ).write( _pre_line_ + _write_line_ )
    if ( DEBUG_MODE >= status ):
        xbmc.output( _write_line_.strip( "\n" ) )
Exemplo n.º 4
0
    def run(self):
        ''' Prepare the request. Request removes the urlencode which is required in this case.
            Use a session allows to use a pool of connections.
        '''
        monitor = xbmc.Monitor()

        with requests.Session() as s:

            while True:
                memory_available = xbmc.getFreeMem()

                if memory_available < 650:  # seems going lower causes instabilities in Kodi

                    if monitor.waitForAbort(2):
                        LOG.info("[ exited artwork/%s ]", id(self))

                        break

                    continue

                try:
                    url = self.queue.get(timeout=2)
                except Queue.Empty:

                    self.threads.remove(self)
                    LOG.info("--<[ q:artwork/%s ]", id(self))

                    return

                try:
                    req = requests.Request(
                        method='HEAD',
                        url="http://%s:%s/image/image://%s" %
                        (self.kodi['host'], self.kodi['port'], url),
                        auth=(self.kodi['username'], self.kodi['password']))
                    prep = req.prepare()
                    prep.url = "http://%s:%s/image/image://%s" % (
                        self.kodi['host'], self.kodi['port'], url)
                    s.send(prep, timeout=(0.01, 0.01))
                    s.content  # release the connection
                except Exception:
                    pass

                self.queue.task_done()

                if window('emby_should_stop.bool'):
                    LOG.info("[ exited artwork/%s ]", id(self))

                    break
Exemplo n.º 5
0
def LOG(status, format, *args):
    try:
        dwAvailPhys = str(long(xbmc.getFreeMem() * 1024.0 * 1024.0))
    except:
        dwAvailPhys = "?"
    status = (
        "ERROR",
        "INFO",
        "NOTICE",
        "DEBUG",
        "WARNING",
    )[status - 1]
    _pre_line_ = "%s M: %s %s: " % (
        time.strftime("%X"),
        dwAvailPhys,
        status.rjust(7),
    )
    _write_line_ = "%s\n" % (format % args, )
    file(LOG_SCRIPT, "a").write(_pre_line_ + _write_line_)
    if (DEBUG_MODE >= status):
        xbmc.output(_write_line_.strip("\n"))
Exemplo n.º 6
0
    def _get(self, key):
        if key == 'lang':
            return xbmc.getLanguage()

        elif key == 'langname':
            langname = xbmc.getLanguage()
            if langname.find('Oromo') != -1:
                langname = 'Oromo'
            else:
                for tag in (' (', ';', ','):
                    i = langname.find(tag)
                    if i != -1:
                        langname = langname[0:i]
                        break
            try:
                LANGCODE[langname]
            except KeyError:
                return 'English'
            else:
                return langname

        elif key == 'langcode':
            return LANGCODE[self._get('langname')]

        elif key == 'dvd':
            state = {0: 'open', 1: 'notready', 2: 'ready', 3: 'empty', 4: 'present', 5: None}
            return state[xbmc.getDVDState()]

        elif key == 'mem':
            return xbmc.getFreeMem() # MB

        elif key == 'time':
            return xbmc.getGlobalIdleTime()

        elif key == 'skin':
            return xbmc.getSkinDir()

        elif key == 'ip':
            return xbmc.getIPAddress()

        elif key == 'platform':
            if self._platform == -1:
                for platform in ('linux', 'windows', 'android', 'atv2', 'ios', 'osx'):
                    if xbmc.getCondVisibility('system.platform.' + platform):
                        self._platform = platform
                        break
                else:
                    self._platform = None
            return self._platform

        elif key == 'is_64bits':
            return sys.maxsize > 2**32

        elif key == 'support':
            if not self._support['all']:
                for src, dst in (('video', 'video'), ('music', 'audio'), ('picture', 'picture')):
                    self._support[dst] = [x[1:] for x in xbmc.getSupportedMedia(src).split('|')]
                    self._support['all'].extend(self._support[dst])
            return self._support

        elif key == 'region':
            if not self._region:
                for tag in ('dateshort', 'datelong', 'time', 'meridiem', 'tempunit', 'speedunit'):
                    self._region[tag] = xbmc.getRegion(tag)
            return self._region

        else:
            raise AttributeError, key
Exemplo n.º 7
0
except ImportError:
    import xml.etree.ElementTree as ET


def logprint(msg='', level=0):
    if msg != '' and level > -1:
        print msg


try:
    import xbmc
    import xbmcaddon
except ImportError:
    NOXBMC = True
else:
    if xbmc.getFreeMem() == long(0):
        NOXBMC = True
    else:
        NOXBMC = False
if NOXBMC:
    log = logprint
else:
    log = xbmc.log


class KodiPo(object):
    """
    Main class for retrieving localized strings.
    Implemented as singleton
    """
    _instance = None
Exemplo n.º 8
0
except ImportError:
    import xml.etree.ElementTree as ET


def logprint(msg='', level=0):
    if msg != '' and level > -1:
        print(msg)


try:
    import xbmc
    import xbmcaddon
except ImportError:
    NOXBMC = True
else:
    if xbmc.getFreeMem() == int(0):
        NOXBMC = True
    else:
        NOXBMC = False
if NOXBMC:
    log = logprint
else:
    log = xbmc.log


class KodiPo(object):
    """
    Main class for retrieving localized strings.
    Implemented as singleton
    """
    _instance = None
Exemplo n.º 9
0
    def _get(self, key):
        if key == 'lang':
            return xbmc.getLanguage()

        elif key == 'langname':
            langname = xbmc.getLanguage()
            if langname.find('Oromo') != -1:
                langname = 'Oromo'
            else:
                for tag in (' (', ';', ','):
                    i = langname.find(tag)
                    if i != -1:
                        langname = langname[0:i]
                        break
            try:
                LANGCODE[langname]
            except KeyError:
                return 'English'
            else:
                return langname

        elif key == 'langcode':
            return LANGCODE[self._get('langname')]

        elif key == 'dvd':
            state = {
                0: 'open',
                1: 'notready',
                2: 'ready',
                3: 'empty',
                4: 'present',
                5: None
            }
            return state[xbmc.getDVDState()]

        elif key == 'mem':
            return xbmc.getFreeMem()  # MB

        elif key == 'time':
            return xbmc.getGlobalIdleTime()

        elif key == 'skin':
            return xbmc.getSkinDir()

        elif key == 'ip':
            return xbmc.getIPAddress()

        elif key == 'platform':
            if self._platform == -1:
                for platform in ('linux', 'windows', 'android', 'atv2', 'ios',
                                 'osx'):
                    if xbmc.getCondVisibility('system.platform.' + platform):
                        self._platform = platform
                        break
                else:
                    self._platform = None
            return self._platform

        elif key == 'is_64bits':
            return sys.maxsize > 2**32

        elif key == 'support':
            if not self._support['all']:
                for src, dst in (('video', 'video'), ('music', 'audio'),
                                 ('picture', 'picture')):
                    self._support[dst] = [
                        x[1:] for x in xbmc.getSupportedMedia(src).split('|')
                    ]
                    self._support['all'].extend(self._support[dst])
            return self._support

        elif key == 'region':
            if not self._region:
                for tag in ('dateshort', 'datelong', 'time', 'meridiem',
                            'tempunit', 'speedunit'):
                    self._region[tag] = xbmc.getRegion(tag)
            return self._region

        else:
            raise AttributeError, key