/// <summary> /// Searches Bing.com API /// </summary> /// <param name="query">The QueryString to search against</param> /// <param name="urlmatch">Only return URLs containing the following match</param> /// <param name="threadID">The thread MovieUniqueId.</param> /// <returns>First successful match.</returns> public static BindingList<QueryResult> SearchBing(string query, string urlmatch, int threadID, string regexTitle, string regexYear, string regexID, ScraperList scraperList) { var logCatagory = "Scrape > Bing Search > " + query; try { var queryResults = new BindingList<QueryResult>(); query = query.Replace("%20", " "); using (var service = new BingService()) { var searchRequest = new SearchRequest { Query = query, Sources = new[] { SourceType.Web }, AppId = "9A2F2F47CF77629DA4E35E912F4B696217DCFC3C" }; var webRequest = new WebRequest { Count = 10, Offset = 0, OffsetSpecified = true }; searchRequest.Web = webRequest; var response = service.Search(searchRequest); if (response.Web.Results != null) { foreach (var result in response.Web.Results) { if (string.IsNullOrEmpty(result.Url) || result.Url.Contains(urlmatch)) { var queryResult = new QueryResult(); if (Regex.IsMatch(result.Title, regexTitle)) { if (Regex.IsMatch(result.Url, regexID)) { switch (scraperList) { case ScraperList.Imdb: queryResult.ImdbID = Regex.Match(result.Url, regexID).Groups["id"].Value; break; case ScraperList.TheMovieDB: queryResult.TmdbID = Regex.Match(result.Url, regexID).Groups["id"].Value; break; case ScraperList.Allocine: queryResult.AllocineId = Regex.Match(result.Url, regexID).Groups["id"].Value; break; case ScraperList.FilmAffinity: queryResult.FilmAffinityId = Regex.Match(result.Url, regexID).Groups["id"].Value; break; case ScraperList.FilmDelta: queryResult.FilmDeltaId = Regex.Match(result.Url, regexID).Groups["id"].Value; break; case ScraperList.FilmUp: queryResult.FilmUpId = Regex.Match(result.Url, regexID).Groups["id"].Value; break; case ScraperList.FilmWeb: queryResult.FilmWebId = Regex.Match(result.Url, regexID).Groups["id"].Value; break; case ScraperList.Impawards: queryResult.ImpawardsId = Regex.Match(result.Url, regexID).Groups["id"].Value; break; case ScraperList.Kinopoisk: queryResult.KinopoiskId = Regex.Match(result.Url, regexID).Groups["id"].Value; break; case ScraperList.OFDB: queryResult.OfdbId = Regex.Match(result.Url, regexID).Groups["id"].Value; break; case ScraperList.MovieMeter: queryResult.MovieMeterId = Regex.Match(result.Url, regexID).Groups["id"].Value; break; case ScraperList.Sratim: queryResult.SratimId = Regex.Match(result.Url, regexID).Groups["id"].Value; break; } } queryResult.Title = Regex.Match(result.Title, regexTitle).Groups["title"].Value; queryResult.Year = Regex.Match(result.Title, regexYear).Groups["year"].Value.ToInt(); } else { queryResult.Title = result.Title; } queryResult.AdditionalInfo = result.Description; queryResult.URL = result.Url; queryResults.Add(queryResult); } } } Log.WriteToLog(LogSeverity.Info, 0, string.Format("Bing search complete ({0} results)", queryResults.Count), query); return queryResults; } } catch (Exception ex) { Log.WriteToLog(LogSeverity.Error, LoggerName.GeneralLog, logCatagory, ex.Message); return null; } }
/// <summary> /// Searches Bing.com API /// </summary> /// <param name="query">The QueryString to search against</param> /// <param name="urlmatch">Only return URLs containing the following match</param> /// <param name="threadID">The thread MovieUniqueId.</param> /// <returns>First successful match.</returns> public static BindingList<QueryResult> SearchBing(string query, string urlmatch, int threadID) { var logCatagory = "Scrape > Bing Search > " + query; try { var queryResults = new BindingList<QueryResult>(); query = query.Replace("%20", " "); using (var service = new LiveSearchService()) { var searchRequest = new SearchRequest { Query = query, Sources = new[] { SourceType.Web }, AppId = "9A2F2F47CF77629DA4E35E912F4B696217DCFC3C" }; var webRequest = new WebRequest { Count = 10, Offset = 0, OffsetSpecified = true }; searchRequest.Web = webRequest; var response = service.Search(searchRequest); if (response.Web.Results != null) { foreach (var result in response.Web.Results) { if (string.IsNullOrEmpty(result.Url) || result.Url.Contains(urlmatch)) { var queryResult = new QueryResult(); if (Regex.IsMatch(result.Title, @"(?<title>.*?)\s\((?<year>\d{4})")) { if (Regex.IsMatch(result.Url, @"(?<imdbid>tt\d{7})")) { queryResult.ImdbID = Regex.Match(result.Url, @"(?<imdbid>tt\d{7})").Groups["imdbid"].Value; } queryResult.Title = Regex.Match(result.Title, @"(?<title>.*?)\s\((?<year>\d{4})").Groups["title"].Value; queryResult.Year = Regex.Match(result.Title, @"(?<title>.*?)\s\((?<year>\d{4})").Groups["year"].Value.ToInt(); } else { queryResult.Title = result.Title; } queryResult.AdditionalInfo = result.Description; queryResult.URL = result.Url; queryResults.Add(queryResult); } } } return queryResults; } } catch (Exception ex) { Log.WriteToLog(LogSeverity.Error, LoggerName.GeneralLog, logCatagory, ex.Message); return null; } }
/// <remarks/> public void SearchAsync(SearchRequest parameters) { this.SearchAsync(parameters, null); }
/// <remarks/> public void SearchAsync(SearchRequest parameters, object userState) { if ((this.SearchOperationCompleted == null)) { this.SearchOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSearchOperationCompleted); } this.InvokeAsync("Search", new object[] { parameters}, this.SearchOperationCompleted, userState); }
public SearchResponse Search(SearchRequest parameters) { object[] results = this.Invoke("Search", new object[] { parameters}); return ((SearchResponse)(results[0])); }