/// <summary> /// Recursive and SLOW call /// </summary> public static MpdDirectory ReadAll(this MPD mpd, string FirstDirectory, Action <string> DirectoryProgressReport = null) { var result = mpd.LsInfo(FirstDirectory).Result; MpdDirectory rootDir = processResult(mpd, result, DirectoryProgressReport); rootDir.Name = ""; return(rootDir); }
private static MpdDirectory processResult(MPD mpd, Responses.SongInfoCollection info, Action <string> DirectoryProgressReport) { List <MpdDirectory> lstDirs = new List <MpdDirectory>(); foreach (var d in info.Where(e => e.Directory != null)) { DirectoryProgressReport?.Invoke(d.Directory); var result = mpd.LsInfo(d.Directory).Result; var dir = processResult(mpd, result, DirectoryProgressReport); dir.Name = d.Directory; lstDirs.Add(dir); } return(new MpdDirectory() { Files = info.Where(e => e.File != null).ToArray(), Directories = lstDirs.ToArray(), }); }