Размер фильтра API поиска изображений Bing

Я использую API-интерфейс поиска изображений Bing для извлечения некоторых изображений из Bing. Я хочу получить маленькие изображения, средние или большие, в зависимости от задачи, которую я хочу выполнить. Однако, похоже, я делаю что-то не так.

Вот мой код:

            // This is the query - or you could get it from args.

            string query = keyword;

            // Create a Bing container.

            string rootUri = "https://api.datamarket.azure.com/Bing/Search";

            var bingContainer = new Bing.BingSearchContainer(new Uri(rootUri));

            // Configure bingContainer to use your credentials.

            bingContainer.Credentials = new NetworkCredential(uid, uid);

            // Build the query.


            var imageQuery = bingContainer.Image(keyword, null, null, null, null, null, null);

            switch (i)
            {
                case 0:
                    imageQuery = imageQuery.AddQueryOption("Size", "Small");
                    break;
                case 1:
                    imageQuery = imageQuery.AddQueryOption("Size", "Medium");
                    break;
                case 2:
                    imageQuery = imageQuery.AddQueryOption("Size", "Large");
                    break;
            }
            var imageResults = imageQuery.Execute();

            foreach (var result in imageResults)
            {

                Console.WriteLine(result.Title + ":" + result.MediaUrl);

            }

Я получаю сообщение об ошибке в var imageResults = imageQuery.Execute()

Вот ошибка An error occurred while processing this request

ImageQuery выглядит следующим образом (при возникновении исключения): Ссылка

Работает без фильтров.

Мы ценим любые предложения.


person user3564958    schedule 17.07.2014    source источник
comment
Если это точно такой же код, компилировать его не стоит - после Large пропущена скобка   -  person sarh    schedule 17.07.2014
comment
пропустил это, когда выкладывал сюда   -  person user3564958    schedule 17.07.2014


Ответы (1)


Вы можете использовать конструктор:

var imageQuery = bingContainer.Image(keyword, null, null, null, null, null, "Size:Small");

Обратите внимание, что внутри он делает следующее:

query = query.AddQueryOption("ImageFilters", string.Concat("\'", System.Uri.EscapeDataString(ImageFilters), "\'"));

Где query — ваш запрос изображения

Поэтому, если вы не хотите использовать конструктор, вы должны иметь возможность переключать регистры (0,1,2) следующим образом:

var imageQuery = bingContainer.Image(keyword, null, null, null, null, null, null);

string imageFilters;
switch (i)
{
    case 0:
        imageFilters= ("Size:Small");
        break;
    case 1:
        imageFilters= ("Size:Medium");
        break;
    case 2:
        imageFilters= ("Size:Large");
        break;
}
imageQuery = query.AddQueryOption("ImageFilters", string.Concat("\'", System.Uri.EscapeDataString(imageFilters), "\'"));
person MZHm    schedule 05.11.2015