bool searchForImages(List<Scraper> lScrapers, ScraperResultsCache resultsCache, ThumbSearchType searchType, ScraperGame scraperGame) { foreach (Scraper scraper in lScrapers) { ScraperResult result = resultsCache.GetResult(scraper); if (!doWork()) return false; if (result == null) continue; if (searchType == ThumbSearchType.Fanart) { if (scraper.PopulateFanart(result, scraperGame)) break; } else if (searchType == ThumbSearchType.Covers) { if (scraper.PopulateCovers(result, scraperGame)) break; } else if (searchType == ThumbSearchType.Screens) { if (scraper.PopulateScreens(result, scraperGame)) break; } } return true; }
public ScraperGame DownloadInfo(ScraperResult result) { Scraper defaultScraper = result.DataProvider; ScraperGame scraperGame = defaultScraper.GetDetails(result); if (scraperGame == null || !doWork()) return null; Scraper coversScraper, screensScraper, fanartScraper; lock (scraperSync) { coversScraper = this.coversScraper; screensScraper = this.screensScraper; fanartScraper = this.fanartScraper; } ScraperResultsCache resultsCache = new ScraperResultsCache(result.Title, result.SearchParams); resultsCache.Add(defaultScraper, result); List<Scraper> searchScrapers = getSearchScrapers(coversScraper, defaultScraper); if (!searchForImages(searchScrapers, resultsCache, ThumbSearchType.Covers, scraperGame)) return null; //doWork is false searchScrapers = getSearchScrapers(screensScraper, defaultScraper); if (!searchForImages(searchScrapers, resultsCache, ThumbSearchType.Screens, scraperGame)) return null; searchScrapers = getSearchScrapers(fanartScraper, defaultScraper); searchForImages(searchScrapers, resultsCache, ThumbSearchType.Fanart, scraperGame); return scraperGame; }