[gnome-music] query: Add queries for adding songs to a playlist
- From: Vadim Rutkovsky <vrutkovsky src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-music] query: Add queries for adding songs to a playlist
- Date: Thu, 5 Jun 2014 09:09:09 +0000 (UTC)
commit 6c638ac9ba48abcb25615f824704031784936813
Author: Arnel Borja <arnelborja src gnome org>
Date: Wed Jun 4 00:25:16 2014 +0800
query: Add queries for adding songs to a playlist
gnomemusic/query.py | 58 ++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 55 insertions(+), 3 deletions(-)
---
diff --git a/gnomemusic/query.py b/gnomemusic/query.py
index 3ed1346..28b0290 100644
--- a/gnomemusic/query.py
+++ b/gnomemusic/query.py
@@ -489,7 +489,7 @@ class Query():
return query
@staticmethod
- def playlist_songs(playlist_id):
+ def playlist_songs(playlist_id, filter_clause=None):
query = '''
SELECT
rdf:type(?song)
@@ -509,7 +509,7 @@ class Query():
a nfo:FileDataObject ;
nie:url ?url .
FILTER (
- tracker:id(?playlist) = %(playlist_id)s
+ %(filter_clause)s
)
FILTER (
NOT EXISTS {
@@ -524,6 +524,8 @@ class Query():
nfo:listPosition(?entry)
'''.replace('\n', ' ').strip() % {
'playlist_id': playlist_id,
+ 'filter_clause':
+ filter_clause or 'tracker:id(?playlist) = ' + playlist_id,
'music_dir': Query.MUSIC_DIR,
'download_dir': Query.DOWNLOAD_DIR
}
@@ -612,7 +614,8 @@ class Query():
_:playlist
a nmm:Playlist ;
a nfo:MediaList ;
- nie:title "%(title)s" .
+ nie:title "%(title)s" ;
+ nfo:entryCounter 0 .
}
""".replace("\n", " ").strip() % {
'title': title
@@ -646,6 +649,38 @@ class Query():
return query
@staticmethod
+ def add_song_to_playlist(playlist_id, song_uri):
+ query = """
+ INSERT OR REPLACE {
+ _:entry
+ a nfo:MediaFileListEntry ;
+ nfo:entryUrl "%(song_uri)s" ;
+ nfo:listPosition ?position .
+ ?playlist
+ nfo:entryCounter ?position ;
+ nfo:hasMediaFileListEntry _:entry .
+ }
+ WHERE {
+ SELECT
+ ?playlist
+ (?counter + 1) AS position
+ WHERE {
+ ?playlist
+ a nmm:Playlist ;
+ a nfo:MediaList ;
+ nfo:entryCounter ?counter .
+ FILTER (
+ tracker:id(?playlist) = %(playlist_id)s
+ )
+ }
+ }
+ """.replace("\n", " ").strip() % {
+ 'playlist_id': playlist_id,
+ 'song_uri': song_uri
+ }
+ return query
+
+ @staticmethod
def get_playlist_with_id(playlist_id):
query = """
?playlist a nmm:Playlist .
@@ -668,6 +703,23 @@ class Query():
return query
@staticmethod
+ def get_playlist_song_with_id(playlist_id, entry_id):
+ return Query.playlist_songs(
+ playlist_id, 'tracker:id(?entry) = ' + str(entry_id)
+ )
+
+ @staticmethod
+ def get_playlist_song_with_urn(entry_urn):
+ query = """
+ SELECT DISTINCT
+ tracker:id(<%(entry_urn)s>) AS id
+ WHERE {
+ <%(entry_urn)s> a nfo:MediaFileListEntry
+ }
+ """.replace('\n', ' ').strip() % {'entry_urn': entry_urn}
+ return query
+
+ @staticmethod
def get_song_with_url(url):
query = '''
SELECT DISTINCT
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]