public void SetUp()
        {
            Subject.Settings = new NewznabSettings()
            {
                BaseUrl    = "http://127.0.0.1:1234/",
                Categories = new[] { 1, 2 },
                ApiKey     = "abcd",
            };

            _movieSearchCriteria = new MovieSearchCriteria
            {
                Movie = new Movies.Movie {
                    ImdbId = "tt0076759", Title = "Star Wars", Year = 1977, TmdbId = 11
                },
                SceneTitles = new List <string> {
                    "Star Wars"
                }
            };

            _capabilities = new NewznabCapabilities();

            Mocker.GetMock <INewznabCapabilitiesProvider>()
            .Setup(v => v.GetCapabilities(It.IsAny <NewznabSettings>()))
            .Returns(_capabilities);
        }
        public void SetUp()
        {
            Subject.Settings = new NewznabSettings()
            {
                BaseUrl = "http://127.0.0.1:1234/",
                ApiKey  = "abcd",
            };

            _movieSearchCriteria = new MovieSearchCriteria
            {
                SearchTerm = "Star Wars",
                Categories = new int[] { 2000 }
            };

            _tvSearchCriteria = new TvSearchCriteria
            {
                SearchTerm = "Star Wars",
                Categories = new int[] { 5000 },
                Season     = 0
            };

            _capabilities = new IndexerCapabilities();

            Mocker.GetMock <INewznabCapabilitiesProvider>()
            .Setup(v => v.GetCapabilities(It.IsAny <NewznabSettings>(), It.IsAny <IndexerDefinition>()))
            .Returns(_capabilities);
        }
Пример #3
0
        public void Setup()
        {
            Subject.Settings = new HDBitsSettings()
            {
                ApiKey   = "abcd",
                Username = "******"
            };

            Subject.Capabilities = new IndexerCapabilities
            {
                TvSearchParams = new List <TvSearchParam>
                {
                    TvSearchParam.Q, TvSearchParam.Season, TvSearchParam.Ep, TvSearchParam.TvdbId
                },
                MovieSearchParams = new List <MovieSearchParam>
                {
                    MovieSearchParam.Q, MovieSearchParam.ImdbId
                },
            };

            Subject.Capabilities.Categories.AddCategoryMapping(6, NewznabStandardCategory.Audio, "Audio Track");
            Subject.Capabilities.Categories.AddCategoryMapping(3, NewznabStandardCategory.TVDocumentary, "Documentary");
            Subject.Capabilities.Categories.AddCategoryMapping(8, NewznabStandardCategory.Other, "Misc/Demo");
            Subject.Capabilities.Categories.AddCategoryMapping(1, NewznabStandardCategory.Movies, "Movie");
            Subject.Capabilities.Categories.AddCategoryMapping(4, NewznabStandardCategory.Audio, "Music");
            Subject.Capabilities.Categories.AddCategoryMapping(5, NewznabStandardCategory.TVSport, "Sport");
            Subject.Capabilities.Categories.AddCategoryMapping(2, NewznabStandardCategory.TV, "TV");
            Subject.Capabilities.Categories.AddCategoryMapping(7, NewznabStandardCategory.XXX, "XXX");

            _movieSearchCriteria = new MovieSearchCriteria
            {
                Categories = new int[] { 2000, 2010 },
                ImdbId     = "0076759"
            };
        }
        public virtual IndexerPageableRequestChain GetSearchRequests(MovieSearchCriteria searchCriteria)
        {
            var pageableRequests = new IndexerPageableRequestChain();
            var query            = new TorrentQuery();
            var imdbId           = ParseUtil.GetImdbID(searchCriteria.ImdbId).GetValueOrDefault(0);

            if (searchCriteria.Categories?.Length > 0)
            {
                query.Category = Capabilities.Categories.MapTorznabCapsToTrackers(searchCriteria.Categories).Select(int.Parse).ToArray();
            }

            if (imdbId == 0 && searchCriteria.SearchTerm.IsNotNullOrWhiteSpace())
            {
                query.Search = searchCriteria.SanitizedSearchTerm;
            }

            if (imdbId != 0)
            {
                query.ImdbInfo    = query.ImdbInfo ?? new ImdbInfo();
                query.ImdbInfo.Id = imdbId;
            }

            pageableRequests.Add(GetRequest(query));

            return(pageableRequests);
        }
