bool CDirectoryNodeAlbumRecentlyPlayed::GetContent(CFileItemList& items) { CMusicDatabase musicdatabase; if (!musicdatabase.Open()) return false; VECALBUMS albums; if (!musicdatabase.GetRecentlyPlayedAlbums(albums)) { musicdatabase.Close(); return false; } for (int i=0; i<(int)albums.size(); ++i) { CAlbum& album=albums[i]; CStdString strDir; strDir.Format("%s%ld/", BuildPath().c_str(), album.idAlbum); CFileItemPtr pItem(new CFileItem(strDir, album)); items.Add(pItem); } musicdatabase.Close(); return true; }
JSONRPC_STATUS CAudioLibrary::GetRecentlyPlayedAlbums(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant ¶meterObject, CVariant &result) { CMusicDatabase musicdatabase; if (!musicdatabase.Open()) return InternalError; VECALBUMS albums; if (!musicdatabase.GetRecentlyPlayedAlbums(albums)) return InternalError; CFileItemList items; for (unsigned int index = 0; index < albums.size(); index++) { CStdString path; path.Format("musicdb://7/%i/", albums[index].idAlbum); CFileItemPtr item; FillAlbumItem(albums[index], path, item); items.Add(item); } JSONRPC_STATUS ret = GetAdditionalAlbumDetails(parameterObject, items, musicdatabase); if (ret != OK) return ret; HandleFileItemList("albumid", false, "albums", items, parameterObject, result); return OK; }