JSONRPC_STATUS CAudioLibrary::SetArtistDetails(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant ¶meterObject, CVariant &result) { int id = (int)parameterObject["artistid"].asInteger(); CMusicDatabase musicdatabase; if (!musicdatabase.Open()) return InternalError; CArtist artist; if (!musicdatabase.GetArtistInfo(id, artist) || artist.idArtist <= 0) return InvalidParams; if (ParameterNotNull(parameterObject, "artist")) artist.strArtist = parameterObject["artist"].asString(); if (ParameterNotNull(parameterObject, "instrument")) CopyStringArray(parameterObject["instrument"], artist.instruments); if (ParameterNotNull(parameterObject, "style")) CopyStringArray(parameterObject["style"], artist.styles); if (ParameterNotNull(parameterObject, "mood")) CopyStringArray(parameterObject["mood"], artist.moods); if (ParameterNotNull(parameterObject, "born")) artist.strBorn = parameterObject["born"].asString(); if (ParameterNotNull(parameterObject, "formed")) artist.strFormed = parameterObject["formed"].asString(); if (ParameterNotNull(parameterObject, "description")) artist.strBiography = parameterObject["description"].asString(); if (ParameterNotNull(parameterObject, "genre")) CopyStringArray(parameterObject["genre"], artist.genre); if (ParameterNotNull(parameterObject, "died")) artist.strDied = parameterObject["died"].asString(); if (ParameterNotNull(parameterObject, "disbanded")) artist.strDisbanded = parameterObject["disbanded"].asString(); if (ParameterNotNull(parameterObject, "yearsactive")) CopyStringArray(parameterObject["yearsactive"], artist.yearsActive); if (musicdatabase.SetArtistInfo(id, artist) <= 0) return InternalError; CJSONRPCUtils::NotifyItemUpdated(); return ACK; }