[Slim-Checkins] r12746 - /trunk/server/Slim/Plugin/RhapsodyDirect/ProtocolHandler.pm
andy at svn.slimdevices.com
andy at svn.slimdevices.com
Mon Aug 27 17:55:06 PDT 2007
Author: andy
Date: Mon Aug 27 17:55:06 2007
New Revision: 12746
URL: http://svn.slimdevices.com?rev=12746&view=rev
Log:
Rhapsody metadata for normal tracks
Modified:
trunk/server/Slim/Plugin/RhapsodyDirect/ProtocolHandler.pm
Modified: trunk/server/Slim/Plugin/RhapsodyDirect/ProtocolHandler.pm
URL: http://svn.slimdevices.com/trunk/server/Slim/Plugin/RhapsodyDirect/ProtocolHandler.pm?rev=12746&r1=12745&r2=12746&view=diff
==============================================================================
--- trunk/server/Slim/Plugin/RhapsodyDirect/ProtocolHandler.pm (original)
+++ trunk/server/Slim/Plugin/RhapsodyDirect/ProtocolHandler.pm Mon Aug 27 17:55:06 2007
@@ -236,10 +236,17 @@
return;
}
}
-
+
$log->debug("New playback session started");
my ($trackId) = $url =~ /(Tra\.[^.]+)/;
+
+ # Get metadata for normal tracks
+ getTrackMetadata( $client, {
+ trackId => $trackId,
+ callback => \&gotTrackMetadata,
+ passthrough => [ $client ],
+ } );
# Get the track URL via the player
rpds( $client, {
@@ -439,6 +446,58 @@
}
$callback->();
+}
+
+sub getTrackMetadata {
+ my ( $client, $params ) = @_;
+
+ my $trackId = $params->{trackId};
+
+ my $trackURL = Slim::Networking::SqueezeNetwork->url(
+ "/api/rhapsody/opml/metadata/getTrack?trackId=$trackId&json=1"
+ );
+
+ my $http = Slim::Networking::SqueezeNetwork->new(
+ \&gotTrackMetadata,
+ \&gotTrackMetadataError,
+ {
+ client => $client,
+ params => $params,
+ },
+ );
+
+ $log->debug("Getting track metadata for $trackId from SqueezeNetwork");
+
+ $http->get( $trackURL );
+}
+
+sub gotTrackMetadata {
+ my $http = shift;
+ my $client = $http->params->{client};
+ my $params = $http->params->{params};
+
+ my $track = eval { from_json( $http->content ) };
+ if ( $@ ) {
+ $log->warn("Error getting track metadata from SN: $@");
+ $client->pluginData( currentTrack => 0 );
+ return;
+ }
+
+ if ( $log->is_debug ) {
+ $log->debug( 'Got track metadata: ' . Data::Dump::dump($track) );
+ }
+
+ $client->pluginData( currentTrack => $track );
+}
+
+sub gotTrackMetadataError {
+ my $http = shift;
+ my $client = $http->params('client');
+ my $error = $http->error;
+
+ $log->warn("Error getting track metadata from SN: $error");
+
+ $client->pluginData( currentTrack => 0 );
}
sub getNextRadioTrack {
More information about the checkins
mailing list