예제 #1
0
파일: models_test.py 프로젝트: Amli/mopidy
 def test_with_new_uri(self):
     tracks = [Track()]
     last_modified = dt.datetime.now()
     playlist = Playlist(uri=u"an uri", name=u"a name", tracks=tracks, last_modified=last_modified)
     new_playlist = playlist.copy(uri=u"another uri")
     self.assertEqual(new_playlist.uri, u"another uri")
     self.assertEqual(new_playlist.name, u"a name")
     self.assertEqual(list(new_playlist.tracks), tracks)
     self.assertEqual(new_playlist.last_modified, last_modified)
예제 #2
0
 def test_with_new_name(self):
     tracks = [Track()]
     last_modified = datetime.datetime.utcnow()
     playlist = Playlist(uri="an uri", name="a name", tracks=tracks, last_modified=last_modified)
     new_playlist = playlist.copy(name="another name")
     self.assertEqual(new_playlist.uri, "an uri")
     self.assertEqual(new_playlist.name, "another name")
     self.assertEqual(list(new_playlist.tracks), tracks)
     self.assertEqual(new_playlist.last_modified, last_modified)
예제 #3
0
 def test_with_new_last_modified(self):
     tracks = [Track()]
     last_modified = datetime.datetime.utcnow()
     new_last_modified = last_modified + datetime.timedelta(1)
     playlist = Playlist(uri="an uri", name="a name", tracks=tracks, last_modified=last_modified)
     new_playlist = playlist.copy(last_modified=new_last_modified)
     self.assertEqual(new_playlist.uri, "an uri")
     self.assertEqual(new_playlist.name, "a name")
     self.assertEqual(list(new_playlist.tracks), tracks)
     self.assertEqual(new_playlist.last_modified, new_last_modified)
예제 #4
0
 def test_with_new_name(self):
     tracks = [Track()]
     last_modified = datetime.datetime.now()
     playlist = Playlist(uri=u'an uri', name=u'a name', tracks=tracks,
         last_modified=last_modified)
     new_playlist = playlist.copy(name=u'another name')
     self.assertEqual(new_playlist.uri, u'an uri')
     self.assertEqual(new_playlist.name, u'another name')
     self.assertEqual(list(new_playlist.tracks), tracks)
     self.assertEqual(new_playlist.last_modified, last_modified)
예제 #5
0
 def test_with_new_uri(self):
     tracks = [Track()]
     last_modified = datetime.datetime.utcnow()
     playlist = Playlist(
         uri='an uri', name='a name', tracks=tracks,
         last_modified=last_modified)
     new_playlist = playlist.copy(uri='another uri')
     self.assertEqual(new_playlist.uri, 'another uri')
     self.assertEqual(new_playlist.name, 'a name')
     self.assertEqual(list(new_playlist.tracks), tracks)
     self.assertEqual(new_playlist.last_modified, last_modified)
예제 #6
0
 def test_with_new_name(self):
     tracks = [Track()]
     last_modified = 1390942873000
     playlist = Playlist(
         uri='an uri', name='a name', tracks=tracks,
         last_modified=last_modified)
     new_playlist = playlist.copy(name='another name')
     self.assertEqual(new_playlist.uri, 'an uri')
     self.assertEqual(new_playlist.name, 'another name')
     self.assertEqual(list(new_playlist.tracks), tracks)
     self.assertEqual(new_playlist.last_modified, last_modified)
예제 #7
0
 def test_with_new_last_modified(self):
     tracks = [Track()]
     last_modified = datetime.datetime.now()
     new_last_modified = last_modified + datetime.timedelta(1)
     playlist = Playlist(uri=u'an uri', name=u'a name', tracks=tracks,
         last_modified=last_modified)
     new_playlist = playlist.copy(last_modified=new_last_modified)
     self.assertEqual(new_playlist.uri, u'an uri')
     self.assertEqual(new_playlist.name, u'a name')
     self.assertEqual(list(new_playlist.tracks), tracks)
     self.assertEqual(new_playlist.last_modified, new_last_modified)
예제 #8
0
 def test_with_new_name(self):
     tracks = [Track()]
     last_modified = 1390942873000
     playlist = Playlist(uri='an uri',
                         name='a name',
                         tracks=tracks,
                         last_modified=last_modified)
     new_playlist = playlist.copy(name='another name')
     self.assertEqual(new_playlist.uri, 'an uri')
     self.assertEqual(new_playlist.name, 'another name')
     self.assertEqual(list(new_playlist.tracks), tracks)
     self.assertEqual(new_playlist.last_modified, last_modified)
예제 #9
0
 def test_with_new_tracks(self):
     tracks = [Track()]
     last_modified = datetime.datetime.utcnow()
     playlist = Playlist(
         uri='an uri', name='a name', tracks=tracks,
         last_modified=last_modified)
     new_tracks = [Track(), Track()]
     new_playlist = playlist.copy(tracks=new_tracks)
     self.assertEqual(new_playlist.uri, 'an uri')
     self.assertEqual(new_playlist.name, 'a name')
     self.assertEqual(list(new_playlist.tracks), new_tracks)
     self.assertEqual(new_playlist.last_modified, last_modified)
예제 #10
0
class InternetArchivePlaylistsProvider(backend.PlaylistsProvider):

    def __init__(self, config, backend):
        super(InternetArchivePlaylistsProvider, self).__init__(backend)
        self._bookmarks = []
        self._username = config[Extension.ext_name]['username']
        self._playlist = Playlist(
            uri='%s://%s/bookmarks' % (Extension.ext_name, self._username),
            name='Internet Archive Bookmarks'
        )
        self.playlists = [self._playlist]

    def create(self, name):
        pass  # TODO

    def delete(self, uri):
        pass  # TODO

    def lookup(self, uri):
        for playlist in self.playlists:
            if playlist.uri == uri:
                return playlist
        return None

    def refresh(self):
        try:
            bookmarks = self.backend.client.bookmarks(self._username)
            logger.info('Loaded %d Internet Archive bookmarks', len(bookmarks))
            if bookmarks == self._bookmarks:
                return  # unchanged
            # FIXME: this can probably be removed when playlists return refs...
            tracks = self._tracks(bookmarks)
            logger.info('Loaded %d Internet Archive tracks', len(tracks))
            self.playlists = [self._playlist.copy(tracks=tracks)]
            backend.BackendListener.send('playlists_loaded')
            self._bookmarks = bookmarks
        except Exception as e:
            logger.error('Error loading Internet Archive bookmarks: %s', e)

    def save(self, playlist):
        pass  # TODO

    def _tracks(self, bookmarks):
        tracks = []
        for doc in bookmarks:
            tracks.extend(self.backend.library._lookup(doc['identifier']))
        return tracks
예제 #11
0
 def test_copying_playlist(self):
     playlist = Playlist()
     self.compare(playlist, playlist.copy())
예제 #12
0
 def test_copying_playlist(self):
     playlist = Playlist()
     self.compare(playlist, playlist.copy())