【发布时间】:2015-08-22 15:42:54
【问题描述】:
我一直在尝试在我连接的特定频道上搜索与多个关键字之一匹配的视频。我正在使用 Officiel PHP SDK,这就是我所拥有的:
//client is a connected Google_Client
$youtube = new Google_Service_YouTube($client);
$pageToken = null;
$res = $youtube->search->listSearch(
'id, snippet', [
'maxResults' => 50,
'q' => "foo|bar",
'forMine' => true,
'type' => 'video',
'pageToken' => $pageToken
]
);
这只会返回包含“foo”和“bar”的视频,而不是“foo”或“bar”。我也尝试过“foo | bar”、“foo%7Cbar”、“urlencode(“foo|bar)”、“foo||bar”,但这些都没有给我想要的。
我错过了什么吗?
谢谢。
【问题讨论】:
-
如果您的意思是“非此即彼”,那么您可能正在寻找
xor,而不是or(即“非此即彼”)。 -
@lenz 感谢您的澄清,我实际上是在寻找“两者之一”,而我只得到那些包含“两者”的东西。我只想实现文档中描述的内容:您的请求还可以使用布尔 NOT (-) 和 OR (|) 运算符来排除视频或查找与多个搜索词之一相关联的视频。例如,要搜索匹配“boating”或“sailing”的视频,请将 q 参数值设置为boating|sailing。 编辑:现在我看到文档描述了“XOR”,但我怀疑这暗示了也将返回匹配两者的视频
-
上面的代码对我来说很好(使用 | 并且没有编码)。如果删除
forMine参数会发生什么?你应该得到数百个没有bars 和King of the bar却没有提到foo的Foo战斗机视频! -
@theduck 你是绝对正确的,没有 forMine 参数它工作正常。我真的不知道从那里去哪里,但至少这是一个开始 ;-) 谢谢。
-
API 浏览器是否也遇到同样的问题? IE。如果将 forMine 设置为 true,您是否仍然只有返回两个术语的视频?
标签: php youtube youtube-api youtube-data-api