[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