/** * getArtistInfo * Returns artist info with biography, image URLs and similar artists, using data from last.fm. * Takes artist id in parameter with optional similar artist count and if not present similar artist should be returned. */ public static function getartistinfo($input) { $id = self::check_parameter($input, 'id'); $count = $input['count'] ?: 20; $includeNotPresent = $input['includeNotPresent'] === "true"; if (Subsonic_XML_Data::isArtist($id)) { $artist_id = Subsonic_XML_Data::getAmpacheId($id); $info = Recommendation::get_artist_info($artist_id); $similars = Recommendation::get_artists_like($artist_id, $count, !$includeNotPresent); $r = Subsonic_XML_Data::createSuccessResponse(); Subsonic_XML_Data::addArtistInfo($r, $info, $similars); } else { $r = Subsonic_XML_Data::createError(Subsonic_XML_Data::SSERROR_DATA_NOTFOUND); } self::apiOutput($input, $r); }
if ($similar['id']) { $object_ids[] = $similar['id']; } else { $missing_objects[] = $similar; } } } ob_start(); require_once AmpConfig::get('prefix') . UI::find_template('show_recommended_artists.inc.php'); $results['similar_artist'] = ob_get_clean(); } break; case 'similar_now_playing': $media_id = $_REQUEST['media_id']; if (AmpConfig::get('show_similar') && isset($media_id) && isset($_REQUEST['media_artist'])) { $artists = Recommendation::get_artists_like($_REQUEST['media_artist'], 3, false); $songs = Recommendation::get_songs_like($media_id, 3); ob_start(); require_once AmpConfig::get('prefix') . UI::find_template('show_now_playing_similar.inc.php'); $results['similar_items_' . $media_id] = ob_get_clean(); } break; case 'concerts': if (AmpConfig::get('show_concerts') && isset($_REQUEST['artist'])) { $artist = new Artist($_REQUEST['artist']); $artist->format(); if ($artist->id) { $up_concerts = Artist_Event::get_upcoming_events($artist); $past_concerts = Artist_Event::get_past_events($artist); $coming_concerts = array(); $concerts = array();