public WebhookEpisode(Episode episode) { Id = episode.Id; SeasonNumber = episode.SeasonNumber; EpisodeNumber = episode.EpisodeNumber; Title = episode.Title; AirDate = episode.AirDate; AirDateUtc = episode.AirDateUtc; }
public FilenameSampleService(IBuildFileNames buildFileNames) { _buildFileNames = buildFileNames; _standardSeries = new Series { SeriesType = SeriesTypes.Standard, Title = "Series Title" }; _dailySeries = new Series { SeriesType = SeriesTypes.Daily, Title = "Series Title" }; _episode1 = new Episode { SeasonNumber = 1, EpisodeNumber = 1, Title = "Episode Title (1)", AirDate = "2013-10-30" }; _episode2 = new Episode { SeasonNumber = 1, EpisodeNumber = 2, Title = "Episode Title (2)" }; _singleEpisode = new List<Episode> { _episode1 }; _multiEpisodes = new List<Episode> { _episode1, _episode2 }; _singleEpisodeFile = new EpisodeFile { Quality = new QualityModel(Quality.HDTV720p), Path = @"C:\Test\Series.Title.S01E01.720p.HDTV.x264-EVOLVE.mkv", ReleaseGroup = "RlsGrp" }; _multiEpisodeFile = new EpisodeFile { Quality = new QualityModel(Quality.HDTV720p), Path = @"C:\Test\Series.Title.S01E01-E02.720p.HDTV.x264-EVOLVE.mkv", ReleaseGroup = "RlsGrp" }; _dailyEpisodeFile = new EpisodeFile { Quality = new QualityModel(Quality.HDTV720p), Path = @"C:\Test\Series.Title.2013.10.30.HDTV.x264-EVOLVE.mkv", ReleaseGroup = "RlsGrp" }; }
private static Episode MapEpisode(Trakt.Episode traktEpisode) { var episode = new Episode(); episode.Overview = traktEpisode.overview; episode.SeasonNumber = traktEpisode.season; episode.EpisodeNumber = traktEpisode.episode; episode.EpisodeNumber = traktEpisode.number; episode.Title = traktEpisode.title; episode.AirDate = FromIsoToString(traktEpisode.first_aired_iso); episode.AirDateUtc = FromIso(traktEpisode.first_aired_iso); return(episode); }
private static Episode MapEpisode(Trakt.Episode traktEpisode) { var episode = new Episode(); episode.Overview = traktEpisode.overview; episode.SeasonNumber = traktEpisode.season; episode.EpisodeNumber = traktEpisode.number; episode.Title = traktEpisode.title; episode.AirDate = FromIsoToString(traktEpisode.first_aired_iso); episode.AirDateUtc = FromIso(traktEpisode.first_aired_iso); episode.Ratings = GetRatings(traktEpisode.ratings); episode.Images.Add(new MediaCover.MediaCover(MediaCoverTypes.Screenshot, traktEpisode.images.screen)); return(episode); }
private static Episode MapEpisode(Trakt.Episode traktEpisode) { var episode = new Episode(); episode.Overview = traktEpisode.overview; episode.SeasonNumber = traktEpisode.season; episode.EpisodeNumber = traktEpisode.number; episode.Title = traktEpisode.title; episode.AirDate = FromIsoToString(traktEpisode.first_aired_iso); episode.AirDateUtc = FromIso(traktEpisode.first_aired_iso); episode.Ratings = GetRatings(traktEpisode.ratings); //Don't include series fanart images as episode screenshot if (!traktEpisode.images.screen.Contains("-940.")) { episode.Images.Add(new MediaCover.MediaCover(MediaCoverTypes.Screenshot, traktEpisode.images.screen)); } return(episode); }
public FileNameSampleService(IBuildFileNames buildFileNames) { _buildFileNames = buildFileNames; _standardSeries = new Series { SeriesType = SeriesTypes.Standard, Title = "Series Title (2010)" }; _dailySeries = new Series { SeriesType = SeriesTypes.Daily, Title = "Series Title (2010)" }; _animeSeries = new Series { SeriesType = SeriesTypes.Anime, Title = "Series Title (2010)" }; _episode1 = new Episode { SeasonNumber = 1, EpisodeNumber = 1, Title = "Episode Title (1)", AirDate = "2013-10-30", AbsoluteEpisodeNumber = 1, }; _episode2 = new Episode { SeasonNumber = 1, EpisodeNumber = 2, Title = "Episode Title (2)", AbsoluteEpisodeNumber = 2 }; _episode3 = new Episode { SeasonNumber = 1, EpisodeNumber = 3, Title = "Episode Title (3)", AbsoluteEpisodeNumber = 3 }; _singleEpisode = new List<Episode> { _episode1 }; _multiEpisodes = new List<Episode> { _episode1, _episode2, _episode3 }; var mediaInfo = new MediaInfoModel() { VideoCodec = "AVC", AudioFormat = "DTS", AudioLanguages = "English", Subtitles = "English/German" }; var mediaInfoAnime = new MediaInfoModel() { VideoCodec = "AVC", AudioFormat = "DTS", AudioLanguages = "Japanese", Subtitles = "Japanese/English" }; _singleEpisodeFile = new EpisodeFile { Quality = new QualityModel(Quality.HDTV720p, new Revision(2)), RelativePath = "Series.Title.S01E01.720p.HDTV.x264-EVOLVE.mkv", SceneName = "Series.Title.S01E01.720p.HDTV.x264-EVOLVE", ReleaseGroup = "RlsGrp", MediaInfo = mediaInfo }; _multiEpisodeFile = new EpisodeFile { Quality = new QualityModel(Quality.HDTV720p, new Revision(2)), RelativePath = "Series.Title.S01E01-E03.720p.HDTV.x264-EVOLVE.mkv", SceneName = "Series.Title.S01E01-E03.720p.HDTV.x264-EVOLVE", ReleaseGroup = "RlsGrp", MediaInfo = mediaInfo, }; _dailyEpisodeFile = new EpisodeFile { Quality = new QualityModel(Quality.HDTV720p, new Revision(2)), RelativePath = "Series.Title.2013.10.30.HDTV.x264-EVOLVE.mkv", SceneName = "Series.Title.2013.10.30.HDTV.x264-EVOLVE", ReleaseGroup = "RlsGrp", MediaInfo = mediaInfo }; _animeEpisodeFile = new EpisodeFile { Quality = new QualityModel(Quality.HDTV720p, new Revision(2)), RelativePath = "[RlsGroup] Series Title - 001 [720p].mkv", SceneName = "[RlsGroup] Series Title - 001 [720p]", ReleaseGroup = "RlsGrp", MediaInfo = mediaInfoAnime }; _animeMultiEpisodeFile = new EpisodeFile { Quality = new QualityModel(Quality.HDTV720p, new Revision(2)), RelativePath = "[RlsGroup] Series Title - 001 - 103 [720p].mkv", SceneName = "[RlsGroup] Series Title - 001 - 103 [720p]", ReleaseGroup = "RlsGrp", MediaInfo = mediaInfoAnime }; }
public void RefreshEpisodeInfo(Series series, IEnumerable<Episode> remoteEpisodes) { _logger.Info("Starting episode info refresh for: {0}", series); var successCount = 0; var failCount = 0; var existingEpisodes = _episodeService.GetEpisodeBySeries(series.Id); var seasons = series.Seasons; var updateList = new List<Episode>(); var newList = new List<Episode>(); var dupeFreeRemoteEpisodes = remoteEpisodes.DistinctBy(m => new { m.SeasonNumber, m.EpisodeNumber }).ToList(); if (series.SeriesType == SeriesTypes.Anime) { dupeFreeRemoteEpisodes = MapAbsoluteEpisodeNumbers(series, dupeFreeRemoteEpisodes); } foreach (var episode in OrderEpisodes(series, dupeFreeRemoteEpisodes)) { try { var episodeToUpdate = GetEpisodeToUpdate(series, episode, existingEpisodes); if (episodeToUpdate != null) { existingEpisodes.Remove(episodeToUpdate); updateList.Add(episodeToUpdate); } else { episodeToUpdate = new Episode(); episodeToUpdate.Monitored = GetMonitoredStatus(episode, seasons); newList.Add(episodeToUpdate); } episodeToUpdate.SeriesId = series.Id; episodeToUpdate.EpisodeNumber = episode.EpisodeNumber; episodeToUpdate.SeasonNumber = episode.SeasonNumber; episodeToUpdate.AbsoluteEpisodeNumber = episode.AbsoluteEpisodeNumber; episodeToUpdate.Title = episode.Title ?? "TBA"; episodeToUpdate.Overview = episode.Overview; episodeToUpdate.AirDate = episode.AirDate; episodeToUpdate.AirDateUtc = episode.AirDateUtc; episodeToUpdate.Ratings = episode.Ratings; episodeToUpdate.Images = episode.Images; successCount++; } catch (Exception e) { _logger.FatalException(string.Format("An error has occurred while updating episode info for series {0}. {1}", series, episode), e); failCount++; } } var allEpisodes = new List<Episode>(); allEpisodes.AddRange(newList); allEpisodes.AddRange(updateList); AdjustMultiEpisodeAirTime(series, allEpisodes); AdjustDirectToDvdAirDate(series, allEpisodes); _episodeService.DeleteMany(existingEpisodes); _episodeService.UpdateMany(updateList); _episodeService.InsertMany(newList); _eventAggregator.PublishEvent(new EpisodeInfoRefreshedEvent(series, newList, updateList)); if (failCount != 0) { _logger.Info("Finished episode refresh for series: {0}. Successful: {1} - Failed: {2} ", series.Title, successCount, failCount); } else { _logger.Info("Finished episode refresh for series: {0}.", series); } }
private Episode GetEpisodeToUpdate(Series series, Episode episode, List<Episode> existingEpisodes) { if (series.SeriesType == SeriesTypes.Anime) { if (episode.AbsoluteEpisodeNumber.HasValue) { var matchingEpisode = existingEpisodes.FirstOrDefault(e => e.AbsoluteEpisodeNumber == episode.AbsoluteEpisodeNumber); if (matchingEpisode != null) return matchingEpisode; } } return existingEpisodes.FirstOrDefault(e => e.SeasonNumber == episode.SeasonNumber && e.EpisodeNumber == episode.EpisodeNumber); }
private bool GetMonitoredStatus(Episode episode, IEnumerable<Season> seasons) { if (episode.EpisodeNumber == 0 && episode.SeasonNumber != 1) { return false; } var season = seasons.SingleOrDefault(c => c.SeasonNumber == episode.SeasonNumber); return season == null || season.Monitored; }
private static Episode MapEpisode(Trakt.Episode traktEpisode) { var episode = new Episode(); episode.Overview = traktEpisode.overview; episode.SeasonNumber = traktEpisode.season; episode.EpisodeNumber = traktEpisode.episode; episode.EpisodeNumber = traktEpisode.number; episode.Title = traktEpisode.title; episode.AirDate = FromIsoToString(traktEpisode.first_aired_iso); episode.AirDateUtc = FromIso(traktEpisode.first_aired_iso); return episode; }
private static Episode MapEpisode(EpisodeResource oracleEpisode) { var episode = new Episode(); episode.Overview = oracleEpisode.Overview; episode.SeasonNumber = oracleEpisode.SeasonNumber; episode.EpisodeNumber = oracleEpisode.EpisodeNumber; episode.AbsoluteEpisodeNumber = oracleEpisode.AbsoluteEpisodeNumber; episode.Title = oracleEpisode.Title; episode.AirDate = oracleEpisode.AirDate; episode.AirDateUtc = oracleEpisode.AirDateUtc; episode.Ratings = MapRatings(oracleEpisode.Rating); //Don't include series fanart images as episode screenshot if (oracleEpisode.Image != null) { episode.Images.Add(new MediaCover.MediaCover(MediaCoverTypes.Screenshot, oracleEpisode.Image)); } return episode; }
public void RefreshEpisodeInfo(Series series, IEnumerable <Episode> remoteEpisodes) { _logger.Info("Starting episode info refresh for: {0}", series); var successCount = 0; var failCount = 0; var existingEpisodes = _episodeService.GetEpisodeBySeries(series.Id); var seasons = series.Seasons; var updateList = new List <Episode>(); var newList = new List <Episode>(); var dupeFreeRemoteEpisodes = remoteEpisodes.DistinctBy(m => new { m.SeasonNumber, m.EpisodeNumber }).ToList(); if (series.SeriesType == SeriesTypes.Anime) { dupeFreeRemoteEpisodes = MapAbsoluteEpisodeNumbers(series, dupeFreeRemoteEpisodes); } foreach (var episode in OrderEpisodes(series, dupeFreeRemoteEpisodes)) { try { var episodeToUpdate = GetEpisodeToUpdate(series, episode, existingEpisodes); if (episodeToUpdate != null) { existingEpisodes.Remove(episodeToUpdate); updateList.Add(episodeToUpdate); } else { episodeToUpdate = new Episode(); episodeToUpdate.Monitored = GetMonitoredStatus(episode, seasons); newList.Add(episodeToUpdate); } episodeToUpdate.SeriesId = series.Id; episodeToUpdate.EpisodeNumber = episode.EpisodeNumber; episodeToUpdate.SeasonNumber = episode.SeasonNumber; episodeToUpdate.AbsoluteEpisodeNumber = episode.AbsoluteEpisodeNumber; episodeToUpdate.Title = episode.Title ?? "TBA"; episodeToUpdate.Overview = episode.Overview; episodeToUpdate.AirDate = episode.AirDate; episodeToUpdate.AirDateUtc = episode.AirDateUtc; episodeToUpdate.Ratings = episode.Ratings; episodeToUpdate.Images = episode.Images; successCount++; } catch (Exception e) { _logger.FatalException(string.Format("An error has occurred while updating episode info for series {0}. {1}", series, episode), e); failCount++; } } var allEpisodes = new List <Episode>(); allEpisodes.AddRange(newList); allEpisodes.AddRange(updateList); AdjustMultiEpisodeAirTime(series, allEpisodes); AdjustDirectToDvdAirDate(series, allEpisodes); _episodeService.DeleteMany(existingEpisodes); _episodeService.UpdateMany(updateList); _episodeService.InsertMany(newList); _eventAggregator.PublishEvent(new EpisodeInfoRefreshedEvent(series, newList, updateList)); if (failCount != 0) { _logger.Info("Finished episode refresh for series: {0}. Successful: {1} - Failed: {2} ", series.Title, successCount, failCount); } else { _logger.Info("Finished episode refresh for series: {0}.", series); } }
private static Episode MapEpisode(Trakt.Episode traktEpisode) { var episode = new Episode(); episode.Overview = traktEpisode.overview; episode.SeasonNumber = traktEpisode.season; episode.EpisodeNumber = traktEpisode.episode; episode.EpisodeNumber = traktEpisode.number; episode.Title = traktEpisode.title; episode.AirDate = FromIsoToString(traktEpisode.first_aired_iso); episode.AirDateUtc = FromIso(traktEpisode.first_aired_iso); episode.Ratings = GetRatings(traktEpisode.ratings); episode.Images.Add(new MediaCover.MediaCover(MediaCoverTypes.Screenshot, traktEpisode.images.screen)); return episode; }
public void UpdateEpisode(Episode episode) { _episodeRepository.Update(episode); }
public void RefreshEpisodeInfo(Series series, IEnumerable <Episode> remoteEpisodes) { _logger.Info("Starting episode info refresh for: {0}", series); var successCount = 0; var failCount = 0; var existingEpisodes = _episodeService.GetEpisodeBySeries(series.Id); var seasons = series.Seasons; var updateList = new List <Episode>(); var newList = new List <Episode>(); foreach (var episode in remoteEpisodes.OrderBy(e => e.SeasonNumber).ThenBy(e => e.EpisodeNumber)) { try { var episodeToUpdate = existingEpisodes.FirstOrDefault(e => e.SeasonNumber == episode.SeasonNumber && e.EpisodeNumber == episode.EpisodeNumber); if (episodeToUpdate != null) { existingEpisodes.Remove(episodeToUpdate); updateList.Add(episodeToUpdate); } else { episodeToUpdate = new Episode(); episodeToUpdate.Monitored = GetMonitoredStatus(episode, seasons); newList.Add(episodeToUpdate); } episodeToUpdate.SeriesId = series.Id; episodeToUpdate.TvDbEpisodeId = episode.TvDbEpisodeId; episodeToUpdate.EpisodeNumber = episode.EpisodeNumber; episodeToUpdate.SeasonNumber = episode.SeasonNumber; episodeToUpdate.Title = episode.Title; episodeToUpdate.Overview = episode.Overview; episodeToUpdate.AirDate = episode.AirDate; episodeToUpdate.AirDateUtc = episode.AirDateUtc; successCount++; } catch (Exception e) { _logger.FatalException(String.Format("An error has occurred while updating episode info for series {0}. {1}", series, episode), e); failCount++; } } var allEpisodes = new List <Episode>(); allEpisodes.AddRange(newList); allEpisodes.AddRange(updateList); AdjustMultiEpisodeAirTime(series, allEpisodes); _episodeService.DeleteMany(existingEpisodes); _episodeService.UpdateMany(updateList); _episodeService.InsertMany(newList); if (newList.Any()) { _eventAggregator.PublishEvent(new EpisodeInfoAddedEvent(newList, series)); } if (updateList.Any()) { _eventAggregator.PublishEvent(new EpisodeInfoUpdatedEvent(updateList)); } if (existingEpisodes.Any()) { _eventAggregator.PublishEvent(new EpisodeInfoDeletedEvent(updateList)); } if (failCount != 0) { _logger.Info("Finished episode refresh for series: {0}. Successful: {1} - Failed: {2} ", series.Title, successCount, failCount); } else { _logger.Info("Finished episode refresh for series: {0}.", series); } }