public static List<Item> GetChildren(Item item) { Logger.ReportInfo("analyze " + item.Path); List<Item> children = new List<Item>(); if (!Directory.Exists(item.Path)) return null; DirectoryInfo dirInfo = new DirectoryInfo(item.Path); DirectoryInfo[] dis = dirInfo.GetDirectories(); Array.Sort(dis, new DirectorySort()); foreach (DirectoryInfo di in dis) { if ((di.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden || di.Attributes == FileAttributes.System || di.Name.EndsWith("$RECYCLE.BIN")) continue; try { var child = new Item(); if (TVUtils.IsSeriesFolder(di)) { child = new Folder(di.FullName); child.Type = Entity.Series; } else if (TVUtils.IsSeasonFolder(di.FullName)) { child = new Folder(di.FullName); child.Type = Entity.Season; child.SeriesName = di.Parent.Name; child.SeasonNumber = TVUtils.SeasonNumberFromFolderName(di.FullName); } else if (IsVideoFolder(di)) { child = new Item(); child.Type = Entity.Movie; } else { child = new Folder(di.FullName); child.Type = Entity.Folder; } child.Title = di.Name; child.Path = di.FullName; child.Id = Helper.GetMD5(di.FullName); child.MetadataLocation = child.Path; children.Add(child); } catch (Exception ex) { Logger.ReportException("Error while analizing " + item.Path, ex); } } foreach (FileInfo fi in dirInfo.GetFiles()) { if (IsVideo(fi.FullName)) { Item child = new Item(); child.Title = Path.GetFileNameWithoutExtension(fi.Name); child.Path = fi.FullName; child.Id = Helper.GetMD5(fi.FullName); child.MetadataLocation = Path.Combine(Path.Combine(Directory.GetParent(fi.FullName).FullName, "metadata"), child.Title); child.Type = Entity.Movie; if (TVUtils.IsEpisode(fi.FullName)) { child.Type = Entity.Episode; child.MetadataLocation = Path.Combine(Directory.GetParent(child.Path).FullName, "metadata"); child.SeasonNumber = TVUtils.SeasonNumberFromEpisodeFile(child.Path); child.EpisodeNumber = TVUtils.EpisodeNumberFromFile(child.Path); if (TVUtils.IsSeriesFolder(dirInfo)) child.SeriesName = dirInfo.Name; } children.Add(child); } } return children; }
protected virtual List<Item> GetNonCachedChildren() { if (this.IsRootFolder) { List<Item> childrenFolders = new List<Item>(); foreach (string folder in RootFolders) { Folder f = new Folder(folder); f.Title = folder; childrenFolders.Add(f); } return childrenFolders; } else return EntityResolver.GetChildren(this); }