def test_local_uri_to_path(uri, path): media_dir = b'/home/alice/Music' assert translator.local_uri_to_path(uri, media_dir) == path # Legacy version to keep old versions of Mopidy-Local-Sqlite working assert translator.local_track_uri_to_path(uri, media_dir) == path
def _browse_path(self, uri, encoding=sys.getfilesystemencoding()): root = local_uri_to_path(uri, b'') dirs, tracks = [], [] for file in sorted(os.listdir(os.path.join(self._media_dir, root))): path = os.path.join(root, file) name = file.decode(encoding, 'replace') if os.path.isdir(os.path.join(self._media_dir, path)): uri = translator.path_to_local_directory_uri(path) dirs.append(Ref.directory(uri=uri, name=name)) elif not path.lower().endswith(self._excluded_ext): uri = path_to_file_uri(os.path.join(self._media_dir, path)) tracks.append(Ref.track(uri=uri, name=name)) else: logger.debug('Skipped %s: File extension excluded.', path) return dirs + tracks
def _extract_images(self, uri, tags): images = set() # filter duplicate images, e.g. embedded/external for image in tags.get('image', []) + tags.get('preview-image', []): try: # FIXME: gst.Buffer or plain str/bytes type? data = getattr(image, 'data', image) images.add(self._get_or_create_image_file(None, data)) except Exception as e: logger.warn('Error extracting images for %r: %r', uri, e) # look for external album art path = translator.local_uri_to_path(uri, self.media_dir) dirname = os.path.dirname(path) for pattern in self.patterns: for path in glob.glob(os.path.join(dirname, pattern)): try: images.add(self._get_or_create_image_file(path)) except Exception as e: logger.warn('Cannot read image file %r: %r', path, e) return images
def test_local_uri_to_path_errors(uri): media_dir = b'/home/alice/Music' with pytest.raises(ValueError): translator.local_uri_to_path(uri, media_dir)