Пример #5
0
        public async Task <List <Movie> > SearchMoviesAsync(MovieSearchCriteria movieSearchCritera)
        {
            IQueryable <Repo.Movie> query = _context.MovieDbSet
                                            .OrderBy(m => m.Title);

            if (!string.IsNullOrWhiteSpace(movieSearchCritera.Title))
            {
                query = query.Where(m => m.Title.Contains(movieSearchCritera.Title));
            }

            if (movieSearchCritera.YearOfRelease > 0)
            {
                query = query.Where(m => m.YearOfRelease == movieSearchCritera.YearOfRelease);
            }

            if (movieSearchCritera.Genres != null && movieSearchCritera.Genres.Any())
            {
                var genreList = movieSearchCritera.Genres.Cast <int>().ToList();
                query = query.Where(m => genreList.Contains(m.GenreId));
            }

            return(await query.Select(m => new Movie
            {
                AverageRating = m.AverageRating,
                Genre = (Genres)m.GenreId,
                Id = m.Id,
                RunningTime = m.RunningTime,
                Title = m.Title,
                YearOfRelease = m.YearOfRelease
            })
                   .ToListAsync());
        }
Пример #6
0
        private IEnumerable <IndexerRequest> GetMovieRequest(MovieSearchCriteria searchCriteria)
        {
            var requestBuilder = new HttpRequestBuilder(Settings.BaseUrl)
                                 .Resource("/pubapi_v2.php")
                                 .Accept(HttpAccept.Json);

            if (Settings.CaptchaToken.IsNotNullOrWhiteSpace())
            {
                requestBuilder.UseSimplifiedUserAgent = true;
                requestBuilder.SetCookie("cf_clearance", Settings.CaptchaToken);
            }

            requestBuilder.AddQueryParam("mode", "search");

            requestBuilder.AddQueryParam("search_imdb", searchCriteria.Movie.ImdbId);

            if (!Settings.RankedOnly)
            {
                requestBuilder.AddQueryParam("ranked", "0");
            }

            requestBuilder.AddQueryParam("category", "movies");
            requestBuilder.AddQueryParam("limit", "100");
            requestBuilder.AddQueryParam("token", _tokenProvider.GetToken(Settings));
            requestBuilder.AddQueryParam("format", "json_extended");
            requestBuilder.AddQueryParam("app_id", "Bonarr");

            yield return(new IndexerRequest(requestBuilder.Build()));
        }
Пример #7
0
        protected static IEnumerable MixFilterData()
        {
            TestCaseData result;

            var filter = new MovieSearchCriteria {
                Genres = new List <Genres> {
                    Genres.Action
                }, YearOfRelease = 1999
            };

            result = new TestCaseData(filter, 4);
            yield return(result);

            filter = new MovieSearchCriteria {
                Title = "test", YearOfRelease = 2000
            };
            result = new TestCaseData(filter, 2);
            yield return(result);

            filter = new MovieSearchCriteria {
                Title = "test", Genres = new List <Genres> {
                    Genres.Horror
                }
            };
            result = new TestCaseData(filter, 1);
            yield return(result);
        }
 public void Search(MovieSearchCriteria criteria)
 {
     window.Get <TextBox>("nameTextbox").Text     = criteria.Name;
     window.Get <TextBox>("directorTextbox").Text = criteria.Director;
     window.Get <Button>("search").Click();
     window.Get <Button>("select").Click();
 }
