public static List<FolderSelectionItem> getEnabledAndValidFoldersForMedia(FileInfo fileInfo, bool includeReadOnly, bool skipErrorInfo) { List<FolderSelectionItem> result = new List<FolderSelectionItem>(); List<SettingsFolder> allFolders = AllFolders; List<SettingsFolder> toRemove = new List<SettingsFolder>(); // remove not enabled and if fileinfo is null all relative paths foreach (SettingsFolder settingsFolder in allFolders) { if (!settingsFolder.Enabled) { toRemove.Add(settingsFolder); } else { if (fileInfo == null && !Path.IsPathRooted(settingsFolder.Folder)) { toRemove.Add(settingsFolder); } } } foreach (SettingsFolder settingsFolder in allFolders) { if (toRemove.Contains(settingsFolder)) continue; string folder = settingsFolder.Folder; if (fileInfo != null && !Path.IsPathRooted(settingsFolder.Folder)) { folder = FileUtils.ResolveRelativePath(settingsFolder.Folder, Path.GetDirectoryName(fileInfo.FullName)); } if (folder != null) { FolderSelectionItem newFolderSelectionItem = new FolderSelectionItem() { FolderName = folder, //FolderErrorInfo = getFolderErrorInfo(folder), OriginalFolderName = settingsFolder.Folder, WasRelative = !Path.IsPathRooted(settingsFolder.Folder), DefaultForMovies = settingsFolder.DefaultForMovies, DefaultForTVShows = settingsFolder.DefaultForTVShows }; if (skipErrorInfo) newFolderSelectionItem.FolderErrorInfo = FolderErrorInfo.OK; else newFolderSelectionItem.FolderErrorInfo = getFolderErrorInfo(folder); if (!includeReadOnly) { if (newFolderSelectionItem.FolderErrorInfo == FolderErrorInfo.ReadOnly || newFolderSelectionItem.FolderErrorInfo == FolderErrorInfo.Inaccessible) continue; } result.Add(newFolderSelectionItem); } } return result; }
public void DownloadSubtitle(SubtitleItem subtitleItem, BasicMediaDetail mediaDetail, FolderSelectionItem folderSelectionItem, SubtitlesSearchType searchType, bool skipDefaults) { if (IsCanceled()) Kill(); if (_subtitlesDownloaderThread != null && _subtitlesDownloaderThread.IsAlive) return; _isCanceled = false; _status = ThreadStatus.StatusEnded; DownloadData downloadData = new DownloadData { SubtitleItem = subtitleItem, MediaDetail = mediaDetail, FolderSelectionItem = folderSelectionItem, SearchType = searchType, SkipDefaults = skipDefaults, StatusList = new List<SubtitleDownloadStatus>() }; _subtitlesDownloaderThread = new Thread(DownloadSubtitleAsync); _subtitlesDownloaderThread.IsBackground = true; _subtitlesDownloaderThread.Name = "Subtitles Downloader Thread"; _subtitlesDownloaderThread.Start(downloadData); }