Exemple #1
0
    def _add_search_item(self, source, param, item, remaining=0, data=None):
        if not item:
            if grilo._search_callback_counter == 0 and grilo.search_source:
                self.emit('no-music-found')
            return

        if data != self.model:
            return

        artist = utils.get_artist_name(item)
        album = utils.get_album_title(item)
        composer = item.get_composer()

        key = '%s-%s' % (artist, album)
        if key not in self._albums:
            self._albums[key] = Grl.Media()
            self._albums[key].set_title(album)
            self._albums[key].add_artist(artist)
            self._albums[key].set_composer(composer)
            self._albums[key].set_source(source.get_id())
            self._albums[key].songs = []
            self._add_item(source, None, self._albums[key], 0,
                           [self.model, 'album'])
            self._add_item(source, None, self._albums[key], 0,
                           [self.model, 'artist'])

        self._albums[key].songs.append(item)
        self._add_item(source, None, item, 0, [self.model, 'song'])
Exemple #2
0
    def _add_search_item(self, source, param, item, remaining=0, data=None):
        if not item:
            if (grilo._search_callback_counter == 0
                    and grilo.search_source):
                self.props.search_state = Search.State.NO_RESULT
            return

        if data != self.model:
            return

        artist = utils.get_artist_name(item)
        album = utils.get_album_title(item)

        key = '%s-%s' % (artist, album)
        if key not in self._albums:
            self._albums[key] = Grl.Media()
            self._albums[key].set_title(album)
            self._albums[key].add_artist(artist)
            self._albums[key].set_source(source.get_id())
            self._albums[key].songs = []
            self._add_item(
                source, None, self._albums[key], 0, [self.model, 'album'])
            self._add_item(
                source, None, self._albums[key], 0, [self.model, 'artist'])

        self._albums[key].songs.append(item)
        self._add_item(source, None, item, 0, [self.model, 'song'])
Exemple #3
0
    def _store_btn_clicked_cb(self, *args):
        selection = self._browser_window.get_browser().get_selection()
        success, model, iter = selection.get_selected()
        if success:
            source = model.get_value(iter, BrowserListStore.SOURCE_COLUMN)
            container = model.get_value(iter, BrowserListStore.CONTENT_COLUMN)


#
        dialog = StoreContentDialog(self)
        if dialog.run() == Gtk.ResponseType.OK:
            url = dialog.get_url()
            if url:
                media = Grl.Media()
                media.set_url(url)
            else:
                media = Grl.MediaBox()
            media.set_title(dialog.get_title())
            media.set_description(dialog.get_description())
            source.store(container, media, self._store_cb, None)
        dialog.destroy()
Exemple #4
0
class TestMetadataSource(unittest.TestCase):

    MEDIA = Grl.Media()
    METADATA_FLAGS = Grl.MetadataResolutionFlags(
        Grl.MetadataResolutionFlags.FULL
        | Grl.MetadataResolutionFlags.IDLE_RELAY)

    def __init__(self, method_name):
        super(TestMetadataSource, self).__init__(method_name)
        Grl.init([])
        self.registry = Grl.Registry.get_default()
        self.registry.load_all()
        ops = Grl.SupportedOps(Grl.SupportedOps.RESOLVE
                               | Grl.SupportedOps.SET_METADATA)
        sources = self.registry.get_sources_by_operations(ops, False)
        if sources:
            self.metadata_source = sources[0]

    def test_supported_ops(self):
        ops = self.metadata_source.supported_operations()
        self.assertTrue(ops)

    def test_supported_keys(self):
        keys = self.metadata_source.supported_keys()
        self.assertTrue(keys)

    def test_slow_keys(self):
        keys = self.metadata_source.slow_keys()

    def test_filter_supported(self):
        sources = self.registry.get_sources(False)
        keys = self.registry.get_metadata_keys()
        for source in sources:
            supported, unsupported = source.filter_supported(keys, True)
            self.assertEqual(len(supported) + len(unsupported), len(keys))

    def test_filter_slow(self):
        sources = self.registry.get_sources(False)
        keys = self.registry.get_metadata_keys()
        for source in sources:
            fast, slow = source.filter_slow(keys, True)
            self.assertEqual(len(fast) + len(slow), len(keys))

    def test_filter_writable(self):
        sources = self.registry.get_sources(False)
        keys = self.registry.get_metadata_keys()
        for source in sources:
            writable, unwritable = source.filter_writable(keys, True)
            self.assertEqual(len(writable) + len(unwritable), len(keys))

    def test_key_depends(self):
        key_id = self.registry.lookup_metadata_key(constants.KEY_ID)
        keys = self.metadata_source.key_depends(key_id)
        self.assertTrue(keys is not None)

    def test_writable_keys(self):
        keys = self.metadata_source.writable_keys()
        self.assertTrue(keys is not None)

    def test_resolve(self):
        self.metadata_source.resolve([], self.MEDIA, self.METADATA_FLAGS,
                                     self.resolve_cb, None)

    def resolve_cb(self, *args):
        pass

    def test_resolve_sync(self):
        try:
            self.metadata_source.resolve_sync([], self.MEDIA,
                                              self.METADATA_FLAGS)
        except Exception, ex:
            self.fail(ex)