Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        public void Clean()
        {
            var series = _seriesRepository.All().ToList();

            series.ForEach(s =>
            {
                s.CleanTitle = s.CleanTitle.CleanSeriesTitle();
                _seriesRepository.Update(s);
            });
        }
Ejemplo n.º 4
0
        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);
            });
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 7
0
 public List <Series> GetAllSeries()
 {
     return(_seriesRepository.All().ToList());
 }