Azure / Bing Image Search API: как добавить несколько фильтров изображений?


Я пытаюсь вернуть только те изображения, которые являются Style:Photo и Aspect:Tall.

Мне кажется, что я могу искать только один параметр ImageFilters, например:

https://api.datamarket.azure.com/Bing/Search/Image?Query='Houses'&$format=JSON&ImageFilters='Style:Photo'&Market='en-us'

Важная часть:

&ImageFilters='Style:Photo'

Если я попытаюсь добавить еще один, например:

ImageFilters='Style:Photo'+'Aspect:Tall'

Я получаю эту ошибку:

Parameter: ImageFilters has an invalid pattern of characters

Есть идеи?

3 2

3 ответа:

Я только что попробовал следующий запрос с несколькими фильтрами изображений непосредственно в наборе данных Bing Search API, который правильно работал с моей подпиской:

Https://api.datamarket.azure.com/Data.ashx/Bing/Search/v1/Image?Query=%27justin%20biber%27&ImageFilters=%27Style%3aPhoto%2bSize%3aSmall%2bAspect%3aTall%27&$top=50&$format=Атом

Эквивалентно приведенному ниже:

Https://api.datamarket.azure.com/Data.ashx/Bing/Search/v1/Image?Query= ' Джастин Бибер'&ImageFilters='стиле:Фото+размер:маленький+аспект:высокорослый'&$топ=50&$формат=Атом

Поэтому, если вы попытаетесь поместить весь ImageFilter в одну единственную цитату как ImageFilters='Style:Photo+Size:Small+Aspect:Tall', и это должно сработать.

, Если ImageFilters='стиле:Фото+размер:маленький+аспект:высокорослый' не работает, то попробуйте изменить + знак %2б

ImageFilters='Style:Photo%2BSize:Small%2BAspect:Tall'

Это работает на меня.

И если вы используете BingSearchContainer.cs есть еще одна проблема, вы не можете использовать знак + или %2B решение состоит в замене

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

С

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

Это старая, но у меня была похожая проблема, которую я решил. Одна из проблем заключается в том, что

ImageFilters='Style:Photo'+'Aspect:Tall'

Должно быть ImageFilters='Style:Photo+Aspect:Tall', поэтому цитируем все значение, а не отдельные параметры. Другая неочевидная вещь здесь-замена. Это было успешно реализовано в репо python по адресу https://github.com/xthepoet/pyBingSearchAPI . часть кода:

request = string.replace(request, "'", '%27')
request = string.replace(request, '"', '%27')
request = string.replace(request, '+', '%2b')
request = string.replace(request, ' ', '%20')
request = string.replace(request, ':', '%3a')

Это должно дать идею!