Пример #9
0
        public IndexerPageableRequestChain GetSearchRequests(MovieSearchCriteria searchCriteria)
        {
            var pageableRequests = new IndexerPageableRequestChain();

            if (!Settings.SearchByTitle && SupportsMovieSearch && searchCriteria.Movie.ImdbId.IsNotNullOrWhiteSpace())
            {
                pageableRequests.Add(GetPagedRequests(MaxPages, Settings.Categories, "movie", $"&imdbid={searchCriteria.Movie.ImdbId.Substring(2)}"));
            }
            else
            {
                var altTitles = searchCriteria.Movie.AlternativeTitles.Take(5).Select(t => t.Title).ToList();
                altTitles.Add(searchCriteria.Movie.Title);

                var realMaxPages = (int)MaxPages / (altTitles.Count());

                //pageableRequests.Add(GetPagedRequests(MaxPages - (altTitles.Count() * realMaxPages), Settings.Categories, "search", $"&q={searchTitle}%20{searchCriteria.Movie.Year}"));

                //Also use alt titles for searching.
                foreach (String altTitle in altTitles)
                {
                    var searchAltTitle = System.Web.HttpUtility.UrlPathEncode(Parser.Parser.ReplaceGermanUmlauts(Parser.Parser.NormalizeTitle(altTitle)));
                    var queryString    = $"&q={searchAltTitle}";
                    if (!Settings.RemoveYear)
                    {
                        queryString += $"%20{searchCriteria.Movie.Year}";
                    }
                    pageableRequests.Add(GetPagedRequests(realMaxPages, Settings.Categories, "search", queryString));
                }
            }

            return(pageableRequests);
        }
Пример #10
0
        private IEnumerable <IndexerRequest> GetMovieRequest(MovieSearchCriteria searchCriteria)
        {
            var requestBuilder = new HttpRequestBuilder(Settings.BaseUrl)
                                 .Accept(HttpAccept.Json);

            requestBuilder.AddQueryParam("passkey", Settings.Passkey);

            if (!string.IsNullOrWhiteSpace(Settings.User))
            {
                requestBuilder.AddQueryParam("user", Settings.User);
            }
            else
            {
                requestBuilder.AddQueryParam("user", "");
            }

            if (searchCriteria.Movie.ImdbId.IsNotNullOrWhiteSpace())
            {
                requestBuilder.AddQueryParam("imdbid", searchCriteria.Movie.ImdbId);
            }
            else
            {
                requestBuilder.AddQueryParam("search", $"{searchCriteria.Movie.Title} {searchCriteria.Movie.Year}");
            }

            yield return(new IndexerRequest(requestBuilder.Build()));
        }
Пример #11
0
        public IndexerPageableRequestChain GetSearchRequests(MovieSearchCriteria searchCriteria)
        {
            var pageableRequests = new IndexerPageableRequestChain();

            pageableRequests.Add(GetPagedRequests(string.Format("{0}", searchCriteria.SanitizedSearchTerm), searchCriteria));
            return(pageableRequests);
        }
Пример #12
0
        public ISpecification <Movie> CreateSpecification(MovieSearchCriteria searchCriteria)
        {
            ISpecification <Movie> specification = new EmptySpecification <Movie>();

            if (!string.IsNullOrEmpty(searchCriteria.Title))
            {
                specification = specification.And(new TitleIncludesSpecification(searchCriteria.Title));
            }
            if (searchCriteria.Genre.HasValue)
            {
                specification = specification.And(new GenreIsSpecification(searchCriteria.Genre));
            }
            if (searchCriteria.MinYearOfRelease.HasValue || searchCriteria.MaxYearOfRelease.HasValue)
            {
                specification = specification.And(new YearOfReleaseBetweenSpecification(searchCriteria.MinYearOfRelease, searchCriteria.MaxYearOfRelease));
            }
            if (searchCriteria.MinRunningTimeInMinutes.HasValue || searchCriteria.MaxRunningTimeInMinutes.HasValue)
            {
                specification = specification.And(new RunningTimeBetweenSpecification(searchCriteria.MinRunningTimeInMinutes, searchCriteria.MaxRunningTimeInMinutes));
            }

            if (specification.GetType() == typeof(EmptySpecification <Movie>))
            {
                throw new EmptySpecificationException("No filter criteria procided");
            }

            return(specification);
        }
