ImageSelection.BingImageSearch C# (CSharp) Method

BingImageSearch() public static method

public static BingImageSearch ( string search_expression, int max ) : string>>.List
search_expression string
max int
return string>>.List
    public static List<Dictionary<string, string>> BingImageSearch(string search_expression, int max)
    {
        HttpUtils.Wait(1);
        var url_template = "http://api.search.live.net/json.aspx?AppId=" + CalendarAggregator.Configurator.bing_api_key + "&Market=en-US&Sources=Image&Adult=Strict&Query={0}&Image.Count={1}";
        var results_list = new List<Dictionary<string, string>>();
        Uri search_url;

        search_url = new Uri(string.Format(url_template, search_expression, max));

        var page = HttpUtils.RetryHttpRequestExpectingStatus(search_url.ToString(), HttpStatusCode.OK).DataAsString();

        try
        {
            JObject o = (JObject)JsonConvert.DeserializeObject(page);

            var results_query =
                from result in o["SearchResponse"]["Image"]["Results"].Children()
                select new Dictionary<string, string>() {
                              { "Width", result.Value<int>("Width").ToString() ?? ""  },
                              { "Height", result.Value<int>("Height").ToString() ?? "" },
                              { "MediaUrl", result.Value<string>("MediaUrl").ToString() ?? "" },
                              { "Title", result.Value<string>("Title").ToString() ?? "" },
                              { "Thumbnail", result["Thumbnail"].Value<string>("Url").ToString() ?? ""},
                            };

            foreach (var result in results_query)
            {
                if (result == null)
                    continue;

                var w = Convert.ToDouble(result["Width"]);
                var h = Convert.ToDouble(result["Height"]);

                if (w < 140)
                    continue;

                if (h >= w)
                    continue;

                var ratio = w / h;

                if (ratio > 1.5)
                    continue;

                results_list.Add(result);
            }
        }

        catch
        {
            Console.WriteLine("BingImageSearch: " + search_expression);
        }

        return results_list;
    }