file-browser: Changed as discussed in PR 1207
This commit is contained in:
parent
bd70eac124
commit
2c587edf7a
@ -1,8 +1,7 @@
|
|||||||
[files]
|
[files]
|
||||||
enabled = true
|
enabled = true
|
||||||
media_dir =
|
media_dir =
|
||||||
~/:Home
|
$XDG_MUSIC_DIR
|
||||||
/data/music/music_data:Music
|
|
||||||
show_hidden = false
|
show_hidden = false
|
||||||
follow_symlinks = true
|
follow_symlinks = true
|
||||||
metadata_timeout = 1000
|
metadata_timeout = 1000
|
||||||
@ -17,6 +17,8 @@ logger = logging.getLogger(__name__)
|
|||||||
|
|
||||||
class FilesLibraryProvider(backend.LibraryProvider):
|
class FilesLibraryProvider(backend.LibraryProvider):
|
||||||
"""Library for browsing local files."""
|
"""Library for browsing local files."""
|
||||||
|
# TODO: get_images that can pull from metadata and/or .folder.png etc?
|
||||||
|
# TODO: handle playlists?
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def root_directory(self):
|
def root_directory(self):
|
||||||
@ -32,7 +34,6 @@ class FilesLibraryProvider(backend.LibraryProvider):
|
|||||||
def __init__(self, backend, config):
|
def __init__(self, backend, config):
|
||||||
super(FilesLibraryProvider, self).__init__(backend)
|
super(FilesLibraryProvider, self).__init__(backend)
|
||||||
self._media_dirs = []
|
self._media_dirs = []
|
||||||
# import pdb; pdb.set_trace()
|
|
||||||
for entry in config['files']['media_dir']:
|
for entry in config['files']['media_dir']:
|
||||||
media_dir = {}
|
media_dir = {}
|
||||||
media_dict = entry.split(':')
|
media_dict = entry.split(':')
|
||||||
@ -48,15 +49,13 @@ class FilesLibraryProvider(backend.LibraryProvider):
|
|||||||
else:
|
else:
|
||||||
media_dir['name'] = media_dict[0].replace(os.sep, '+')
|
media_dir['name'] = media_dict[0].replace(os.sep, '+')
|
||||||
self._media_dirs.append(media_dir)
|
self._media_dirs.append(media_dir)
|
||||||
logger.debug(self._media_dirs)
|
|
||||||
self._follow_symlinks = config['files']['follow_symlinks']
|
self._follow_symlinks = config['files']['follow_symlinks']
|
||||||
self._show_hidden = config['files']['show_hidden']
|
self._show_hidden = config['files']['show_hidden']
|
||||||
self._scanner = scan.Scanner(
|
self._scanner = scan.Scanner(
|
||||||
timeout=config['files']['metadata_timeout'])
|
timeout=config['files']['metadata_timeout'])
|
||||||
|
|
||||||
def browse(self, uri, encoding=sys.getfilesystemencoding()):
|
def browse(self, uri):
|
||||||
logger.debug(u'browse called with uri %s' % uri)
|
logger.debug(u'browse called with uri %s' % uri)
|
||||||
# import pdb; pdb.set_trace()
|
|
||||||
result = []
|
result = []
|
||||||
localpath = path.uri_to_path(uri)
|
localpath = path.uri_to_path(uri)
|
||||||
if localpath == 'root':
|
if localpath == 'root':
|
||||||
@ -78,15 +77,10 @@ class FilesLibraryProvider(backend.LibraryProvider):
|
|||||||
elif stat.S_ISDIR(st.st_mode):
|
elif stat.S_ISDIR(st.st_mode):
|
||||||
result.append(models.Ref.directory(name=name, uri=uri))
|
result.append(models.Ref.directory(name=name, uri=uri))
|
||||||
elif stat.S_ISREG(st.st_mode) and self._check_audiofile(uri):
|
elif stat.S_ISREG(st.st_mode) and self._check_audiofile(uri):
|
||||||
# if self._is_playlist(child):
|
|
||||||
# result.append(models.Ref.playlist(
|
|
||||||
# name=name,
|
|
||||||
# uri='m3u:%s' % child))
|
|
||||||
# else:
|
|
||||||
result.append(models.Ref.track(name=name, uri=uri))
|
result.append(models.Ref.track(name=name, uri=uri))
|
||||||
else:
|
else:
|
||||||
logger.warn(u'Ignored file: %s' % child.decode(encoding,
|
logger.warn(u'Ignored file: %s' % child.decode('ascii',
|
||||||
'replace'))
|
'ignore'))
|
||||||
pass
|
pass
|
||||||
|
|
||||||
result.sort(key=operator.attrgetter('name'))
|
result.sort(key=operator.attrgetter('name'))
|
||||||
@ -98,7 +92,6 @@ class FilesLibraryProvider(backend.LibraryProvider):
|
|||||||
if not self._is_in_basedir(localpath):
|
if not self._is_in_basedir(localpath):
|
||||||
logger.warn(u'Not in basedir: %s' % localpath)
|
logger.warn(u'Not in basedir: %s' % localpath)
|
||||||
return []
|
return []
|
||||||
# import pdb; pdb.set_trace()
|
|
||||||
try:
|
try:
|
||||||
result = self._scanner.scan(uri)
|
result = self._scanner.scan(uri)
|
||||||
track = utils.convert_tags_to_track(result.tags).copy(
|
track = utils.convert_tags_to_track(result.tags).copy(
|
||||||
@ -113,8 +106,6 @@ class FilesLibraryProvider(backend.LibraryProvider):
|
|||||||
track = track.copy(name=name)
|
track = track.copy(name=name)
|
||||||
return [track]
|
return [track]
|
||||||
|
|
||||||
# TODO: get_images that can pull from metadata and/or .folder.png etc?
|
|
||||||
|
|
||||||
def _show_media_dirs(self):
|
def _show_media_dirs(self):
|
||||||
result = []
|
result = []
|
||||||
for media_dir in self._media_dirs:
|
for media_dir in self._media_dirs:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user