Exemple #1
0
        protected override async Task <IEnumerable <ReleaseInfo> > PerformQuery(TorznabQuery query)
        {
            var isTv = TorznabCatType.QueryContainsParentCategory(query.Categories, new List <int> {
                TorznabCatType.TV.ID
            });
            var releases    = new List <ReleaseInfo>();
            var searchQuery = query.GetQueryString();

            searchQuery = searchQuery.Replace("Marvels", "Marvel");                          // strip 's for better results
            var searchQuerySingleEpisodes = Regex.Replace(searchQuery, @"(S\d{2})$", "$1*"); // If we're just seaching for a season (no episode) append an * to include all episodes of that season.

            await GetReleases(releases, query, searchQuerySingleEpisodes);

            // Always search for torrent groups (complete seasons) too
            var seasonMatch = new Regex(@".*\s[Ss]{1}\d{2}([Ee]{1}\d{2,3})?$").Match(searchQuery);

            if (seasonMatch.Success)
            {
                var newSearchQuery = Regex.Replace(searchQuery, @"[Ss]{1}\d{2}([Ee]{1}\d{2,3})?", $"Season {query.Season}");

                await GetReleases(releases, query, newSearchQuery);
            }

            return(releases);
        }
Exemple #2
0
        public async Task <IEnumerable <ReleaseInfo> > PerformQuery(TorznabQuery query)
        {
            var isTv = TorznabCatType.QueryContainsParentCategory(query.Categories, new List <int> {
                TorznabCatType.TV.ID
            });
            var releases    = new List <ReleaseInfo>();
            var searchQuery = query.GetQueryString();
            var searchQuerySingleEpisodes = Regex.Replace(searchQuery, @"(S\d{2})$", "$1*"); // If we're just seaching for a season (no episode) append an * to include all episodes of that season.

            await GetReleases(releases, query, searchQuerySingleEpisodes);

            // Search for torrent groups
            if (isTv)
            {
                var seasonMatch = new Regex(@".*\s[Ss]{1}\d{2}").Match(query.GetQueryString());
                if (seasonMatch.Success)
                {
                    var newSearchQuery = Regex.Replace(searchQuery, @"[Ss]{1}\d{2}", $"Season {query.Season}");

                    await GetReleases(releases, query, newSearchQuery);
                }
            }

            return(releases);
        }
Exemple #3
0
        public async Task <IEnumerable <ReleaseInfo> > PerformQuery(TorznabQuery query)
        {
            var isTv        = TorznabCatType.QueryContainsParentCategory(query.Categories, TorznabCatType.TV.ID);
            var releases    = new List <ReleaseInfo>();
            var searchQuery = query.GetQueryString();

            await GetReleases(releases, query, searchQuery);

            // Search for torrent groups
            if (isTv)
            {
                var seasonMatch = new Regex(@".*\s[Ss]{1}\d{2}").Match(query.GetQueryString());
                if (seasonMatch.Success)
                {
                    var newSearchQuery = Regex.Replace(searchQuery, @"[Ss]{1}\d{2}", $"Season {query.Season}");

                    await GetReleases(releases, query, newSearchQuery);
                }
            }

            return(releases);
        }
Exemple #4
0
        protected virtual IEnumerable <ReleaseInfo> FilterResults(TorznabQuery query, IEnumerable <ReleaseInfo> results)
        {
            if (query.Categories.Length == 0)
            {
                return(results);
            }

            var filteredResults = results.Where(result =>
            {
                return(result.Category.IsEmptyOrNull() || query.Categories.Intersect(result.Category).Any() || TorznabCatType.QueryContainsParentCategory(query.Categories, result.Category));
            });

            return(filteredResults);
        }
Exemple #5
0
 public virtual IEnumerable <ReleaseInfo> FilterResults(TorznabQuery query, IEnumerable <ReleaseInfo> results)
 {
     foreach (var result in results)
     {
         if (query.Categories.Length == 0 || result.Category == null || result.Category.Count() == 0 || query.Categories.Intersect(result.Category).Any() || TorznabCatType.QueryContainsParentCategory(query.Categories, result.Category))
         {
             yield return(result);
         }
     }
 }