using System; using System.Collections.Generic; using System.Text; using Client.Scraper; using System.Threading; namespace BlueTube.Viewer { class ScraperService { public ScrapedPage ScrapVideos(SearchParameters sparam = null) { var scraper = new XVideoScraper(); return scraper.ScrapeVideos(sparam); } public ScrapedVideo ScrapVideoDetails(ScrapedVideo video) { var scraper = new XVideoScraper(); return scraper.ScrapeVideoDetails(video); } public void ScrapVideosAsync(IScraperServiceCallback callback, SearchParameters sparam = null) { ThreadPool.QueueUserWorkItem(delegate { try { callback.OnScrapVideoCompleted(new XVideoScraper().ScrapeVideos(sparam)); } catch (Exception ex) { callback.OnScrapError(ex); } }); } public void ScrapVideosDetailsAsync(ScrapedVideo video, IScraperServiceCallback callback) { ThreadPool.QueueUserWorkItem(delegate { try { callback.OnScrapVideoDetailsCompleted(new XVideoScraper().ScrapeVideoDetails(video)); } catch (Exception ex) { callback.OnScrapError(ex); } }); } } public interface IScraperServiceCallback { void OnScrapVideoCompleted(ScrapedPage page); void OnScrapVideoDetailsCompleted(ScrapedVideo video); void OnScrapError(Exception ex); } }