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 ответа:
Я только что попробовал следующий запрос с несколькими фильтрами изображений непосредственно в наборе данных 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')
Это должно дать идею!