mirror of https://github.com/Ombi-app/Ombi
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
97 lines
3.2 KiB
97 lines
3.2 KiB
using AutoMapper;
|
|
using Microsoft.Extensions.Options;
|
|
using Ombi.Api.Trakt;
|
|
using Ombi.Api.TvMaze;
|
|
using Ombi.Config;
|
|
using Ombi.Core.Authentication;
|
|
using Ombi.Core.Models.Requests;
|
|
using Ombi.Core.Models.Search;
|
|
using Ombi.Core.Rule.Interfaces;
|
|
using Ombi.Core.Settings;
|
|
using Ombi.Core.Settings.Models.External;
|
|
using Ombi.Helpers;
|
|
using Ombi.Settings.Settings.Models;
|
|
using Ombi.Store.Entities;
|
|
using Ombi.Store.Repository;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Security.Principal;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Ombi.Core.Engine.Demo
|
|
{
|
|
public class DemoTvSearchEngine : TvSearchEngine, IDemoTvSearchEngine
|
|
{
|
|
|
|
public DemoTvSearchEngine(IPrincipal identity, IRequestServiceMain service, ITvMazeApi tvMaze, IMapper mapper,
|
|
ISettingsService<PlexSettings> plexSettings, ISettingsService<EmbySettings> embySettings, IPlexContentRepository repo,
|
|
IEmbyContentRepository embyRepo, ITraktApi trakt, IRuleEvaluator r, OmbiUserManager um, ICacheService memCache,
|
|
ISettingsService<OmbiSettings> s, IRepository<RequestSubscription> sub, IOptions<DemoLists> lists)
|
|
: base(identity, service, tvMaze, mapper, plexSettings, embySettings, repo, embyRepo, trakt, r, um, memCache, s, sub)
|
|
{
|
|
_demoLists = lists.Value;
|
|
}
|
|
|
|
private readonly DemoLists _demoLists;
|
|
|
|
public async Task<IEnumerable<SearchTvShowViewModel>> Search(string search)
|
|
{
|
|
var searchResult = await TvMazeApi.Search(search);
|
|
|
|
for (var i = 0; i < searchResult.Count; i++)
|
|
{
|
|
if (!_demoLists.TvShows.Contains(searchResult[i].show?.externals?.thetvdb ?? 0))
|
|
{
|
|
searchResult.RemoveAt(i);
|
|
}
|
|
}
|
|
|
|
if (searchResult != null)
|
|
{
|
|
var retVal = new List<SearchTvShowViewModel>();
|
|
foreach (var tvMazeSearch in searchResult)
|
|
{
|
|
if (tvMazeSearch.show.externals == null || !(tvMazeSearch.show.externals?.thetvdb.HasValue ?? false))
|
|
{
|
|
continue;
|
|
}
|
|
retVal.Add(ProcessResult(tvMazeSearch));
|
|
}
|
|
return retVal;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public async Task<IEnumerable<SearchTvShowViewModel>> NowPlayingMovies()
|
|
{
|
|
var rand = new Random();
|
|
var responses = new List<SearchTvShowViewModel>();
|
|
for (int i = 0; i < 10; i++)
|
|
{
|
|
var item = rand.Next(_demoLists.TvShows.Length);
|
|
var tv = _demoLists.TvShows[item];
|
|
if (responses.Any(x => x.Id == tv))
|
|
{
|
|
i--;
|
|
continue;
|
|
}
|
|
|
|
var movieResult = await TvMazeApi.ShowLookup(tv);
|
|
responses.Add(ProcessResult(movieResult));
|
|
}
|
|
|
|
return responses;
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
public interface IDemoTvSearchEngine
|
|
{
|
|
Task<IEnumerable<SearchTvShowViewModel>> Search(string search);
|
|
Task<IEnumerable<SearchTvShowViewModel>> NowPlayingMovies();
|
|
}
|
|
}
|