我正在尝试仅返回风格:照片和方面:高大的图像。
我似乎只能搜索一个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
有什么想法吗?
答案 0 :(得分:4)
我刚刚在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 = Atom
相当于以下内容:
https://api.datamarket.azure.com/Data.ashx/Bing/Search/v1/Image?Query='justin biber'& ImageFilters ='Style:Photo + Size:Small + Aspect:Tall'& $ top = 50& $ format = Atom
因此,如果您尝试将整个ImageFilter放入一个单引号中 ImageFilters ='样式:照片+尺寸:小+宽高比:高',它应该可以正常工作。
答案 1 :(得分:3)
如果 ImageFilters ='样式:照片+尺寸:小+宽高比:高'不工作然后尝试将 + 符号更改为%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,
"\'"));
答案 2 :(得分:1)
这是旧的,但我遇到了类似的问题,我解决了。一个问题是
ImageFilters='Style:Photo'+'Aspect:Tall'
应为ImageFilters='Style:Photo+Aspect:Tall'
,因此引用整个值,而不是单个参数。另一个非显而易见的事情就是替换。这是在https://github.com/xthepoet/pyBingSearchAPI的python repo中成功实现的。部分代码:
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')
这应该给出这个想法!