Common Music Database DBus Interface

Jamie McCracken <[email protected]>
Newsgroups gmane.comp.gnome.multimedia
Message-ID <[email protected]>
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/

_______________________________________________
gnome-multimedia mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gnome-multimedia
tracker-music-intorspect.xml (text/xml, 4.7 KB)
<?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>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.