[gnome-music/wip/mschraal/flac-cue: 20/22] grltrackerwrapper: Add support for flac+cue



commit 43612063d724ba73c9542cf52533b56b388d2c1c
Author: Marinus Schraal <mschraal gnome org>
Date:   Tue Nov 5 14:15:56 2019 +0100

    grltrackerwrapper: Add support for flac+cue

 gnomemusic/coresong.py                        |  2 +
 gnomemusic/grilowrappers/grltrackerwrapper.py | 60 +++++++++++++++++----------
 gnomemusic/trackerwrapper.py                  |  2 +-
 3 files changed, 42 insertions(+), 22 deletions(-)
---
diff --git a/gnomemusic/coresong.py b/gnomemusic/coresong.py
index c2befcb6..c6da534b 100644
--- a/gnomemusic/coresong.py
+++ b/gnomemusic/coresong.py
@@ -42,6 +42,7 @@ class CoreSong(GObject.GObject):
     media = GObject.Property(type=Grl.Media)
     grlid = GObject.Property(type=str, default=None)
     play_count = GObject.Property(type=int)
+    start_time = GObject.Property(type=float)
     state = GObject.Property()  # FIXME: How to set an IntEnum type?
     title = GObject.Property(type=str)
     track_number = GObject.Property(type=int)
@@ -120,6 +121,7 @@ class CoreSong(GObject.GObject):
         self.props.favorite = media.get_favourite()
         self.props.play_count = media.get_play_count()
         self.props.title = utils.get_media_title(media)
+        self.props.start_time = media.get_start_time()
         self.props.track_number = media.get_track_number()
         self.props.url = media.get_url()
 
diff --git a/gnomemusic/grilowrappers/grltrackerwrapper.py b/gnomemusic/grilowrappers/grltrackerwrapper.py
index f8869659..89ce975a 100644
--- a/gnomemusic/grilowrappers/grltrackerwrapper.py
+++ b/gnomemusic/grilowrappers/grltrackerwrapper.py
@@ -51,6 +51,7 @@ class GrlTrackerWrapper(GObject.GObject):
         Grl.METADATA_KEY_FAVOURITE,
         Grl.METADATA_KEY_ID,
         Grl.METADATA_KEY_PLAY_COUNT,
+        Grl.METADATA_KEY_START_TIME,
         Grl.METADATA_KEY_THUMBNAIL,
         Grl.METADATA_KEY_TITLE,
         Grl.METADATA_KEY_TRACK_NUMBER,
@@ -164,13 +165,14 @@ class GrlTrackerWrapper(GObject.GObject):
             ?composer AS ?composer
             ?album_artist AS ?album_artist
             nmm:artistName(?performer) AS ?artist
