[Slim-Checkins] r12736 - in /trunk/server: HTML/Default/html/main.js Slim/Control/Queries.pm Slim/Plugin/Pandora/ProtocolHandler.pm

andy at svn.slimdevices.com andy at svn.slimdevices.com
Mon Aug 27 08:38:08 PDT 2007


Author: andy
Date: Mon Aug 27 08:38:08 2007
New Revision: 12736

URL: http://svn.slimdevices.com?rev=12736&view=rev
Log:
Display plugin-specific metadata (Pandora) in new skin

Modified:
    trunk/server/HTML/Default/html/main.js
    trunk/server/Slim/Control/Queries.pm
    trunk/server/Slim/Plugin/Pandora/ProtocolHandler.pm

Modified: trunk/server/HTML/Default/html/main.js
URL: http://svn.slimdevices.com/trunk/server/HTML/Default/html/main.js?rev=12736&r1=12735&r2=12736&view=diff
==============================================================================
--- trunk/server/HTML/Default/html/main.js (original)
+++ trunk/server/HTML/Default/html/main.js Mon Aug 27 08:38:08 2007
@@ -387,20 +387,42 @@
 						}
 
 						if (result.playlist_tracks > 0) {
+							
+							// Handle plugin-specific metadata, i.e. Pandora
+							if (result.current_meta) {
+								result.playlist_loop[0].id     = null;
+								result.playlist_loop[0].title  = result.current_meta.title;
+								result.playlist_loop[0].artist = result.current_meta.artist;
+								result.playlist_loop[0].album  = result.current_meta.album;
+								if (result.current_meta.cover) {
+									Ext.get('ctrlCurrentArt').update('<img src="' + result.current_meta.cover + '" height="96">');
+								}
+							}
+							
 							Ext.get('ctrlCurrentTitle').update(
-								result.current_title ? result.current_title : (
+								(result.current_title && !result.current_meta) ? result.current_title : (
 									(result.playlist_loop[0].disc ? result.playlist_loop[0].disc + '-' : '')
-									+ result.playlist_loop[0].tracknum + ". " + result.playlist_loop[0].title
+									+ 
+									(result.playlist_loop[0].tracknum ? result.playlist_loop[0].tracknum + ". " : '')
+									+
+									result.playlist_loop[0].title
 								)
 							);
 	//						Ext.get('statusSongCount').update(result.playlist_tracks);
 	//						Ext.get('statusPlayNum').update(result.playlist_cur_index + 1);
 							Ext.get('ctrlBitrate').update(result.playlist_loop[0].bitrate);
-							Ext.get('ctrlCurrentArtist').update(result.playlist_loop[0].artist);
-							Ext.get('ctrlCurrentAlbum').update(
-								result.playlist_loop[0].album 
-								+ (result.playlist_loop[0].year ? ' (' + result.playlist_loop[0].year +')' : '')
-							);
+							
+							if (result.playlist_loop[0].artist) {
+								Ext.get('ctrlCurrentArtist').update(result.playlist_loop[0].artist);
+							}
+							
+							if (result.playlist_loop[0].album) {
+								Ext.get('ctrlCurrentAlbum').update(
+									result.playlist_loop[0].album 
+									+ (result.playlist_loop[0].year ? ' (' + result.playlist_loop[0].year +')' : '')
+								);
+							}
+							
 							if (result.playlist_loop[0].id) {
 								Ext.get('ctrlCurrentArt').update('<img src="/music/' + result.playlist_loop[0].id + '/cover_96x96.jpg">');
 							}

Modified: trunk/server/Slim/Control/Queries.pm
URL: http://svn.slimdevices.com/trunk/server/Slim/Control/Queries.pm?rev=12736&r1=12735&r2=12736&view=diff
==============================================================================
--- trunk/server/Slim/Control/Queries.pm (original)
+++ trunk/server/Slim/Control/Queries.pm Mon Aug 27 08:38:08 2007
@@ -2538,6 +2538,11 @@
 				$request->addResult('remote', 1);
 				$request->addResult('current_title', 
 					Slim::Music::Info::getCurrentTitle($client, $song));
+				
+				my $handler = Slim::Player::ProtocolHandlers->handlerForURL($song);
+				if ( $handler && $handler->can('getCurrentMeta') ) {
+					$request->addResult( 'current_meta', $handler->getCurrentMeta( $client, $song ) );
+				}
 			}
 			
 			$request->addResult('time', 

Modified: trunk/server/Slim/Plugin/Pandora/ProtocolHandler.pm
URL: http://svn.slimdevices.com/trunk/server/Slim/Plugin/Pandora/ProtocolHandler.pm?rev=12736&r1=12735&r2=12736&view=diff
==============================================================================
--- trunk/server/Slim/Plugin/Pandora/ProtocolHandler.pm (original)
+++ trunk/server/Slim/Plugin/Pandora/ProtocolHandler.pm Mon Aug 27 08:38:08 2007
@@ -9,6 +9,7 @@
 
 use JSON::XS qw(from_json);
 
+use Slim::Player::Playlist;
 use Slim::Utils::Misc;
 
 my $log = Slim::Utils::Log->addLogCategory({
@@ -393,9 +394,10 @@
 		# A new song has started playing.  We use this to change titles
 		my $track = $client->pluginData('currentTrack');
 		
-		my $title = $track->{songName} . ' ' . $client->string('BY') . ' '
-				  . $track->{artistName} . ' ' . $client->string('FROM') . ' '
-				  . $track->{albumName};
+		my $title 
+			= $track->{songName} . ' ' . $client->string('BY') . ' '
+			. $track->{artistName} . ' ' . $client->string('FROM') . ' '
+			. $track->{albumName};
 		
 		setCurrentTitle( $client, $url, $title );
 		
@@ -511,4 +513,18 @@
 	return $client->pluginData('currentTitle');
 }
 
+# Metadata hashref used by CLI/JSON clients
+sub getCurrentMeta {
+	my ( $class, $client, $url ) = @_;
+	
+	my $track = $client->pluginData('currentTrack') || return;
+	
+	return {
+		artist => $track->{artistName},
+		album  => $track->{albumName},
+		title  => $track->{songName},
+		cover  => $track->{albumArtUrl},
+	};
+}
+
 1;



More information about the checkins mailing list