public List <UnmappedFolder> GetUnmappedFolders(string path) { Logger.Debug("Generating list of unmapped folders"); if (String.IsNullOrEmpty(path)) { throw new ArgumentException("Invalid path provided", "path"); } var results = new List <UnmappedFolder>(); var series = _seriesRepository.All().ToList(); if (!_diskProvider.FolderExists(path)) { Logger.Debug("Path supplied does not exist: {0}", path); return(results); } var seriesFolders = _diskProvider.GetDirectories(path).ToList(); var unmappedFolders = seriesFolders.Except(series.Select(s => s.Path), PathEqualityComparer.Instance).ToList(); foreach (string unmappedFolder in unmappedFolders) { var di = new DirectoryInfo(unmappedFolder.Normalize()); results.Add(new UnmappedFolder { Name = di.Name, Path = di.FullName }); } var setToRemove = SpecialFolders; results.RemoveAll(x => setToRemove.Contains(new DirectoryInfo(x.Path.ToLowerInvariant()).Name)); Logger.Debug("{0} unmapped folders detected.", results.Count); return(results); }
public Series FindByTitleInexact(string title) { // find any series clean title within the provided release title string cleanTitle = title.CleanSeriesTitle(); var list = _seriesRepository.All().Where(s => cleanTitle.Contains(s.CleanTitle)).ToList(); if (!list.Any()) { // no series matched return(null); } else if (list.Count == 1) { // return the first series if there is only one return(list.Single()); } else { // build ordered list of series by position in the search string var query = list.Select(series => new { position = cleanTitle.IndexOf(series.CleanTitle), length = series.CleanTitle.Length, series = series }) .Where(s => (s.position >= 0)) .ToList() .OrderBy(s => s.position) .ThenByDescending(s => s.length) .ToList(); // get the leftmost series that is the longest // series are usually the first thing in release title, so we select the leftmost and longest match var match = query.First().series; _logger.Debug("Multiple series matched {0} from title {1}", match.Title, title); foreach (var entry in list) { _logger.Debug("Multiple series match candidate: {0} cleantitle: {1}", entry.Title, entry.CleanTitle); } return(match); } }
public void Clean() { var series = _seriesRepository.All().ToList(); series.ForEach(s => { s.CleanTitle = s.CleanTitle.CleanSeriesTitle(); _seriesRepository.Update(s); }); }
public void Clean() { _logger.Debug("Updating CleanTitle for all series"); var series = _seriesRepository.All().ToList(); series.ForEach(s => { s.CleanTitle = s.CleanTitle.CleanSeriesTitle(); _seriesRepository.Update(s); }); }
public void Clean() { var series = _seriesRepository.All().ToList(); series.ForEach(s => { var cleanTitle = s.Title.CleanSeriesTitle(); if (s.CleanTitle != cleanTitle) { s.CleanTitle = cleanTitle; _seriesRepository.Update(s); } }); }
public void Clean() { var languageProfiles = _languageProfileService.All(); var firstLangaugeProfile = languageProfiles.First(); var series = _seriesRepository.All().ToList(); var seriesToUpdate = new List <Series>(); series.ForEach(s => { if (s.LanguageProfileId == 0 || languageProfiles.None(l => l.Id == s.LanguageProfileId)) { s.LanguageProfileId = firstLangaugeProfile.Id; seriesToUpdate.Add(s); } }); _seriesRepository.UpdateMany(seriesToUpdate); }
public List <Series> GetAllSeries() { return(_seriesRepository.All().ToList()); }