public async Task <Episode> Build(SonarrSharp.Models.Episode episode) { var mediaFileId = new MediaFileId { Provider = Providers.Sonarr, MediaId = episode.SeriesId, FileId = episode.EpisodeFileId, }; var sessionRepo = await _sessionRepoFactory.GetRepo(); var allSessionsForCurrentEpisode = (await sessionRepo.GetAll()) .Where(session => session.MediaId == mediaFileId.ToString()) .ToList(); var lastSession = allSessionsForCurrentEpisode.OrderByDescending(session => session.EndUTC).FirstOrDefault(); return(new Episode { Title = GrpcStringParser.Parse(episode.Title), Overview = GrpcStringParser.Parse(episode.Overview), SeriesId = episode.SeriesId, SeasonNumber = episode.SeasonNumber, EpisideNumber = episode.EpisodeNumber, EpisodeFileId = episode.EpisodeFileId, PlayableId = mediaFileId.ToString(), Progress = new Progress { LastWatchedUtc = lastSession?.EndUTC ?? 0, WatchedInSec = lastSession?.Duration.EndPostionInSec ?? 0, Lenght = lastSession?.MediaLenghtInSec ?? 0 }, }); }
private Episode ConvertEpisode(SonarrSeries serie, SonarrEpisode episode, SonarrEpisodeFile file) { var converted = new Episode { Title = serie.Title, Year = serie.Year, ImdbId = serie.ImdbId, SeriesFolder = serie.Path, SeasonNumber = episode.SeasonNumber, EpisodeNumber = episode.EpisodeNumber }; if (file != null) { converted.File = Path.GetFileName(file.Path); converted.OriginalName = file.SceneName; converted.Quality = file.Quality.Quality.Name.ToString(); converted.Proper = file.Quality.Proper; } return(converted); }