2

我试图只返回 Style:PhotoAspect: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

有任何想法吗?

4

3 回答 3

4

我刚刚在必应搜索 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&$格式=原子

相当于如下:

https://api.datamarket.azure.com/Data.ashx/Bing/Search/v1/Image?Query='justin biber'&ImageFilters='Style:Photo+Size:Small+Aspect:Tall'&$top=50& $格式=原子

因此,如果您尝试将整个 ImageFilter作为ImageFilters='Style:Photo+Size:Small+Aspect:Tall'放在一个单引号中,它应该可以工作。

于 2012-07-25T20:10:08.010 回答
3

如果ImageFilters='Style:Photo+Size:Small+Aspect:Tall'不起作用然后尝试将+符号更改为%2B

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, 
"\'"));
于 2013-10-17T17:31:29.583 回答
1

这是旧的,但我有一个类似的问题,我解决了。一个问题是

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

应该是ImageFilters='Style:Photo+Aspect:Tall',所以引用整个值,而不是单个参数。这里另一个不明显的事情是替换。这已在https://github.com/xthepoet/pyBingSearchAPI的 python 存储库中成功实现。部分代码:

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')

这应该给出想法!

于 2014-11-05T14:59:54.443 回答