Set URI on local playlists when reading from disk (#217)

This commit is contained in:
Stein Magnus Jodal 2012-10-31 11:12:07 +01:00
parent fd88b974e8
commit d8378e9284
2 changed files with 10 additions and 3 deletions

View File

@ -6,6 +6,7 @@ import shutil
from mopidy import settings
from mopidy.backends import base
from mopidy.models import Playlist
from mopidy.utils import path
from .translator import parse_m3u
@ -27,14 +28,15 @@ class LocalStoredPlaylistsProvider(base.BaseStoredPlaylistsProvider):
logger.info('Loading playlists from %s', self._folder)
for m3u in glob.glob(os.path.join(self._folder, '*.m3u')):
uri = path.path_to_uri(m3u)
name = os.path.splitext(os.path.basename(m3u))[0]
tracks = []
for uri in parse_m3u(m3u, settings.LOCAL_MUSIC_PATH):
for track_uri in parse_m3u(m3u, settings.LOCAL_MUSIC_PATH):
try:
tracks.append(self.backend.library.lookup(uri))
tracks.append(self.backend.library.lookup(track_uri))
except LookupError as ex:
logger.error('Playlist item could not be added: %s', ex)
playlist = Playlist(tracks=tracks, name=name)
playlist = Playlist(uri=uri, name=name, tracks=tracks)
# FIXME playlist name needs better handling
# FIXME tracks should come from lib. lookup

View File

@ -57,6 +57,8 @@ class LocalStoredPlaylistsControllerTest(
self.assertEqual(uri, contents.strip())
def test_playlists_are_loaded_at_startup(self):
playlist_path = os.path.join(settings.LOCAL_PLAYLIST_PATH, 'test.m3u')
track = Track(uri=path_to_uri(path_to_data_dir('uri2')))
playlist = self.stored.create('test')
playlist = playlist.copy(tracks=[track])
@ -65,6 +67,9 @@ class LocalStoredPlaylistsControllerTest(
backend = self.backend_class(audio=self.audio)
self.assert_(backend.stored_playlists.playlists)
self.assertEqual(
path_to_uri(playlist_path),
backend.stored_playlists.playlists[0].uri)
self.assertEqual(
playlist.name, backend.stored_playlists.playlists[0].name)
self.assertEqual(