Common Music Database DBus Interface



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]