You've already forked Sonarr
							
							
				mirror of
				https://github.com/Sonarr/Sonarr.git
				synced 2025-10-31 00:07:55 +02:00 
			
		
		
		
	Xem is used now
This commit is contained in:
		| @@ -128,7 +128,7 @@ namespace NzbDrone.Core.Test.MediaFileTests | ||||
|             imported.Add(new ImportDecision(localEpisode)); | ||||
|  | ||||
|             Mocker.GetMock<IMakeImportDecision>() | ||||
|                   .Setup(s => s.GetImportDecisions(It.IsAny<IEnumerable<String>>(), It.IsAny<Series>())) | ||||
|                   .Setup(s => s.GetImportDecisions(It.IsAny<IEnumerable<String>>(), It.IsAny<Series>(), true)) | ||||
|                   .Returns(imported); | ||||
|  | ||||
|             Mocker.GetMock<IImportApprovedEpisodes>() | ||||
|   | ||||
| @@ -64,7 +64,8 @@ namespace NzbDrone.Core.Test.MediaFileTests.EpisodeImportTests | ||||
|             _series = new Series(); | ||||
|             _localEpisode = new LocalEpisode { Series = _series, Path = @"C:\Test\Unsorted\The.Office.S03E115.DVDRip.XviD-OSiTV.avi" }; | ||||
|  | ||||
|             Mocker.GetMock<IParsingService>().Setup(c => c.GetEpisodes(It.IsAny<String>(), It.IsAny<Series>())) | ||||
|             Mocker.GetMock<IParsingService>() | ||||
|                   .Setup(c => c.GetEpisodes(It.IsAny<String>(), It.IsAny<Series>(), It.IsAny<Boolean>())) | ||||
|                   .Returns(_localEpisode); | ||||
|  | ||||
|  | ||||
| @@ -84,7 +85,7 @@ namespace NzbDrone.Core.Test.MediaFileTests.EpisodeImportTests | ||||
|         { | ||||
|             GivenSpecifications(_pass1, _pass2, _pass3, _fail1, _fail2, _fail3); | ||||
|  | ||||
|             Subject.GetImportDecisions(_videoFiles, new Series()); | ||||
|             Subject.GetImportDecisions(_videoFiles, new Series(), false); | ||||
|  | ||||
|             _fail1.Verify(c => c.IsSatisfiedBy(_localEpisode), Times.Once()); | ||||
|             _fail2.Verify(c => c.IsSatisfiedBy(_localEpisode), Times.Once()); | ||||
| @@ -99,7 +100,7 @@ namespace NzbDrone.Core.Test.MediaFileTests.EpisodeImportTests | ||||
|         { | ||||
|             GivenSpecifications(_fail1); | ||||
|  | ||||
|             var result = Subject.GetImportDecisions(_videoFiles, new Series()); | ||||
|             var result = Subject.GetImportDecisions(_videoFiles, new Series(), false); | ||||
|  | ||||
|             result.Single().Approved.Should().BeFalse(); | ||||
|         } | ||||
| @@ -109,7 +110,7 @@ namespace NzbDrone.Core.Test.MediaFileTests.EpisodeImportTests | ||||
|         { | ||||
|             GivenSpecifications(_pass1, _fail1, _pass2, _pass3); | ||||
|  | ||||
|             var result = Subject.GetImportDecisions(_videoFiles, new Series()); | ||||
|             var result = Subject.GetImportDecisions(_videoFiles, new Series(), false); | ||||
|  | ||||
|             result.Single().Approved.Should().BeFalse(); | ||||
|         } | ||||
| @@ -119,7 +120,7 @@ namespace NzbDrone.Core.Test.MediaFileTests.EpisodeImportTests | ||||
|         { | ||||
|             GivenSpecifications(_pass1, _pass2, _pass3); | ||||
|  | ||||
|             var result = Subject.GetImportDecisions(_videoFiles, new Series()); | ||||
|             var result = Subject.GetImportDecisions(_videoFiles, new Series(), false); | ||||
|  | ||||
|             result.Single().Approved.Should().BeTrue(); | ||||
|         } | ||||
| @@ -129,7 +130,7 @@ namespace NzbDrone.Core.Test.MediaFileTests.EpisodeImportTests | ||||
|         { | ||||
|             GivenSpecifications(_pass1, _pass2, _pass3, _fail1, _fail2, _fail3); | ||||
|  | ||||
|             var result = Subject.GetImportDecisions(_videoFiles, new Series()); | ||||
|             var result = Subject.GetImportDecisions(_videoFiles, new Series(), false); | ||||
|             result.Single().Rejections.Should().HaveCount(3); | ||||
|         } | ||||
|  | ||||
| @@ -138,7 +139,7 @@ namespace NzbDrone.Core.Test.MediaFileTests.EpisodeImportTests | ||||
|         { | ||||
|             GivenSpecifications(_pass1); | ||||
|  | ||||
|             Mocker.GetMock<IParsingService>().Setup(c => c.GetEpisodes(It.IsAny<String>(), It.IsAny<Series>())) | ||||
|             Mocker.GetMock<IParsingService>().Setup(c => c.GetEpisodes(It.IsAny<String>(), It.IsAny<Series>(), It.IsAny<Boolean>())) | ||||
|                      .Throws<TestException>(); | ||||
|  | ||||
|             _videoFiles = new List<String> | ||||
| @@ -153,7 +154,7 @@ namespace NzbDrone.Core.Test.MediaFileTests.EpisodeImportTests | ||||
|                 .Setup(c => c.FilterExistingFiles(_videoFiles, It.IsAny<int>())) | ||||
|                 .Returns(_videoFiles); | ||||
|  | ||||
|             Subject.GetImportDecisions(_videoFiles, new Series()); | ||||
|             Subject.GetImportDecisions(_videoFiles, new Series(), false); | ||||
|  | ||||
|             Mocker.GetMock<IParsingService>() | ||||
|                   .Verify(c => c.GetEpisodes(It.IsAny<String>(), It.IsAny<Series>()), Times.Exactly(_videoFiles.Count)); | ||||
|   | ||||
| @@ -56,23 +56,31 @@ namespace NzbDrone.Core.IndexerSearch | ||||
|                 return SearchDaily(episode.SeriesId, episode.AirDate.Value.Date); | ||||
|             } | ||||
|  | ||||
|             return SearchSingle(episode.SeriesId, episode.SeasonNumber, episode.EpisodeNumber); | ||||
|             return SearchSingle(series, episode); | ||||
|         } | ||||
|  | ||||
|         private List<DownloadDecision> SearchSingle(int seriesId, int seasonNumber, int episodeNumber) | ||||
|         private List<DownloadDecision> SearchSingle(Series series, Episode episode) | ||||
|         { | ||||
|             var searchSpec = Get<SingleEpisodeSearchCriteria>(seriesId, seasonNumber); | ||||
|             var searchSpec = Get<SingleEpisodeSearchCriteria>(series.Id, episode.SeasonNumber); | ||||
|  | ||||
|             if (_seriesService.GetSeries(seriesId).UseSceneNumbering) | ||||
|             if (series.UseSceneNumbering) | ||||
|             { | ||||
|                 var episode = _episodeService.GetEpisode(seriesId, seasonNumber, episodeNumber); | ||||
|                 searchSpec.EpisodeNumber = episode.SceneEpisodeNumber; | ||||
|                 searchSpec.SeasonNumber = episode.SceneSeasonNumber; | ||||
|                 if (episode.SceneSeasonNumber > 0 && episode.SceneEpisodeNumber > 0) | ||||
|                 { | ||||
|                     searchSpec.EpisodeNumber = episode.SceneEpisodeNumber; | ||||
|                     searchSpec.SeasonNumber = episode.SceneSeasonNumber; | ||||
|                 } | ||||
|  | ||||
|                 else | ||||
|                 { | ||||
|                     searchSpec.EpisodeNumber = episode.EpisodeNumber; | ||||
|                     searchSpec.SeasonNumber = episode.SeasonNumber; | ||||
|                 } | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 searchSpec.EpisodeNumber = episodeNumber; | ||||
|                 searchSpec.SeasonNumber = seasonNumber; | ||||
|                 searchSpec.EpisodeNumber = episode.EpisodeNumber; | ||||
|                 searchSpec.SeasonNumber = episode.SeasonNumber; | ||||
|             } | ||||
|  | ||||
|             return Dispatch(indexer => _feedFetcher.Fetch(indexer, searchSpec), searchSpec); | ||||
|   | ||||
| @@ -40,7 +40,7 @@ namespace NzbDrone.Core.Jobs | ||||
|             var defaultTasks = new[] | ||||
|                 { | ||||
|                     new ScheduledTask{ Interval = 15, TypeName = typeof(RssSyncCommand).FullName}, | ||||
|                     new ScheduledTask{ Interval = 12*60, TypeName = typeof(UpdateXemMappings).FullName}, | ||||
|                     new ScheduledTask{ Interval = 12*60, TypeName = typeof(UpdateXemMappingsCommand).FullName}, | ||||
|                     new ScheduledTask{ Interval = 12*60, TypeName = typeof(RefreshSeriesCommand).FullName}, | ||||
|                     new ScheduledTask{ Interval = 1, TypeName = typeof(DownloadedEpisodesScanCommand).FullName}, | ||||
|                     new ScheduledTask{ Interval = 5, TypeName = typeof(ApplicationUpdateCommand).FullName}, | ||||
|   | ||||
| @@ -52,7 +52,7 @@ namespace NzbDrone.Core.MediaFiles | ||||
|  | ||||
|             var mediaFileList = GetVideoFiles(series.Path); | ||||
|  | ||||
|             var decisions = _importDecisionMaker.GetImportDecisions(mediaFileList, series); | ||||
|             var decisions = _importDecisionMaker.GetImportDecisions(mediaFileList, series, false); | ||||
|             _importApprovedEpisodes.Import(decisions); | ||||
|         } | ||||
|  | ||||
|   | ||||
| @@ -135,7 +135,7 @@ namespace NzbDrone.Core.MediaFiles | ||||
|  | ||||
|         private List<ImportDecision> ProcessFiles(IEnumerable<string> videoFiles, Series series) | ||||
|         { | ||||
|             var decisions = _importDecisionMaker.GetImportDecisions(videoFiles, series); | ||||
|             var decisions = _importDecisionMaker.GetImportDecisions(videoFiles, series, true); | ||||
|             return _importApprovedEpisodes.Import(decisions, true); | ||||
|         } | ||||
|  | ||||
|   | ||||
| @@ -14,7 +14,7 @@ namespace NzbDrone.Core.MediaFiles.EpisodeImport | ||||
| { | ||||
|     public interface IMakeImportDecision | ||||
|     { | ||||
|         List<ImportDecision> GetImportDecisions(IEnumerable<String> videoFiles, Series series); | ||||
|         List<ImportDecision> GetImportDecisions(IEnumerable<String> videoFiles, Series series, bool sceneSource); | ||||
|     } | ||||
|  | ||||
|     public class ImportDecisionMaker : IMakeImportDecision | ||||
| @@ -39,16 +39,16 @@ namespace NzbDrone.Core.MediaFiles.EpisodeImport | ||||
|             _logger = logger; | ||||
|         } | ||||
|  | ||||
|         public List<ImportDecision> GetImportDecisions(IEnumerable<String> videoFiles, Series series) | ||||
|         public List<ImportDecision> GetImportDecisions(IEnumerable<string> videoFiles, Series series, bool sceneSource) | ||||
|         { | ||||
|             var newFiles = _mediaFileService.FilterExistingFiles(videoFiles.ToList(), series.Id); | ||||
|  | ||||
|             _logger.Debug("Analysing {0}/{1} files.", newFiles.Count, videoFiles.Count()); | ||||
|  | ||||
|             return GetDecisions(newFiles, series).ToList(); | ||||
|             return GetDecisions(newFiles, series, sceneSource).ToList(); | ||||
|         } | ||||
|  | ||||
|         private IEnumerable<ImportDecision> GetDecisions(IEnumerable<String> videoFiles, Series series) | ||||
|         private IEnumerable<ImportDecision> GetDecisions(IEnumerable<String> videoFiles, Series series, bool sceneSource) | ||||
|         { | ||||
|             foreach (var file in videoFiles) | ||||
|             { | ||||
| @@ -56,7 +56,7 @@ namespace NzbDrone.Core.MediaFiles.EpisodeImport | ||||
|  | ||||
|                 try | ||||
|                 { | ||||
|                     var parsedEpisode = _parsingService.GetEpisodes(file, series); | ||||
|                     var parsedEpisode = _parsingService.GetEpisodes(file, series, sceneSource); | ||||
|                      | ||||
|                     if (parsedEpisode != null) | ||||
|                     { | ||||
|   | ||||
| @@ -382,7 +382,7 @@ | ||||
|     <Compile Include="Parser\Model\ReportInfo.cs" /> | ||||
|     <Compile Include="Parser\Parser.cs" /> | ||||
|     <Compile Include="Parser\ParsingService.cs" /> | ||||
|     <Compile Include="Providers\UpdateXemMappings.cs" /> | ||||
|     <Compile Include="Providers\UpdateXemMappingsCommand.cs" /> | ||||
|     <Compile Include="Qualities\QualityProfileInUseException.cs" /> | ||||
|     <Compile Include="Qualities\QualitySizeRepository.cs" /> | ||||
|     <Compile Include="Qualities\QualityProfileRepository.cs" /> | ||||
|   | ||||
| @@ -14,7 +14,6 @@ namespace NzbDrone.Core.Parser.Model | ||||
|         public Language Language { get; set; } | ||||
|          | ||||
|         public bool FullSeason { get; set; } | ||||
|         public bool SceneSource { get; set; } | ||||
|  | ||||
|         public override string ToString() | ||||
|         { | ||||
|   | ||||
| @@ -9,6 +9,7 @@ namespace NzbDrone.Core.Parser | ||||
|     public interface IParsingService | ||||
|     { | ||||
|         LocalEpisode GetEpisodes(string filename, Series series); | ||||
|         LocalEpisode GetEpisodes(string filename, Series series, bool sceneSource); | ||||
|         Series GetSeries(string title); | ||||
|         RemoteEpisode Map(ParsedEpisodeInfo parsedEpisodeInfo); | ||||
|     } | ||||
| @@ -27,6 +28,11 @@ namespace NzbDrone.Core.Parser | ||||
|         } | ||||
|  | ||||
|         public LocalEpisode GetEpisodes(string filename, Series series) | ||||
|         { | ||||
|             return GetEpisodes(filename, series, false); | ||||
|         } | ||||
|  | ||||
|         public LocalEpisode GetEpisodes(string filename, Series series, bool sceneSource) | ||||
|         { | ||||
|             var parsedEpisodeInfo = Parser.ParsePath(filename); | ||||
|  | ||||
| @@ -35,7 +41,7 @@ namespace NzbDrone.Core.Parser | ||||
|                 return null; | ||||
|             } | ||||
|  | ||||
|             var episodes = GetEpisodes(parsedEpisodeInfo, series); | ||||
|             var episodes = GetEpisodes(parsedEpisodeInfo, series, sceneSource); | ||||
|  | ||||
|             if (!episodes.Any()) | ||||
|             { | ||||
| @@ -43,13 +49,13 @@ namespace NzbDrone.Core.Parser | ||||
|             } | ||||
|  | ||||
|             return new LocalEpisode | ||||
|                 { | ||||
|                     Series = series, | ||||
|                     Quality = parsedEpisodeInfo.Quality, | ||||
|                     Episodes = episodes, | ||||
|                     Path = filename, | ||||
|                     ParsedEpisodeInfo =  parsedEpisodeInfo | ||||
|                 }; | ||||
|             { | ||||
|                 Series = series, | ||||
|                 Quality = parsedEpisodeInfo.Quality, | ||||
|                 Episodes = episodes, | ||||
|                 Path = filename, | ||||
|                 ParsedEpisodeInfo = parsedEpisodeInfo | ||||
|             }; | ||||
|         } | ||||
|  | ||||
|         public Series GetSeries(string title) | ||||
| @@ -82,12 +88,12 @@ namespace NzbDrone.Core.Parser | ||||
|             } | ||||
|  | ||||
|             remoteEpisode.Series = series; | ||||
|             remoteEpisode.Episodes = GetEpisodes(parsedEpisodeInfo, series); | ||||
|             remoteEpisode.Episodes = GetEpisodes(parsedEpisodeInfo, series, true); | ||||
|  | ||||
|             return remoteEpisode; | ||||
|         } | ||||
|  | ||||
|         private List<Episode> GetEpisodes(ParsedEpisodeInfo parsedEpisodeInfo, Series series) | ||||
|         private List<Episode> GetEpisodes(ParsedEpisodeInfo parsedEpisodeInfo, Series series, bool sceneSource) | ||||
|         { | ||||
|             var result = new List<Episode>(); | ||||
|  | ||||
| @@ -98,7 +104,6 @@ namespace NzbDrone.Core.Parser | ||||
|                     _logger.Warn("Found daily-style episode for non-daily series: {0}.", series); | ||||
|                     return new List<Episode>(); | ||||
|                 } | ||||
|  | ||||
|                  | ||||
|                 //TODO: this will fail since parsed date will be local, and stored date will be UTC | ||||
|                 //which means they will probably end up on different dates | ||||
| @@ -119,25 +124,11 @@ namespace NzbDrone.Core.Parser | ||||
|             { | ||||
|                 Episode episodeInfo = null; | ||||
|  | ||||
|                 if (series.UseSceneNumbering && parsedEpisodeInfo.SceneSource) | ||||
|                 if (series.UseSceneNumbering && sceneSource) | ||||
|                 { | ||||
|                     episodeInfo = _episodeService.FindEpisode(series.Id, parsedEpisodeInfo.SeasonNumber, episodeNumber, true); | ||||
|                 } | ||||
|  | ||||
|                 if (episodeInfo == null) | ||||
|                 { | ||||
|                     episodeInfo = _episodeService.GetEpisode(series.Id, parsedEpisodeInfo.SeasonNumber, episodeNumber); | ||||
|                     if (episodeInfo == null && parsedEpisodeInfo.AirDate != null) | ||||
|                     { | ||||
|                         episodeInfo = _episodeService.FindEpisode(series.Id, parsedEpisodeInfo.AirDate.Value); | ||||
|                     } | ||||
|                 } | ||||
|  | ||||
|                 if (episodeInfo != null) | ||||
|                 { | ||||
|                     result.Add(episodeInfo); | ||||
|  | ||||
|                     if (series.UseSceneNumbering) | ||||
|                     if (episodeInfo != null) | ||||
|                     { | ||||
|                         _logger.Info("Using Scene to TVDB Mapping for: {0} - Scene: {1}x{2:00} - TVDB: {3}x{4:00}", | ||||
|                                     series.Title, | ||||
| @@ -147,6 +138,16 @@ namespace NzbDrone.Core.Parser | ||||
|                                     episodeInfo.EpisodeNumber); | ||||
|                     } | ||||
|                 } | ||||
|  | ||||
|                 if (episodeInfo == null) | ||||
|                 { | ||||
|                     episodeInfo = _episodeService.GetEpisode(series.Id, parsedEpisodeInfo.SeasonNumber, episodeNumber); | ||||
|                 } | ||||
|  | ||||
|                 if (episodeInfo != null) | ||||
|                 { | ||||
|                     result.Add(episodeInfo); | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     _logger.Debug("Unable to find {0}", parsedEpisodeInfo); | ||||
|   | ||||
| @@ -1,8 +0,0 @@ | ||||
| using NzbDrone.Common.Messaging; | ||||
|  | ||||
| namespace NzbDrone.Core.Providers | ||||
| { | ||||
|     public class UpdateXemMappings : ICommand | ||||
|     { | ||||
|     } | ||||
| } | ||||
							
								
								
									
										14
									
								
								NzbDrone.Core/Providers/UpdateXemMappingsCommand.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								NzbDrone.Core/Providers/UpdateXemMappingsCommand.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,14 @@ | ||||
| using NzbDrone.Common.Messaging; | ||||
|  | ||||
| namespace NzbDrone.Core.Providers | ||||
| { | ||||
|     public class UpdateXemMappingsCommand : ICommand | ||||
|     { | ||||
|         public int? SeriesId { get; private set; } | ||||
|  | ||||
|         public UpdateXemMappingsCommand(int? seriesId) | ||||
|         { | ||||
|             SeriesId = seriesId; | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -4,32 +4,41 @@ using System.Linq; | ||||
| using NLog; | ||||
| using NzbDrone.Common.Messaging; | ||||
| using NzbDrone.Core.Tv; | ||||
| using NzbDrone.Core.Tv.Events; | ||||
|  | ||||
| namespace NzbDrone.Core.Providers | ||||
| { | ||||
|     public class XemProvider : IExecute<UpdateXemMappings> | ||||
|     public interface IXemProvider | ||||
|     { | ||||
|         void UpdateMappings(); | ||||
|         void UpdateMappings(int seriesId); | ||||
|         void PerformUpdate(Series series); | ||||
|     } | ||||
|  | ||||
|     public class XemProvider : IXemProvider, IExecute<UpdateXemMappingsCommand>, IHandle<SeriesUpdatedEvent>  | ||||
|     { | ||||
|         private readonly IEpisodeService _episodeService; | ||||
|         private readonly XemCommunicationProvider _xemCommunicationProvider; | ||||
|         private readonly ISeriesRepository _seriesRepository; | ||||
|         private readonly ISeriesService _seriesService; | ||||
|  | ||||
|         private static readonly Logger _logger = LogManager.GetCurrentClassLogger(); | ||||
|  | ||||
|         public XemProvider(IEpisodeService episodeService, XemCommunicationProvider xemCommunicationProvider, ISeriesRepository seriesRepository) | ||||
|         public XemProvider(IEpisodeService episodeService, XemCommunicationProvider xemCommunicationProvider, ISeriesService seriesService) | ||||
|         { | ||||
|             if (seriesService == null) throw new ArgumentNullException("seriesService"); | ||||
|             _episodeService = episodeService; | ||||
|             _xemCommunicationProvider = xemCommunicationProvider; | ||||
|             _seriesRepository = seriesRepository; | ||||
|             _seriesService = seriesService; | ||||
|         } | ||||
|  | ||||
|         public virtual void UpdateMappings() | ||||
|         public void UpdateMappings() | ||||
|         { | ||||
|             _logger.Trace("Starting scene numbering update"); | ||||
|             try | ||||
|             { | ||||
|                 var ids = _xemCommunicationProvider.GetXemSeriesIds(); | ||||
|                 var series = _seriesRepository.All(); | ||||
|                 var wantedSeries = series.Where(s => ids.Contains(s.Id)).ToList(); | ||||
|                 var series = _seriesService.GetAllSeries(); | ||||
|                 var wantedSeries = series.Where(s => ids.Contains(s.TvdbId)).ToList(); | ||||
|  | ||||
|                 foreach (var ser in wantedSeries) | ||||
|                 { | ||||
| @@ -46,17 +55,9 @@ namespace NzbDrone.Core.Providers | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         public virtual void UpdateMappings(int seriesId) | ||||
|         public void UpdateMappings(int seriesId) | ||||
|         { | ||||
|             var xemIds = _xemCommunicationProvider.GetXemSeriesIds(); | ||||
|  | ||||
|             if (!xemIds.Contains(seriesId)) | ||||
|             { | ||||
|                 _logger.Trace("Xem doesn't have a mapping for this series: {0}", seriesId); | ||||
|                 return; | ||||
|             } | ||||
|  | ||||
|             var series = _seriesRepository.Get(seriesId); | ||||
|             var series = _seriesService.GetSeries(seriesId); | ||||
|  | ||||
|             if (series == null) | ||||
|             { | ||||
| @@ -64,16 +65,24 @@ namespace NzbDrone.Core.Providers | ||||
|                 return; | ||||
|             } | ||||
|  | ||||
|             var xemIds = _xemCommunicationProvider.GetXemSeriesIds(); | ||||
|  | ||||
|             if (!xemIds.Contains(series.TvdbId)) | ||||
|             { | ||||
|                 _logger.Trace("Xem doesn't have a mapping for this series: {0}", series.TvdbId); | ||||
|                 return; | ||||
|             } | ||||
|  | ||||
|             PerformUpdate(series); | ||||
|         } | ||||
|  | ||||
|         public virtual void PerformUpdate(Series series) | ||||
|         public void PerformUpdate(Series series) | ||||
|         { | ||||
|             _logger.Trace("Updating scene numbering mapping for: {0}", series); | ||||
|             try | ||||
|             { | ||||
|                 var episodesToUpdate = new List<Episode>(); | ||||
|                 var mappings = _xemCommunicationProvider.GetSceneTvdbMappings(series.Id); | ||||
|                 var mappings = _xemCommunicationProvider.GetSceneTvdbMappings(series.TvdbId); | ||||
|  | ||||
|                 if (mappings == null) | ||||
|                 { | ||||
| @@ -106,7 +115,7 @@ namespace NzbDrone.Core.Providers | ||||
|  | ||||
|                 _logger.Trace("Setting UseSceneMapping for {0}", series); | ||||
|                 series.UseSceneNumbering = true; | ||||
|                 _seriesRepository.Update(series); | ||||
|                 _seriesService.UpdateSeries(series); | ||||
|             } | ||||
|  | ||||
|             catch (Exception ex) | ||||
| @@ -115,9 +124,21 @@ namespace NzbDrone.Core.Providers | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         public void Execute(UpdateXemMappings message) | ||||
|         public void Execute(UpdateXemMappingsCommand message) | ||||
|         { | ||||
|             UpdateMappings(); | ||||
|             if (message.SeriesId.HasValue) | ||||
|             { | ||||
|                 UpdateMappings(message.SeriesId.Value); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 UpdateMappings(); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         public void Handle(SeriesUpdatedEvent message) | ||||
|         { | ||||
|             PerformUpdate(message.Series); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -2,7 +2,6 @@ | ||||
|   <FileVersion>1</FileVersion> | ||||
|   <AutoEnableOnStartup>False</AutoEnableOnStartup> | ||||
|   <AllowParallelTestExecution>true</AllowParallelTestExecution> | ||||
|   <AllowTestsToRunInParallelWithThemselves>true</AllowTestsToRunInParallelWithThemselves> | ||||
|   <FrameworkUtilisationTypeForNUnit>UseDynamicAnalysis</FrameworkUtilisationTypeForNUnit> | ||||
|   <FrameworkUtilisationTypeForGallio>Disabled</FrameworkUtilisationTypeForGallio> | ||||
|   <FrameworkUtilisationTypeForMSpec>Disabled</FrameworkUtilisationTypeForMSpec> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user