gpt4 book ai didi

bash - 从YouTube GData API检索随机视频

转载 作者:行者123 更新时间:2023-12-03 06:01:12 25 4
gpt4 key购买 nike

我正在尝试根据结果集中的可用总结果来随机分配开始索引,以便可以通过YouTube GData API检索随机视频结果。我以两种方式可以做到这一点。首先,将结果总数保存到bash变量中,并仅发出2个API请求,其次,通过使用逻辑根据结果集中的视频总数对起始索引进行随机化,从而实际检索“随机”视频/比较函数(貌似)在API查询本身中可用。

我认为可能的另一种方式是使用XData在查询本身中使用数学函数(即:https://developers.google.com/youtube/2.0/developers_guide_protocol_partial#Fields_Formatting_Rules),但是我玩的那一点我无法理解所需语法,因为我不熟悉XData或GData API。

我目前正在尝试第一种方法。 Supress grep output but capture it in a variable是与此非常类似的问题,尽管没有答案实际上对我正在尝试执行的工作有效,并且由于这是使用pcregrep而不是grep进行的,对于更复杂的问题,我认为这样做会更好我问一个新问题。

我正在尝试将pcregrep的输出保存到bash变量中,以便可以通过YouTube GData API在其他查询中使用它。

例:

wget -q "https://gdata.youtube.com/feeds/api/videos?author=vice&fields=openSearch:totalResults" -O - | totalResults=`pcregrep -o1 '>([0-9]+)<' 2>&1` | echo $totalResults

这将返回一个空变量,删除输出重定向(2>&1)以及尝试用$()包围pcregrep也是如此。

我怎样才能得到...的结果
wget -q "https://gdata.youtube.com/feeds/api/videos?author=vice&fields=openSearch:totalResults" -O - | pcregrep -o1 '>([0-9]+)<'

...保存到变量中?

这是我应该做的事情,还是实际搜索条件中可用的比较/逻辑功能允许我通过单个API查询做我想做的事情?如果可能,我希望使用单个API查询。

最佳答案

您需要将整个命令管道放入$()中:

var=$(wget "http://gd...sults" -O - | pcregrep -o1 ">([0-9]+)<")

另外,您也不想在此处重定向STDERR( 2>&1)。那只会弄乱你的结果。

如果不确定命令将写入哪个流,则可以使用 strace标识它:
$ strace wget "http://gd...sults" -O - 2>&1 | grep ^write
...
write(1, "<?xml version='1.0' encoding='UT"..., 123<?xml ve...ec/open) = 123
write(1, "searchrss/1.0/'><openSearch:tota"..., 77searchrss...</feed>) = 77
write()的第一个参数是文件描述符的编号(在本例中为1,即STDOUT)。

关于bash - 从YouTube GData API检索随机视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17385473/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com