[gnome-music/wip/merge: 36/343] grilo: Port from JavaScript to Python
- From: Ignacio Casal Quinteiro <icq src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-music/wip/merge: 36/343] grilo: Port from JavaScript to Python
- Date: Thu, 25 Jul 2013 11:16:32 +0000 (UTC)
commit b581db25c1e8e86ac67445595b2147c7aabd9db1
Author: Arnel A. Borja <arnelborja src gnome org>
Date: Sat Jul 13 22:17:05 2013 +0800
grilo: Port from JavaScript to Python
gnome-music/grilo.py | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++
gnome-music/view.py | 2 +-
2 files changed, 82 insertions(+), 1 deletions(-)
---
diff --git a/gnome-music/grilo.py b/gnome-music/grilo.py
new file mode 100644
index 0000000..cd66252
--- /dev/null
+++ b/gnome-music/grilo.py
@@ -0,0 +1,81 @@
+from gi.repository import Grl
+
+from query import Query
+
+
+class Grilo():
+
+ METADATA_KEYS = [
+ Grl.METADATA_KEY_ID, Grl.METADATA_KEY_TITLE,
+ Grl.METADATA_KEY_ARTIST, Grl.METADATA_KEY_ALBUM,
+ Grl.METADATA_KEY_DURATION, Grl.METADATA_KEY_THUMBNAIL,
+ Grl.METADATA_KEY_CREATION_DATE]
+
+ def __init__(self):
+ self.registry = Grl.Registry.get_default()
+ self.registry.load_all_plugins()
+
+ self.sources = {}
+ self.tracker = None
+
+ self.registry.connect('source_added', self._onSourceAdded)
+ self.registry.connect('source_removed', self._onSourceRemoved)
+
+ if self.registry.load_all is False:
+ print('Failed to load plugins.')
+
+ def _onSourceAdded(self, pluginRegistry, mediaSource):
+ if mediaSource.sourceId == "grl-tracker-source":
+ ops = mediaSource.supported_operations()
+ if ops & Grl.SupportedOps.SEARCH:
+ print('Detected new source availabe: \'' +
+ mediaSource.get_name() + '\' and it supports search')
+
+ self.sources[mediaSource.sourceId] = mediaSource
+ self.tracker = mediaSource
+
+ if self.tracker is not None:
+ self.emit('ready')
+
+ def _onSourceRemoved(self):
+ print('source removed')
+
+ def populateArtists(self, offset, callback):
+ self.populateItems(Query.artist, offset, callback)
+
+ def populateAlbums(self, offset, callback, count=50):
+ self.populateItems(Query.album, offset, callback, count)
+
+ def populateSongs(self, offset, callback):
+ self.populateItems(Query.songs, offset, callback)
+
+ def populateItems(self, query, offset, callback, count=50):
+ options = Grl.OperationOptions(None)
+ options.set_flags(Grl.ResolutionFlags.FULL |
+ Grl.ResolutionFlags.IDLE_RELAY)
+ options.set_skip(offset)
+ options.set_count(count)
+ self.tracker.query(query, self.METADATA_KEYS, options, callback)
+
+ def getAlbumSongs(self, album_id, callback):
+ query = Query.album_songs(album_id)
+ options = Grl.OperationOptions(None)
+ options.set_flags(Grl.ResolutionFlags.FULL |
+ Grl.ResolutionFlags.IDLE_RELAY)
+ self.tracker.query(query, self.METADATA_KEYS, options, callback)
+
+ def _searchCallback(self):
+ print("yeah")
+
+ def search(self, q):
+ for source in self.sources:
+ print(source.get_name() + " - " + q)
+ source.search(q, [Grl.METADATA_KEY_ID], 0, 10,
+ Grl.MetadataResolutionFlags.FULL |
+ Grl.MetadataResolutionFlags.IDLE_RELAY,
+ self._searchCallback, source)
+
+
+Grl.init(None, 0)
+
+grilo = Grilo()
diff --git a/gnome-music/view.py b/gnome-music/view.py
index 03a54a1..60e3efd 100644
--- a/gnome-music/view.py
+++ b/gnome-music/view.py
@@ -1,5 +1,5 @@
from gi.repository import Gtk, GObject, Gd, Grl, Pango, GLib, GdkPixbuf
-import grilo
+from grilo import grilo
import widgets as Widgets
from query import Query
import albumArtCache
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]