Пример #13
0
        public ActionResult <List <DTO.Movie> > Get([FromQuery] MovieSearchCriteria sc)
        {
            if (!sc.IsValid())
            {
                _logger.LogError("Bad request was recieved");
                return(BadRequest($"Data provided  was : {sc}"));
            }
            try
            {
                var results = _movieService.GetMatchingMovies(sc);

                if (!results.Any())
                {
                    return(NotFound(new ProblemDetails()
                    {
                        Detail = "No data found for search criteria {sc}"
                    }));
                }

                return(Ok(_mapper.Map <List <DTO.Movie> >(results)));
            }
            catch (Exception ex)
            {
                return(ExceptionHandlingCode(ex));
            }
        }
Пример #14
0
        public IndexerPageableRequestChain GetSearchRequests(MovieSearchCriteria searchCriteria)
        {
            var pageableRequests = new IndexerPageableRequestChain();

            pageableRequests.Add(GetMovieRequest(searchCriteria));
            return(pageableRequests);
        }
Пример #15
0
        public IndexerPageableRequestChain GetSearchRequests(MovieSearchCriteria searchCriteria)
        {
            var pageableRequests = new IndexerPageableRequestChain();

            pageableRequests.Add(GetPagedRequests(string.Format("{0}", searchCriteria.SearchTerm), searchCriteria.Categories, searchCriteria.FullImdbId));

            return(pageableRequests);
        }
Пример #16
0
        public void OnGet([FromQuery] MovieSearchCriteria searchCriteria)
        {
            PageIndex = searchCriteria.PageIndex;
            PageSize  = searchCriteria.PageSize;
            MovieName = searchCriteria.MovieName;

            Movies = _movieService.SearchMovies(searchCriteria);
        }
Пример #17
0
        public IndexerPageableRequestChain GetSearchRequests(MovieSearchCriteria searchCriteria)
        {
            var pageableRequests = new IndexerPageableRequestChain();

            AddMovieIdPageableRequests(pageableRequests, MaxPages, Settings.Categories, searchCriteria);

            return(pageableRequests);
        }
Пример #18
0
        public IndexerPageableRequestChain GetSearchRequests(MovieSearchCriteria searchCriteria)
        {
            var pageableRequests = new IndexerPageableRequestChain();

            pageableRequests.Add(GetPagedRequests(string.Format("{0}", searchCriteria.SanitizedSearchTerm), searchCriteria.Categories, searchCriteria.FullImdbId, searchCriteria.TmdbId.GetValueOrDefault(0)));

            return(pageableRequests);
        }
Пример #19
0
        public void Setup()
        {
            _movie = Builder <Movie> .CreateNew()
                     .With(m => m.Title             = "Fack Ju Göthe 2")
                     .With(m => m.CleanTitle        = "fackjugoethe2")
                     .With(m => m.Year              = 2015)
                     .With(m => m.AlternativeTitles = new LazyList <AlternativeTitle>(new List <AlternativeTitle> {
                new AlternativeTitle("Fack Ju Göthe 2: Same same")
            }))
                     .Build();

            _parsedMovieInfo = new ParsedMovieInfo
            {
                MovieTitle = _movie.Title,
                Year       = _movie.Year,
            };

            _wrongYearInfo = new ParsedMovieInfo
            {
                MovieTitle = _movie.Title,
                Year       = 1900,
            };

            _wrongTitleInfo = new ParsedMovieInfo
            {
                MovieTitle = "Other Title",
                Year       = 2015
            };

            _alternativeTitleInfo = new ParsedMovieInfo
            {
                MovieTitle = _movie.AlternativeTitles.First().Title,
                Year       = _movie.Year,
            };

            _romanTitleInfo = new ParsedMovieInfo
            {
                MovieTitle = "Fack Ju Göthe II",
                Year       = _movie.Year,
            };

            _umlautInfo = new ParsedMovieInfo
            {
                MovieTitle = "Fack Ju Goethe 2",
                Year       = _movie.Year
            };

            _umlautAltInfo = new ParsedMovieInfo
            {
                MovieTitle = "Fack Ju Goethe 2: Same same",
                Year       = _movie.Year
            };

            _movieSearchCriteria = new MovieSearchCriteria
            {
                Movie = _movie
            };
        }
        public void SetUp()
        {
            UseRealHttp();

            _singleSearchCriteria = new MovieSearchCriteria()
            {
                SearchTerm = "Person of Interest",
            };
        }
