mirror of
https://github.com/Ombi-app/Ombi.git
synced 2025-07-14 09:12:57 -07:00
Potentially fixed the issue where we were requesting everything that was also available now.
This commit is contained in:
parent
3b133ffbf5
commit
4eff175424
3 changed files with 26 additions and 15 deletions
|
@ -286,7 +286,6 @@ namespace PlexRequests.Services.Jobs
|
||||||
var episodes = await EpisodeRepo.GetAllAsync();
|
var episodes = await EpisodeRepo.GetAllAsync();
|
||||||
if (episodes == null)
|
if (episodes == null)
|
||||||
{
|
{
|
||||||
Log.Info("Episode cache info is not available.");
|
|
||||||
return new HashSet<PlexEpisodes>();
|
return new HashSet<PlexEpisodes>();
|
||||||
}
|
}
|
||||||
return episodes;
|
return episodes;
|
||||||
|
|
10
PlexRequests.UI/Content/requests.js
vendored
10
PlexRequests.UI/Content/requests.js
vendored
|
@ -577,14 +577,14 @@ function tvLoad() {
|
||||||
var tvObject = new Array();
|
var tvObject = new Array();
|
||||||
results.forEach(function (result) {
|
results.forEach(function (result) {
|
||||||
var ep = result.episodes;
|
var ep = result.episodes;
|
||||||
ep.forEach(function (episode, index) {
|
ep.forEach(function (episode) {
|
||||||
if (!tvObject.find(x => x.seasonNumber === episode.seasonNumber)) {
|
var foundItem = tvObject.find(x => x.seasonNumber === episode.seasonNumber);
|
||||||
|
if (!foundItem) {
|
||||||
var obj = { seasonNumber: episode.seasonNumber, episodes: [] }
|
var obj = { seasonNumber: episode.seasonNumber, episodes: [] }
|
||||||
tvObject.push(obj);
|
tvObject.push(obj);
|
||||||
tvObject[index].episodes.push(episode.episodeNumber);
|
tvObject[tvObject.length - 1].episodes.push(episode.episodeNumber);
|
||||||
} else {
|
} else {
|
||||||
var selectedObj =tvObject.find(x => x.seasonNumber === episode.seasonNumber);
|
foundItem.episodes.push(episode.episodeNumber);
|
||||||
selectedObj.episodes.push(episode.episodeNumber);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -567,9 +567,8 @@ namespace PlexRequests.UI.Modules
|
||||||
}
|
}
|
||||||
|
|
||||||
// check if the show/episodes have already been requested
|
// check if the show/episodes have already been requested
|
||||||
|
|
||||||
var existingRequest = await RequestService.CheckRequestAsync(showId);
|
var existingRequest = await RequestService.CheckRequestAsync(showId);
|
||||||
var difference = new List<Store.EpisodesModel>();
|
var difference = new List<EpisodesModel>();
|
||||||
if (existingRequest != null)
|
if (existingRequest != null)
|
||||||
{
|
{
|
||||||
if (episodeRequest)
|
if (episodeRequest)
|
||||||
|
@ -666,13 +665,20 @@ namespace PlexRequests.UI.Modules
|
||||||
{
|
{
|
||||||
var cachedEpisodesTask = await Checker.GetEpisodes();
|
var cachedEpisodesTask = await Checker.GetEpisodes();
|
||||||
var cachedEpisodes = cachedEpisodesTask.ToList();
|
var cachedEpisodes = cachedEpisodesTask.ToList();
|
||||||
foreach (var d in difference)
|
foreach (var d in difference) // difference is from an existing request
|
||||||
{
|
{
|
||||||
if (cachedEpisodes.Any(x => x.SeasonNumber == d.SeasonNumber && x.EpisodeNumber == d.EpisodeNumber && x.ProviderId == providerId))
|
if (cachedEpisodes.Any(x => x.SeasonNumber == d.SeasonNumber && x.EpisodeNumber == d.EpisodeNumber && x.ProviderId == providerId))
|
||||||
{
|
{
|
||||||
return Response.AsJson(new JsonResponseModel { Result = false, Message = $"{fullShowName} {d.SeasonNumber} - {d.EpisodeNumber} {Resources.UI.Search_AlreadyInPlex}" });
|
return Response.AsJson(new JsonResponseModel { Result = false, Message = $"{fullShowName} {d.SeasonNumber} - {d.EpisodeNumber} {Resources.UI.Search_AlreadyInPlex}" });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var episodes = await GetEpisodes(showId);
|
||||||
|
var availableEpisodes = episodes.Where(x => x.Requested).ToList();
|
||||||
|
var availble = availableEpisodes.Select(a => new EpisodesModel { EpisodeNumber = a.EpisodeNumber, SeasonNumber = a.SeasonNumber }).ToList();
|
||||||
|
|
||||||
|
var diff = model.Episodes.Except(availble);
|
||||||
|
model.Episodes = diff.ToList();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -951,6 +957,13 @@ namespace PlexRequests.UI.Modules
|
||||||
private async Task<Response> GetEpisodes()
|
private async Task<Response> GetEpisodes()
|
||||||
{
|
{
|
||||||
var seriesId = (int)Request.Query.tvId;
|
var seriesId = (int)Request.Query.tvId;
|
||||||
|
var model = await GetEpisodes(seriesId);
|
||||||
|
|
||||||
|
return Response.AsJson(model);
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task<List<EpisodeListViewModel>> GetEpisodes(int providerId)
|
||||||
|
{
|
||||||
var s = await SonarrService.GetSettingsAsync();
|
var s = await SonarrService.GetSettingsAsync();
|
||||||
var sonarrEnabled = s.Enabled;
|
var sonarrEnabled = s.Enabled;
|
||||||
var allResults = await RequestService.GetAllAsync();
|
var allResults = await RequestService.GetAllAsync();
|
||||||
|
@ -961,7 +974,7 @@ namespace PlexRequests.UI.Modules
|
||||||
if (sonarrEnabled)
|
if (sonarrEnabled)
|
||||||
{
|
{
|
||||||
var allSeries = SonarrApi.GetSeries(s.ApiKey, s.FullUri);
|
var allSeries = SonarrApi.GetSeries(s.ApiKey, s.FullUri);
|
||||||
var selectedSeries = allSeries.FirstOrDefault(x => x.tvdbId == seriesId) ?? new Series();
|
var selectedSeries = allSeries.FirstOrDefault(x => x.tvdbId == providerId) ?? new Series();
|
||||||
return selectedSeries;
|
return selectedSeries;
|
||||||
}
|
}
|
||||||
return new Series();
|
return new Series();
|
||||||
|
@ -971,8 +984,8 @@ namespace PlexRequests.UI.Modules
|
||||||
|
|
||||||
var requests = allResults as RequestedModel[] ?? allResults.ToArray();
|
var requests = allResults as RequestedModel[] ?? allResults.ToArray();
|
||||||
|
|
||||||
var existingRequest = requests.FirstOrDefault(x => x.Type == RequestType.TvShow && x.TvDbId == seriesId.ToString());
|
var existingRequest = requests.FirstOrDefault(x => x.Type == RequestType.TvShow && x.TvDbId == providerId.ToString());
|
||||||
var show = await Task.Run(() => TvApi.ShowLookupByTheTvDbId(seriesId));
|
var show = await Task.Run(() => TvApi.ShowLookupByTheTvDbId(providerId));
|
||||||
var tvMaxeEpisodes = await Task.Run(() => TvApi.EpisodeLookup(show.id));
|
var tvMaxeEpisodes = await Task.Run(() => TvApi.EpisodeLookup(show.id));
|
||||||
|
|
||||||
var sonarrEpisodes = new List<SonarrEpisodes>();
|
var sonarrEpisodes = new List<SonarrEpisodes>();
|
||||||
|
@ -983,7 +996,7 @@ namespace PlexRequests.UI.Modules
|
||||||
sonarrEpisodes = sonarrEp?.ToList() ?? new List<SonarrEpisodes>();
|
sonarrEpisodes = sonarrEp?.ToList() ?? new List<SonarrEpisodes>();
|
||||||
}
|
}
|
||||||
|
|
||||||
var plexCacheTask = await Checker.GetEpisodes(seriesId);
|
var plexCacheTask = await Checker.GetEpisodes(providerId);
|
||||||
var plexCache = plexCacheTask.ToList();
|
var plexCache = plexCacheTask.ToList();
|
||||||
foreach (var ep in tvMaxeEpisodes)
|
foreach (var ep in tvMaxeEpisodes)
|
||||||
{
|
{
|
||||||
|
@ -1003,9 +1016,8 @@ namespace PlexRequests.UI.Modules
|
||||||
Name = ep.name,
|
Name = ep.name,
|
||||||
EpisodeId = ep.id
|
EpisodeId = ep.id
|
||||||
});
|
});
|
||||||
}
|
}return model;
|
||||||
|
|
||||||
return Response.AsJson(model);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<bool> CheckRequestLimit(PlexRequestSettings s, RequestType type)
|
public async Task<bool> CheckRequestLimit(PlexRequestSettings s, RequestType type)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue