Ejemplo n.º 1
0
 def _discover_devices(self):
     holder = pulseaudio_dlna.renderers.RendererHolder(self.PLUGINS)
     discover = pulseaudio_dlna.discover.RendererDiscover(holder)
     discover.search()
     logger.info("Found the following devices:")
     for udn, device in holder.renderers.iteritems():
         logger.info('  - "{name}" ({flavour})'.format(name=device.name, flavour=device.flavour))
     return holder.renderers.values()
Ejemplo n.º 2
0
    def create_device_config(self, update=False):
        holder = pulseaudio_dlna.renderers.RendererHolder(self.PLUGINS)
        discover = pulseaudio_dlna.discover.RendererDiscover(holder)
        discover.search()

        def device_filter(obj):
            if hasattr(obj, 'to_json'):
                return obj.to_json()
            else:
                return obj.__dict__

        def obj_to_dict(obj):
            json_text = json.dumps(obj, default=device_filter)
            return json.loads(json_text)

        if update:
            existing_config = self.read_device_config()
            if existing_config:
                new_config = obj_to_dict(holder.renderers)
                new_config.update(existing_config)
            else:
                logger.error(
                    'Your device config could not be found at any of the '
                    'locations "{}"'.format(','.join(
                        self.DEVICE_CONFIG_PATHS)))
                sys.exit(1)
        else:
            new_config = obj_to_dict(holder.renderers)
        json_text = json.dumps(new_config, indent=4)

        for config_path in reversed(self.DEVICE_CONFIG_PATHS):
            config_file = os.path.join(config_path, self.DEVICE_CONFIG)
            if not os.path.exists(config_path):
                try:
                    os.makedirs(config_path)
                except (OSError, IOError):
                    continue
            try:
                with open(config_file, 'w') as h:
                    h.write(json_text.encode(self.ENCODING))
                    logger.info('Found the following devices:')
                    for device in holder.renderers.values():
                        logger.info('{name} ({flavour})'.format(
                            name=device.name, flavour=device.flavour))
                        for codec in device.codecs:
                            logger.info('  - {}'.format(
                                codec.__class__.__name__))
                    logger.info(
                        'Your config was successfully written to "{}"'.format(
                            config_file))
                    return
            except (OSError, IOError):
                continue

        logger.error('Your device config could not be written to any of the '
                     'locations "{}"'.format(','.join(
                         self.DEVICE_CONFIG_PATHS)))
Ejemplo n.º 3
0
 def _discover_devices(self):
     holder = pulseaudio_dlna.renderers.RendererHolder(self.PLUGINS)
     discover = pulseaudio_dlna.discover.RendererDiscover(holder)
     discover.search()
     logger.info('Found the following devices:')
     for udn, device in holder.renderers.iteritems():
         logger.info('  - "{name}" ({flavour})'.format(
             name=device.name, flavour=device.flavour))
     return holder.renderers.values()
Ejemplo n.º 4
0
    def create_device_config(self, update=False):
        holder = pulseaudio_dlna.renderers.RendererHolder(self.PLUGINS)
        discover = pulseaudio_dlna.discover.RendererDiscover(holder)
        discover.search()

        def device_filter(obj):
            if hasattr(obj, 'to_json'):
                return obj.to_json()
            else:
                return obj.__dict__

        def obj_to_dict(obj):
            json_text = json.dumps(obj, default=device_filter)
            return json.loads(json_text)

        if update:
            existing_config = self.read_device_config()
            if existing_config:
                new_config = obj_to_dict(holder.renderers)
                new_config.update(existing_config)
            else:
                logger.error(
                    'Your device config could not be found at any of the '
                    'locations "{}"'.format(','.join(self.DEVICE_CONFIG_PATHS)))
                sys.exit(1)
        else:
            new_config = obj_to_dict(holder.renderers)
        json_text = json.dumps(new_config, indent=4)

        for config_path in reversed(self.DEVICE_CONFIG_PATHS):
            config_file = os.path.join(config_path, self.DEVICE_CONFIG)
            if not os.path.exists(config_path):
                try:
                    os.makedirs(config_path)
                except (OSError, IOError):
                    continue
            try:
                with open(config_file, 'w') as h:
                    h.write(json_text.encode(self.ENCODING))
                    logger.info('Found the following devices:')
                    for device in holder.renderers.values():
                        logger.info('{name} ({flavour})'.format(
                            name=device.name, flavour=device.flavour))
                        for codec in device.codecs:
                            logger.info('  - {}'.format(
                                codec.__class__.__name__))
                    logger.info(
                        'Your config was successfully written to "{}"'.format(
                            config_file))
                    return
            except (OSError, IOError):
                continue

        logger.error(
            'Your device config could not be written to any of the '
            'locations "{}"'.format(','.join(self.DEVICE_CONFIG_PATHS)))
Ejemplo n.º 5
0
 def search(self):
     discover = pulseaudio_dlna.discover.RendererDiscover(self.holder)
     discover.search()
     logger.info('Discovery complete.')
Ejemplo n.º 6
0
 def search(self):
     discover = pulseaudio_dlna.discover.RendererDiscover(self.holder)
     discover.search()
     logger.info('Discovery complete.')