Common Music Database DBus Interface
- From: Jamie McCracken <jamiemcc blueyonder co uk>
- To: gnome-multimedia gnome org
- Subject: Common Music Database DBus Interface
- Date: Sun, 21 May 2006 11:48:05 +0100
As I now have some time to concentrate on building a common music
database with Tracker(1), I have been looking at Rhythmbox's UI to work
out what sort of methods would be needed.
I intend tracker to be ideally used as a replacement for any currently
used database although it can also be used to feed an existing one (the
former obviously being a lot more efficient especially when user has
huge no of media files)
My proposed Dbus Api for music files is attached.
Also bear in mind that tracker has Dbus Api for non-music specific stuff
like getting/setting metadata, tags, file notifications etc - these
interfaces can be seen at :
http://cvs.gnome.org/viewcvs/tracker/data/tracker-introspect.xml?rev=1.6&view=markup
Also I am keen to make Playlists a first class object too (which means
playlists can have tags and metadata too like "PlayLists.LastPlay" and
"PlayLists.PlayCount" etc).
I also want to explore the idea of virtual playlists (much like
vfolders) so we could have built in playlists for things like "Rock
Music", "Pop Music", "Classical" etc and also things like:
Sixties/Seventies/Eighties/Nineties Music etc.
(1) http://freedesktop.org/wiki/Software/Tracker
--
Mr Jamie McCracken
http://jamiemcc.livejournal.com/
<?xml version="1.0" encoding="UTF-8"?>
<node name="/org/freedesktop/tracker">
<interface name="org.freedesktop.Tracker.Music">
<!-- Returns stats for music files (if include_vfs is true then it also includes VFS based tracks)
track_count returns total no of tracks
artist_count returns total no of unique artists
album_count returns total no of unique albums
-->
<method name="GetStats">
<arg type="b" name="include_vfs" direction="in" />
<arg type="i" name="track_count" direction="out" />
<arg type="i" name="artist_count" direction="out" />
<arg type="i" name="album_count" direction="out" />
</method>
<!-- Returns list of all tracks as uris (if include_vfs is true then it also includes VFS based tracks) -->
<method name="GetTracks">
<arg type="b" name="include_vfs" direction="in" />
<arg type="as" name="result" direction="out" />
</method>
<!-- Returns list of all tracks as uris (if include_vfs is true then it also includes VFS based tracks) plus
common metadata for the tracks as well (this means you can retrieve a huge list of tracks complete with all needed metadata super fast cf Rhythmbox UI).
Output format is array of track uri's followed by the following metadata:
Audio.Title
Audio.Artist
Audio.Album
Audio.Duration
Audio.PlayCount
-->
<method name="GetTracksDetailed">
<arg type="b" name="include_vfs" direction="in" />
<arg type="a{sv}" name="result" direction="out" />
</method>
<!-- Returns unique list of all artists (includes stats for no of tracks per artist)
output format is array of track uri followed by no of tracks for that artist.
(if include_vfs is true then it also includes VFS based ones)
-->
<method name="GetArtists">
<arg type="b" name="include_vfs" direction="in" />
<arg type="a{si}" name="result" direction="out" />
</method>
<!-- Returns unique list of all albums (includes stats for no of tracks per album)
output format is array of album names followed by no of tracks in that album.
(if include_vfs is true then it also includes VFS based ones)
-->
<method name="GetAlbums">
<arg type="b" name="include_vfs" direction="in" />
<arg type="a{si}" name="result" direction="out" />
</method>
<!-- Returns unique list of all albums for an artist (includes stats for no of tracks per album)
output format is array of album names followed by no of tracks in that album.
(if include_vfs is true then it also includes VFS based ones)
-->
<method name="GetAlbumsByArtist">
<arg type="b" name="include_vfs" direction="in" />
<arg type="s" name="artist" direction="in" />
<arg type="a{si}" name="result" direction="out" />
</method>
<!-- Returns unique list of all tracks for an artist
output format is array of track uri.
(if include_vfs is true then it also includes VFS based ones)
-->
<method name="GetTracksByArtist">
<arg type="b" name="include_vfs" direction="in" />
<arg type="s" name="artist" direction="in" />
<arg type="as" name="result" direction="out" />
</method>
<!-- Returns unique list of all tracks for an artist
(if include_vfs is true then it also includes VFS based ones)
Output format is array of track uri's followed by the following metadata:
Audio.Title
Audio.Artist
Audio.Album
Audio.Duration
Audio.PlayCount
-->
<method name="GetTracksByArtistDetailed">
<arg type="b" name="include_vfs" direction="in" />
<arg type="s" name="artist" direction="in" />
<arg type="a{sv}" name="result" direction="out" />
</method>
<!-- Returns unique list of all tracks for an album
output format is array of track uri.
(if include_vfs is true then it also includes VFS based ones)
-->
<method name="GetTracksByAlbum">
<arg type="b" name="include_vfs" direction="in" />
<arg type="s" name="album" direction="in" />
<arg type="as" name="result" direction="out" />
</method>
<!-- Returns unique list of all tracks for an album
(if include_vfs is true then it also includes VFS based ones)
Output format is array of track uri's followed by the following metadata:
Audio.Title
Audio.Artist
Audio.Album
Audio.Duration
Audio.PlayCount
-->
<method name="GetTracksByAlbumDetailed">
<arg type="b" name="include_vfs" direction="in" />
<arg type="s" name="artist" direction="in" />
<arg type="a{sv}" name="result" direction="out" />
</method>
<!-- Convienience method to auto update Audio.PlayCount and Audio.LastPlay metadata when a track has been played-->
<method name="PlayedTrack">
<arg type="s" name="track_uri" direction="in" />
</method>
</interface>
</node>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]