Load tracks when stored playlist is initialised

This commit is contained in:
Thomas Adamcik 2010-04-27 00:02:57 +02:00
parent 0f26329455
commit 32dcabafc3
2 changed files with 32 additions and 3 deletions

View File

@ -9,12 +9,14 @@ pygst.require('0.10')
import gst
import logging
import os
import glob
import shutil
import threading
from mopidy.backends import *
from mopidy.models import Playlist
from mopidy.models import Playlist, Track
from mopidy import settings
from mopidy.utils import m3u_to_uris
logger = logging.getLogger(u'backends.gstreamer')
@ -112,6 +114,16 @@ class GStreamerStoredPlaylistsController(BaseStoredPlaylistsController):
super(GStreamerStoredPlaylistsController, self).__init__(*args)
self._folder = os.path.expanduser(settings.PLAYLIST_FOLDER)
for m3u in glob.glob(os.path.join(self._folder, '*.m3u')):
name = os.path.basename(m3u)[:len('.m3u')]
track_uris = m3u_to_uris(m3u)
tracks = map(lambda u: Track(uri=u), track_uris)
playlist = Playlist(tracks=tracks, name=name)
# FIXME playlist name needs better handling
self._playlists.append(playlist)
def create(self, name):
playlist = Playlist(name=name)
self.save(playlist)

View File

@ -2,9 +2,10 @@ import unittest
import os
import urllib
from mopidy.models import Playlist, Track
from mopidy.backends.gstreamer import GStreamerBackend
from mopidy import settings
from mopidy.backends.gstreamer import GStreamerBackend
from mopidy.mixers.dummy import DummyMixer
from mopidy.models import Playlist, Track
from tests.backends.base import *
from tests import SkipTest
@ -93,6 +94,22 @@ class GStreamerBackendStoredPlaylistsControllerTest(BaseStoredPlaylistsControlle
self.assertEqual(uri, contents.strip())
def test_playlists_are_loaded_at_startup(self):
track = Track(uri=generate_song(1))
uri = track.uri[len('file:'):]
playlist = Playlist(tracks=[track], name='test')
file_path = os.path.join(settings.PLAYLIST_FOLDER, 'test.m3u')
self.stored.save(playlist)
self.backend.destroy()
self.backend = self.backend_class(mixer=DummyMixer())
self.stored = self.backend.stored_playlists
self.assert_(self.stored.playlists)
self.assertEqual('test', self.stored.playlists[0].name)
self.assertEqual(track.uri, self.stored.playlists[0].tracks[0].uri)
def test_santitising_of_playlist_filenames(self):
raise SkipTest