[gnome-music/wip/mschraal/flac-cue: 20/22] grltrackerwrapper: Add support for flac+cue
- From: Marinus Schraal <mschraal src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-music/wip/mschraal/flac-cue: 20/22] grltrackerwrapper: Add support for flac+cue
- Date: Mon, 25 Nov 2019 19:39:40 +0000 (UTC)
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]