Reduce the memory consumption #1720

pull/1741/head
Jamie 7 years ago
parent 7ce1c0cb99
commit ee13720a8b

@ -63,7 +63,7 @@ namespace Ombi.Schedule.Jobs.Emby
private async Task ProcessMovies() private async Task ProcessMovies()
{ {
var movies = await _movieRepo.GetAll().Where(x => !x.Available).ToListAsync(); var movies = _movieRepo.GetAll().Where(x => !x.Available);
foreach (var movie in movies) foreach (var movie in movies)
{ {
@ -98,18 +98,18 @@ namespace Ombi.Schedule.Jobs.Emby
/// <returns></returns> /// <returns></returns>
private async Task ProcessTv() private async Task ProcessTv()
{ {
var tv = await _tvRepo.GetChild().Where(x => !x.Available).ToListAsync(); var tv = _tvRepo.GetChild().Where(x => !x.Available);
var embyEpisodes = await _repo.GetAllEpisodes().Include(x => x.Series).ToListAsync(); var embyEpisodes = _repo.GetAllEpisodes().Include(x => x.Series);
foreach (var child in tv) foreach (var child in tv)
{ {
var tvDbId = child.ParentRequest.TvDbId; var tvDbId = child.ParentRequest.TvDbId;
var seriesEpisodes = embyEpisodes.Where(x => x.Series.ProviderId == tvDbId.ToString()).ToList(); var seriesEpisodes = embyEpisodes.Where(x => x.Series.ProviderId == tvDbId.ToString());
foreach (var season in child.SeasonRequests) foreach (var season in child.SeasonRequests)
{ {
foreach (var episode in season.Episodes) foreach (var episode in season.Episodes)
{ {
var foundEp = seriesEpisodes.FirstOrDefault( var foundEp = await seriesEpisodes.FirstOrDefaultAsync(
x => x.EpisodeNumber == episode.EpisodeNumber && x => x.EpisodeNumber == episode.EpisodeNumber &&
x.SeasonNumber == episode.Season.SeasonNumber); x.SeasonNumber == episode.Season.SeasonNumber);

@ -39,8 +39,8 @@ namespace Ombi.Schedule.Jobs.Plex
private async Task ProcessTv() private async Task ProcessTv()
{ {
var tv = await _tvRepo.GetChild().Where(x => !x.Available).ToListAsync(); var tv = _tvRepo.GetChild().Where(x => !x.Available);
var plexEpisodes = await _repo.GetAllEpisodes().Include(x => x.Series).ToListAsync(); var plexEpisodes = _repo.GetAllEpisodes().Include(x => x.Series);
foreach (var child in tv) foreach (var child in tv)
{ {
@ -60,20 +60,20 @@ namespace Ombi.Schedule.Jobs.Plex
var tvDbId = child.ParentRequest.TvDbId; var tvDbId = child.ParentRequest.TvDbId;
var imdbId = child.ParentRequest.ImdbId; var imdbId = child.ParentRequest.ImdbId;
List<PlexEpisode> seriesEpisodes = null; IQueryable<PlexEpisode> seriesEpisodes = null;
if (useImdb) if (useImdb)
{ {
seriesEpisodes = plexEpisodes.Where(x => x.Series.ImdbId == imdbId.ToString()).ToList(); seriesEpisodes = plexEpisodes.Where(x => x.Series.ImdbId == imdbId.ToString());
} }
if (useTvDb) if (useTvDb)
{ {
seriesEpisodes = plexEpisodes.Where(x => x.Series.TvDbId == tvDbId.ToString()).ToList(); seriesEpisodes = plexEpisodes.Where(x => x.Series.TvDbId == tvDbId.ToString());
} }
foreach (var season in child.SeasonRequests) foreach (var season in child.SeasonRequests)
{ {
foreach (var episode in season.Episodes) foreach (var episode in season.Episodes)
{ {
var foundEp = seriesEpisodes.FirstOrDefault( var foundEp = await seriesEpisodes.FirstOrDefaultAsync(
x => x.EpisodeNumber == episode.EpisodeNumber && x => x.EpisodeNumber == episode.EpisodeNumber &&
x.SeasonNumber == episode.Season.SeasonNumber); x.SeasonNumber == episode.Season.SeasonNumber);
@ -107,7 +107,7 @@ namespace Ombi.Schedule.Jobs.Plex
private async Task ProcessMovies() private async Task ProcessMovies()
{ {
// Get all non available // Get all non available
var movies = await _movieRepo.GetAll().Where(x => !x.Available).ToListAsync(); var movies = _movieRepo.GetAll().Where(x => !x.Available);
foreach (var movie in movies) foreach (var movie in movies)
{ {

@ -3,7 +3,6 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Hangfire; using Hangfire;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Ombi.Api.Plex; using Ombi.Api.Plex;
using Ombi.Api.Plex.Models; using Ombi.Api.Plex.Models;
@ -99,7 +98,7 @@ namespace Ombi.Schedule.Jobs.Plex
var currentPosition = 0; var currentPosition = 0;
var resultCount = settings.EpisodeBatchSize == 0 ? 50 : settings.EpisodeBatchSize; var resultCount = settings.EpisodeBatchSize == 0 ? 50 : settings.EpisodeBatchSize;
var episodes = await _api.GetAllEpisodes(settings.PlexAuthToken, settings.FullUri, section.key, currentPosition, resultCount); var episodes = await _api.GetAllEpisodes(settings.PlexAuthToken, settings.FullUri, section.key, currentPosition, resultCount);
var currentData = await _repo.GetAllEpisodes().ToListAsync(); var currentData = _repo.GetAllEpisodes();
_log.LogInformation(LoggingEvents.PlexEpisodeCacher, $"Total Epsiodes found for {episodes.MediaContainer.librarySectionTitle} = {episodes.MediaContainer.totalSize}"); _log.LogInformation(LoggingEvents.PlexEpisodeCacher, $"Total Epsiodes found for {episodes.MediaContainer.librarySectionTitle} = {episodes.MediaContainer.totalSize}");
await ProcessEpsiodes(episodes, currentData); await ProcessEpsiodes(episodes, currentData);
@ -119,7 +118,7 @@ namespace Ombi.Schedule.Jobs.Plex
await _repo.SaveChangesAsync(); await _repo.SaveChangesAsync();
} }
private async Task ProcessEpsiodes(PlexContainer episodes, IEnumerable<PlexEpisode> currentEpisodes) private async Task ProcessEpsiodes(PlexContainer episodes, IQueryable<PlexEpisode> currentEpisodes)
{ {
var ep = new HashSet<PlexEpisode>(); var ep = new HashSet<PlexEpisode>();

Loading…
Cancel
Save