static BrowseItem stringToBrowseItem(string strPath, bool isDirectory, List <string> Filters) { if (isDirectory) { if (!Directory.Exists(strPath)) { return(null); } DirectoryInfo di = new DirectoryInfo(strPath); BrowseItem folderItem = directoryInfoToBrowseItem(di, Filters); // Override normal behaviour, which is not to include the full path in the name // (because this current method is used by the root folder selection, so there is no base folder to set) folderItem.Name = strPath; return(folderItem); } else { if (!File.Exists(strPath)) { return(null); } BrowseItem output = new BrowseItem(); output.Name = strPath; output.IsDirectory = false; return(output); } }
static BrowseItem fileInfoToBrowseItem(FileInfo fi, bool getMediaDuration, bool setNameToFullPath) { BrowseItem output = new BrowseItem(); // Name / path if (setNameToFullPath) { output.Name = fi.FullName; } else { output.Name = fi.Name; } output.Size = fi.Length; output.IsDirectory = false; if (getMediaDuration) { try { TimeSpan mDuration = DurationOfMediaFile_OSSpecific(fi.FullName); output.Duration = mDuration.TotalSeconds; } catch (Exception ex) { Functions.WriteLineToLogFileIfAdvanced("Could not get duration of media file: " + fi.FullName + " :"); Functions.WriteExceptionToLogFileIfAdvanced(ex); } } return(output); }
/// <summary> /// Retrieve the files in all registered 7MC movie library folders, with extensions from Settings.Default.VideoFileExtensions /// </summary> /// <returns></returns> static FileBrowseResult GetMoviesInMovieLibrary() { FileBrowseResult output = new FileBrowseResult(); CreateShellHelperIfNull(); output.Directories = new List <BrowseItem>(); MCLibraryFolderHelper fHelper = new MCLibraryFolderHelper(); List <string> movieFolders = fHelper.MediaCenterLibraryFolders(MCLibraryFolderHelper.Libraries.Movie); List <string> VideoFilters = filtersForMediaType(MediaFileTypes.Video); List <BrowseItem> filesFound = new List <BrowseItem>(); foreach (string movieFolder in movieFolders) { browseFolderForFiles(movieFolder, ref filesFound, VideoFilters, true); } // Now add recorded TV shows that are movies foreach (TVProgramme tvp in RecTV.Default.RecordedTVProgrammes.Values) { if (tvp.ProgramType != TVProgrammeType.Movie) { continue; // movies only } FileInfo fi = new FileInfo(tvp.Filename); BrowseItem newItem = fileInfoToBrowseItem(fi, true, true); filesFound.Add(newItem); } // Sort the list of movies alphabetically by filename (NAME not file path, path is stripped away by the comparer) CommonEPG.Comparers.BrowseItemComparer bComparer = new CommonEPG.Comparers.BrowseItemComparer(); filesFound.Sort(bComparer); output.Files = filesFound; // Set base directory flag output.BaseDirectory = "MOVIE_LIBRARY"; output.Success = true; sHelper = null; return(output); }
static BrowseItem directoryInfoToBrowseItem(DirectoryInfo di, List <string> Filters) { BrowseItem output = new BrowseItem(); output.Name = di.Name; output.IsDirectory = true; // Number of Items int numberOfSubdirectories = di.GetDirectories().Count(); int numberOfFiles = 0; foreach (string filter in Filters) { numberOfFiles += di.GetFiles(filter).Count(); } output.Items = numberOfSubdirectories + numberOfFiles; return(output); }
/// <summary> /// Recursing function to browse a folder /// </summary> /// <param name="browseItems"></param> /// <param name="Filters"></param> static void browseFolderForFiles(string folderPath, ref List <BrowseItem> browseItems, List <string> Filters, bool getMediaDuration) { DirectoryInfo diThis = new DirectoryInfo(folderPath); // RECURSE foreach (DirectoryInfo diChild in diThis.GetDirectories()) { browseFolderForFiles(diChild.FullName, ref browseItems, Filters, getMediaDuration); } // Now add my files foreach (string filter in Filters) { foreach (FileInfo fiChild in diThis.GetFiles(filter)) { BrowseItem newItem = fileInfoToBrowseItem(fiChild, getMediaDuration, true); browseItems.Add(newItem); } } }
static FileBrowseResult GetFoldersForLibrary(string libraryName, List <string> Filters) // music, videos, pictures, documents { FileBrowseResult output = new FileBrowseResult(); CreateShellHelperIfNull(); try { List <String> folders = new List <string>(); folders = FoldersForLibrary(libraryName); foreach (string folder in folders) { BrowseItem folderItem = stringToBrowseItem(folder, true, Filters); if (folderItem != null) { output.Directories.Add(folderItem); } } output.ErrorText = "OK"; output.Success = true; } catch (ArgumentException) { output.Success = false; output.ErrorText = "NO LIBRARY"; } catch (Exception ex) { output.Success = false; output.ErrorText = ex.Message; } sHelper = null; return(output); }