如何通过Powershell获取YouTube视频详细信息(标题,作者,持续时间等)



我有这个脚本:

param(
  [String]$VideoId
)
[String]$gdata_uri = "http://gdata.youtube.com/feeds/api/videos/$VideoId"
$metadata = irm $gdata_uri
$duration = $metadata.entry['media:group']['yt:duration'].seconds
echo $duration

它获得了所需 YouTube 视频的秒数持续时间,但从那时起,API 发生了变化,不再起作用。我得到了一个 API 密钥并将旧的 API 链接与新的 API 链接交换:https://www.googleapis.com/youtube/v3/videos?id=$VideoId&key=<my_api_key>&part=contentDetails但它仍然不起作用,因此其他一些内容已更改。

有人可以帮助调整此脚本以处理新的 API 并从持续时间中获取其他信息吗?

好的,我终于让它工作了。对不起,如果我在我容易回答的问题上浪费了你的时间。

就像将$duration = $metadata.entry['media:group']['yt:duration'].seconds更改为$duration = $metadata.items.contentDetails.duration一样简单,并根据作者等其他信息对其进行调整,您可以通过在浏览器中输入 API URL 来确定要更改的内容。

现在我需要弄清楚如何将ISO8601秒缩短,但我想我现在会传递堆栈溢出......

编辑:在这里,如果你来自谷歌,因为我找不到如何将YouTube持续时间字符串变成秒的直接答案,所以我从碎片中制作了这个:

$VideoId = "dQw4w9WgXcQ"
[String]$gdata_uri = "https://www.googleapis.com/youtube/v3/videos?id=$VideoId&key=<APIKEY>&part=contentDetails"
$metadata = irm $gdata_uri
$duration = $metadata.items.contentDetails.duration;
echo $duration
$ts = [Xml.XmlConvert]::ToTimeSpan("$duration")
'{0:00},{1:00},{2:00}.{3:00}' -f ($ts.Hours+$ts.Days*24), $ts.Minutes, $ts.Seconds, $ts.Milliseconds
$timespan = [TimeSpan]::Parse($ts)
$totalSeconds = $timespan.TotalSeconds
echo $totalSeconds

学分:

  • https://gist.github.com/ShinNoNoir/d59ca5da3cd5c554a832
  • 在Powershell中将ISO8601(我认为(转换为小时:分钟:秒
  • 从格式为"HH:mm:ss,fff"的字符串计算总秒数

祝你好运。

最新更新