-            nie:url(?song) AS ?url
+            nie:url(?file) AS ?url
             YEAR(MAX(nie:contentCreated(?song))) AS ?creation_date
         WHERE {
             ?album a nmm:MusicAlbum .
             ?song a nmm:MusicPiece ;
                     nmm:musicAlbum ?album ;
-                    nmm:performer ?performer .
+                    nmm:performer ?performer ;
+                    nie:isStoredAs ?file .
             OPTIONAL { ?song nmm:composer/nmm:artistName ?composer . }
             OPTIONAL { ?album nmm:albumArtist/nmm:artistName ?album_artist . }
             %(location_filter)s
@@ -224,7 +226,8 @@ class GrlTrackerWrapper(GObject.GObject):
         WHERE {
             ?song a nmm:MusicPiece;
                     nmm:musicAlbum ?album;
-                    nmm:performer ?artist .
+                    nmm:performer ?artist;
+                    nie:isStoredAs ?file .
             OPTIONAL {
                 ?album a nmm:MusicAlbum;
                          nmm:albumArtist ?album_artist .
@@ -298,7 +301,7 @@ class GrlTrackerWrapper(GObject.GObject):
             nie:title(?song) AS ?title
             tracker:id(?song) AS ?id
             ?song
-            nie:url(?song) AS ?url
+            nie:url(?file) AS ?url
             nie:title(?song) AS ?title
             nmm:artistName(nmm:performer(?song)) AS ?artist
             nie:title(nmm:musicAlbum(?song)) AS ?album
@@ -306,9 +309,11 @@ class GrlTrackerWrapper(GObject.GObject):
             nie:usageCounter(?song) AS ?play_count
             nmm:trackNumber(?song) AS ?track_number
             nmm:setNumber(nmm:musicAlbumDisc(?song)) AS ?album_disc_number
+            nfo:audioOffset(?song) AS ?start_time
             ?tag AS ?favourite
         WHERE {
-            ?song a nmm:MusicPiece .
+            ?song a nmm:MusicPiece ;
+                    nie:isStoredAs ?file .
             OPTIONAL {
                 ?song nao:hasTag ?tag .
                 FILTER (?tag = nao:predefined-tag-favorite)
@@ -376,7 +381,7 @@ class GrlTrackerWrapper(GObject.GObject):
             nie:title(?song) AS ?title
             tracker:id(?song) AS ?id
             ?song
-            nie:url(?song) AS ?url
+            nie:url(?file) AS ?url
             nie:title(?song) AS ?title
             nmm:artistName(nmm:performer(?song)) AS ?artist
             nie:title(nmm:musicAlbum(?song)) AS ?album
@@ -384,9 +389,11 @@ class GrlTrackerWrapper(GObject.GObject):
             nie:usageCounter(?song) AS ?play_count
             nmm:trackNumber(?song) AS ?track_number
             nmm:setNumber(nmm:musicAlbumDisc(?song)) AS ?album_disc_number
+            nfo:audioOffset(?song) AS ?start_time
             ?tag AS ?favourite
         WHERE {
-            ?song a nmm:MusicPiece .
+            ?song a nmm:MusicPiece ;
+                    nie:isStoredAs ?file .
             OPTIONAL {
                 ?song nao:hasTag ?tag .
                 FILTER (?tag = nao:predefined-tag-favorite)
@@ -433,14 +440,15 @@ class GrlTrackerWrapper(GObject.GObject):
             ?composer AS ?composer
             ?album_artist AS ?album_artist
             nmm:artistName(?performer) AS ?artist
-            nie:url(?song) AS ?url
+            nie:url(?file) AS ?url
             YEAR(MAX(nie:contentCreated(?song))) AS ?creation_date
         WHERE
         {
             ?album a nmm:MusicAlbum .
             ?song a nmm:MusicPiece ;
                     nmm:musicAlbum ?album ;
-                    nmm:performer ?performer .
+                    nmm:performer ?performer;
+                    nie:isStoredAs ?file .
             OPTIONAL { ?song nmm:composer/nmm:artistName ?composer . }
             OPTIONAL { ?album nmm:albumArtist/nmm:artistName ?album_artist . }
             %(location_filter)s
@@ -488,7 +496,8 @@ class GrlTrackerWrapper(GObject.GObject):
         WHERE {
             ?song a nmm:MusicPiece;
                     nmm:musicAlbum ?album;
-                    nmm:performer ?artist .
+                    nmm:performer ?artist;
+                    nie:isStoredAs ?file .
             OPTIONAL {
                 ?album a nmm:MusicAlbum;
                          nmm:albumArtist ?album_artist .
@@ -526,9 +535,10 @@ class GrlTrackerWrapper(GObject.GObject):
         WHERE {
             ?album a nmm:MusicAlbum .
             OPTIONAL { ?album  nmm:albumArtist ?album_artist . }
-            ?song a nmm:MusicPiece;
-                    nmm:musicAlbum ?album;
-                    nmm:performer ?artist .
+            ?song a nmm:MusicPiece ;
+                    nmm:musicAlbum ?album ;
+                    nmm:performer ?artist ;
+                    nie:isStoredAs ?file .
             FILTER ( tracker:id(?album_artist) = %(artist_id)s
                      || tracker:id(?artist) = %(artist_id)s )
             %(location_filter)s
@@ -582,7 +592,8 @@ class GrlTrackerWrapper(GObject.GObject):
             nmm:setNumber(nmm:musicAlbumDisc(?song)) as ?album_disc_number
         WHERE {
             ?song a nmm:MusicPiece;
-                    nmm:musicAlbum ?album .
+                    nmm:musicAlbum ?album ;
+                    nie:isStoredAs ?file .
             FILTER ( tracker:id(?album) = %(album_id)s )
             %(location_filter)s
         }
@@ -627,18 +638,20 @@ class GrlTrackerWrapper(GObject.GObject):
             rdf:type(?song)
             ?song AS ?tracker_urn
             tracker:id(?song) AS ?id
-            nie:url(?song) AS ?url
+            nie:url(?file) 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
+            nfo:audioOffset(?song) AS ?start_time
             ?tag AS ?favourite
             nie:usageCounter(?song) AS ?play_count
         WHERE {
             ?song a nmm:MusicPiece ;
-                    nmm:musicAlbum ?album .
+                    nmm:musicAlbum ?album ;
+                    nie:isStoredAs ?file .
             OPTIONAL { ?song nao:hasTag ?tag .
                        FILTER (?tag = nao:predefined-tag-favorite) } .
             FILTER ( tracker:id(?album) = %(album_id)s
@@ -676,7 +689,8 @@ class GrlTrackerWrapper(GObject.GObject):
         WHERE {
             ?song a nmm:MusicPiece ;
                     nmm:musicAlbum ?album ;
-                    nmm:performer ?artist .
+                    nmm:performer ?artist ;
+                    nie:isStoredAs ?file .
             BIND(tracker:normalize(
                 nmm:artistName(nmm:albumArtist(?album)), 'nfkd') AS ?match1) .
             BIND(tracker:normalize(
@@ -731,7 +745,8 @@ class GrlTrackerWrapper(GObject.GObject):
             rdf:type(nmm:musicAlbum(?song))
             tracker:id(nmm:musicAlbum(?song)) AS ?id
         WHERE {
-            ?song a nmm:MusicPiece .
+            ?song a nmm:MusicPiece ;
+                    nie:isStoredAs ?file .
             BIND(tracker:normalize(
                 nie:title(nmm:musicAlbum(?song)), 'nfkd') AS ?match1) .
             BIND(tracker:normalize(
@@ -786,7 +801,8 @@ class GrlTrackerWrapper(GObject.GObject):
             rdf:type(?song)
             tracker:id(?song) AS ?id
         WHERE {
-            ?song a nmm:MusicPiece .
+            ?song a nmm:MusicPiece ;
+                    nie:isStoredAs ?file .
             BIND(tracker:normalize(
                 nie:title(nmm:musicAlbum(?song)), 'nfkd') AS ?match1) .
             BIND(tracker:normalize(
@@ -876,7 +892,8 @@ class GrlTrackerWrapper(GObject.GObject):
             ?album a nmm:MusicAlbum .
             ?song a nmm:MusicPiece ;
                     nmm:musicAlbum ?album ;
-                    nmm:performer ?song_artist .
+                    nmm:performer ?song_artist ;
+                    nie:isStoredAs ?file .
             OPTIONAL {
                 ?album tracker:hasExternalReference ?release_group_id .
                 ?release_group_id tracker:referenceSource
@@ -915,7 +932,8 @@ class GrlTrackerWrapper(GObject.GObject):
         WHERE {
             ?song a nmm:MusicPiece ;
                     nmm:musicAlbum ?album ;
-                    nmm:performer ?song_artist .
+                    nmm:performer ?song_artist ;
+                    nie:isStoredAs ?file .
             OPTIONAL {
                 ?album tracker:hasExternalReference ?release_group_id .
                 ?release_group_id tracker:referenceSource
diff --git a/gnomemusic/trackerwrapper.py b/gnomemusic/trackerwrapper.py
index 06e406e9..ec31cf2b 100644
--- a/gnomemusic/trackerwrapper.py
+++ b/gnomemusic/trackerwrapper.py
@@ -105,6 +105,6 @@ class TrackerWrapper(GObject.GObject):
         music_dir = Tracker.sparql_escape_string(
             GLib.filename_to_uri(music_dir))
 
-        query = "FILTER (STRSTARTS(nie:url(?song), '{}/'))".format(music_dir)
+        query = "FILTER (STRSTARTS(nie:url(?file), '{}/'))".format(music_dir)
 
         return query


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]