Пример #21
0
        public override Task <IndexerPageableQueryResult> Fetch(MovieSearchCriteria searchCriteria)
        {
            if (!SupportsSearch)
            {
                return(Task.FromResult(new IndexerPageableQueryResult()));
            }

            return(FetchReleases(g => SetCookieFunctions(g).GetSearchRequests(searchCriteria)));
        }
Пример #22
0
        public override IList <ReleaseInfo> Fetch(MovieSearchCriteria searchCriteria)
        {
            if (!SupportsSearch)
            {
                return(new List <ReleaseInfo>());
            }

            return(FetchReleases(g => g.GetSearchRequests(searchCriteria)));
        }
Пример #23
0
        public IEnumerable <Movie> Find(MovieSearchCriteria searchCriteria, int limit)
        {
            IEnumerable <Movie> movies = _repository.Find(
                filter: _movieSpecificationFactory.CreateSpecification(searchCriteria),
                orderBy: r => r.OrderBy(m => m.Title),
                limit: limit
                );

            return(movies);
        }
Пример #24
0
        public ActionResult <IEnumerable <MovieViewModel> > Find([FromQuery] MovieSearchCriteria searchCriteria, int limit = 5)
        {
            IList <Movie> movies = _movieService.Find(searchCriteria, limit).ToList();

            if (!movies.Any())
            {
                return(NotFound("No movie found"));
            }

            return(viewModel(movies));
        }
Пример #25
0
        public void SetUp()
        {
            UseRealHttp();

            _singleSearchCriteria = new MovieSearchCriteria()
            {
                SceneTitles = new List <string> {
                    "Person of Interest"
                },
            };
        }
Пример #26
0
        public override IList <ReleaseInfo> Fetch(MovieSearchCriteria searchCriteria)
        {
            if (!SupportsSearch)
            {
                return(new List <ReleaseInfo>());
            }

            var generator = GetRequestGenerator();

            return(FetchReleases(generator.GetSearchRequests(searchCriteria)));
        }
Пример #27
0
        public IndexerPageableRequestChain GetSearchRequests(MovieSearchCriteria searchCriteria)
        {
            var pageableRequests = new IndexerPageableRequestChain();

            foreach (var queryTitle in searchCriteria.QueryTitles)
            {
                pageableRequests.Add(GetPagedRequests(MaxPages, PrepareQuery(string.Format("{0} {1}", queryTitle, searchCriteria.Movie.Year))));
            }

            return(pageableRequests);
        }
Пример #28
0
        public void Test_ReturnNonEmptySpecificationForNonEmptySearchCriteria()
        {
            MovieSearchCriteria searchCriteria = new MovieSearchCriteria()
            {
                Title = "godfather"
            };

            ISpecification <Movie> specification = factory.CreateSpecification(searchCriteria);

            Assert.IsNotAssignableFrom <EmptySpecification <Movie> >(specification);
        }
Пример #29
0
        public List <Dto.Movie> GetList(MovieSearchCriteria criteria, int page, int pageSize)
        {
            var criteriaEntity = new Framework.Model.Criteria.MovieSearchCriteria()
            {
                Name = criteria.Name
            };
            var result = _movieRepository.GetList(criteriaEntity, page, pageSize);
            var entity = _mapper.Map <List <Entities.Movie>, List <Dto.Movie> >(result);

            return(entity);
        }
Пример #30
0
        public virtual IndexerPageableRequestChain GetSearchRequests(MovieSearchCriteria searchCriteria)
        {
            var pageableRequests = new IndexerPageableRequestChain();
            var query            = new TorrentQuery();

            if (TryAddSearchParameters(query, searchCriteria))
            {
                pageableRequests.Add(GetRequest(query));
            }

            return(pageableRequests);
        }