[gnome-music/wip/mschraal/smart-playlists-reorder: 2/3] grltrackerplaylists: Resort Recently Played
- From: Marinus Schraal <mschraal src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-music/wip/mschraal/smart-playlists-reorder: 2/3] grltrackerplaylists: Resort Recently Played
- Date: Mon, 2 Mar 2020 17:01:49 +0000 (UTC)
commit d048f3b8b0c4abd64d9d1edae8232d2b9364f823
Author: Marinus Schraal <mschraal gnome org>
Date: Mon Mar 2 15:03:58 2020 +0100
grltrackerplaylists: Resort Recently Played
gnomemusic/coresong.py | 2 ++
gnomemusic/grilowrappers/grltrackerplaylists.py | 26 ++++++++++++++++++++++++-
gnomemusic/grilowrappers/grltrackerwrapper.py | 2 ++
3 files changed, 29 insertions(+), 1 deletion(-)
---
diff --git a/gnomemusic/coresong.py b/gnomemusic/coresong.py
index c2befcb6..7ae04597 100644
--- a/gnomemusic/coresong.py
+++ b/gnomemusic/coresong.py
@@ -39,6 +39,7 @@ class CoreSong(GObject.GObject):
album_disc_number = GObject.Property(type=int)
artist = GObject.Property(type=str)
duration = GObject.Property(type=int)
+ last_played = GObject.Property(type=GLib.DateTime, default=None)
media = GObject.Property(type=Grl.Media)
grlid = GObject.Property(type=str, default=None)
play_count = GObject.Property(type=int)
@@ -118,6 +119,7 @@ class CoreSong(GObject.GObject):
self.props.artist = utils.get_artist_name(media)
self.props.duration = media.get_duration()
self.props.favorite = media.get_favourite()
+ self.props.last_played = media.get_last_played()
self.props.play_count = media.get_play_count()
self.props.title = utils.get_media_title(media)
self.props.track_number = media.get_track_number()
diff --git a/gnomemusic/grilowrappers/grltrackerplaylists.py b/gnomemusic/grilowrappers/grltrackerplaylists.py
index 3a941af3..c5dfe1f5 100644
--- a/gnomemusic/grilowrappers/grltrackerplaylists.py
+++ b/gnomemusic/grilowrappers/grltrackerplaylists.py
@@ -433,7 +433,7 @@ class Playlist(GObject.GObject):
properties = [
"album", "album_disc_number", "artist", "duration", "media",
"grlid", "play_count", "state", "title", "track_number", "url",
- "validation", "favorite", "selected"]
+ "validation", "favorite", "selected", "last_played"]
for prop in properties:
main_coresong.bind_property(
@@ -947,6 +947,7 @@ class RecentlyPlayed(SmartPlaylist):
nie:usageCounter(?song) AS ?play_count
nmm:trackNumber(?song) AS ?track_number
nmm:setNumber(nmm:musicAlbumDisc(?song)) AS ?album_disc_number
+ ?last_played AS ?last_played_time
?tag AS ?favourite
WHERE {
?song a nmm:MusicPiece ;
@@ -962,6 +963,29 @@ class RecentlyPlayed(SmartPlaylist):
"location_filter": self._tracker_wrapper.location_filter()
}
+ def _playlist_sort(self, coresong_a, coresong_b):
+ last_played_a = coresong_a.props.last_played.format_iso8601()
+ last_played_b = coresong_b.props.last_played.format_iso8601()
+
+ if last_played_a != last_played_b:
+ return last_played_a < last_played_b
+
+ title_a = coresong_a.props.title
+ title_b = coresong_b.props.title
+ title_cmp = utils.natural_sort_names(title_a, title_b)
+ if title_cmp != 0:
+ return title_cmp
+
+ album_a = coresong_a.props.album
+ album_b = coresong_b.props.album
+ album_cmp = utils.natural_sort_names(album_a, album_b)
+ if album_cmp != 0:
+ return album_cmp
+
+ artist_a = coresong_a.props.artist
+ artist_b = coresong_b.props.artist
+
+ return utils.natural_sort_names(artist_a, artist_b)
class RecentlyAdded(SmartPlaylist):
"""Recently Added smart playlist"""
diff --git a/gnomemusic/grilowrappers/grltrackerwrapper.py b/gnomemusic/grilowrappers/grltrackerwrapper.py
index 22e7796f..33492d54 100644
--- a/gnomemusic/grilowrappers/grltrackerwrapper.py
+++ b/gnomemusic/grilowrappers/grltrackerwrapper.py
@@ -326,6 +326,7 @@ 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
+ nie:contentAccessed(?song) AS ?last_played_time
?tag AS ?favourite
WHERE {
?song a nmm:MusicPiece .
@@ -414,6 +415,7 @@ 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
+ nie:contentAccessed(?song) AS ?last_played_time
?tag AS ?favourite
WHERE {
?song a nmm:MusicPiece .
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]