JSONRPC_STATUS CAudioLibrary::GetAdditionalAlbumDetails(const CVariant ¶meterObject, CFileItemList &items, CMusicDatabase &musicdatabase) { if (!musicdatabase.Open()) return InternalError; std::set<std::string> checkProperties; checkProperties.insert("songgenres"); checkProperties.insert("sourceid"); std::set<std::string> additionalProperties; if (!CheckForAdditionalProperties(parameterObject["properties"], checkProperties, additionalProperties)) return OK; if (additionalProperties.find("songgenres") != additionalProperties.end()) { for (int i = 0; i < items.Size(); i++) { CFileItemPtr item = items[i]; musicdatabase.GetGenresByAlbum(item->GetMusicInfoTag()->GetDatabaseId(), item.get()); } } if (additionalProperties.find("sourceid") != additionalProperties.end()) { for (int i = 0; i < items.Size(); i++) { CFileItemPtr item = items[i]; musicdatabase.GetSourcesByAlbum(item->GetMusicInfoTag()->GetDatabaseId(), item.get()); } } return OK; }
JSONRPC_STATUS CAudioLibrary::GetAdditionalAlbumDetails(const CVariant ¶meterObject, CFileItemList &items, CMusicDatabase &musicdatabase) { if (!musicdatabase.Open()) return InternalError; std::set<std::string> checkProperties; checkProperties.insert("genreid"); std::set<std::string> additionalProperties; if (!CheckForAdditionalProperties(parameterObject["properties"], checkProperties, additionalProperties)) return OK; for (int i = 0; i < items.Size(); i++) { CFileItemPtr item = items[i]; if (additionalProperties.find("genreid") != additionalProperties.end()) { std::vector<int> genreids; if (musicdatabase.GetGenresByAlbum(item->GetMusicInfoTag()->GetDatabaseId(), genreids)) { CVariant genreidObj(CVariant::VariantTypeArray); for (std::vector<int>::const_iterator genreid = genreids.begin(); genreid != genreids.end(); ++genreid) genreidObj.push_back(*genreid); item->SetProperty("genreid", genreidObj); } } } return OK; }