[gnome-music/wip/jfelder/tracker3: 7/22] grltrackerwrapper: Port query for songs in disc to new Tracker/Grilo expectatives
- From: Jean Felder <jfelder src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-music/wip/jfelder/tracker3: 7/22] grltrackerwrapper: Port query for songs in disc to new Tracker/Grilo expectatives
- Date: Mon, 24 Aug 2020 16:14:17 +0000 (UTC)
commit 1d14fa0dc0efa7e312176f182744aa02d0b10167
Author: Carlos Garnacho <carlosg gnome org>
Date: Sun May 31 15:24:43 2020 +0200
grltrackerwrapper: Port query for songs in disc to new Tracker/Grilo expectatives
For Tracker 3, the miner service must be queried specifically, and it is better
to specify here that we are querying from the tracker:Audio graph.
For Grilo, the variable names are slightly different, and IDs are now URNs, not
tracker:id()s.
gnomemusic/grilowrappers/grltrackerwrapper.py | 62 +++++++++++++++++----------
1 file changed, 40 insertions(+), 22 deletions(-)
---
diff --git a/gnomemusic/grilowrappers/grltrackerwrapper.py b/gnomemusic/grilowrappers/grltrackerwrapper.py
index f7e25e73..d59a56a3 100644
--- a/gnomemusic/grilowrappers/grltrackerwrapper.py
+++ b/gnomemusic/grilowrappers/grltrackerwrapper.py
@@ -690,31 +690,49 @@ class GrlTrackerWrapper(GObject.GObject):
album_id = media.get_id()
query = """
- SELECT DISTINCT
- rdf:type(?song)
- ?song AS ?tracker_urn
- tracker:id(?song) AS ?id
- nie:url(?song) AS ?url
- nie:title(?song) AS ?title
- nmm:artistName(nmm:performer(?song)) AS ?artist
- nie:title(nmm:musicAlbum(?song)) AS ?album
- nfo:duration(?song) AS ?duration
- nmm:trackNumber(?song) AS ?track_number
- nmm:setNumber(nmm:musicAlbumDisc(?song)) AS ?album_disc_number
- ?tag AS ?favourite
- nie:usageCounter(?song) AS ?play_count
+ SELECT
+ ?type ?id ?url ?title
+ ?artist ?album
+ ?duration ?trackNumber ?albumDiscNumber
+ ?creationDate
+ nie:usageCounter(?id) AS ?playCount
+ ?tag AS ?favorite
WHERE {
- ?song a nmm:MusicPiece ;
- nmm:musicAlbum ?album .
- OPTIONAL { ?song nao:hasTag ?tag .
- FILTER (?tag = nao:predefined-tag-favorite) } .
- FILTER ( tracker:id(?album) = %(album_id)s
- && nmm:setNumber(nmm:musicAlbumDisc(?song)) = %(disc_nr)s
- )
- %(location_filter)s
+ SERVICE <dbus:org.freedesktop.Tracker3.Miner.Files> {
+ GRAPH tracker:Audio {
+ SELECT DISTINCT
+ %(media_type)s AS ?type
+ ?song AS ?id
+ nie:isStoredAs(?song) AS ?url
+ nie:title(?song) AS ?title
+ nmm:artistName(nmm:artist(?song)) AS ?artist
+ nie:title(nmm:musicAlbum(?song)) AS ?album
+ nfo:duration(?song) AS ?duration
+ nmm:trackNumber(?song) AS ?trackNumber
+ nmm:setNumber(nmm:musicAlbumDisc(?song))
+ AS ?albumDiscNumber
+ YEAR(?date) AS ?creationDate
+ WHERE {
+ ?song a nmm:MusicPiece ;
+ nmm:musicAlbum ?album .
+ OPTIONAL { ?song nie:contentCreated ?date . }
+ FILTER (
+ ?album = <%(album_id)s> &&
+ nmm:setNumber(nmm:musicAlbumDisc(?song)) =
+ %(disc_nr)s
+ )
+ %(location_filter)s
+ }
+ ORDER BY ?trackNumber
+ }
+ }
+ OPTIONAL {
+ ?id nao:hasTag ?tag .
+ FILTER (?tag = nao:predefined-tag-favorite)
+ }
}
- ORDER BY ?track_number
""".replace('\n', ' ').strip() % {
+ "media_type": int(Grl.MediaType.AUDIO),
'album_id': album_id,
'disc_nr': disc_nr,
'location_filter': self._tracker_wrapper.location_filter()
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]