我们正在开发一个 Chrome 扩展程序,并试图弄清楚如何获取当前在 Chrome 中播放的音频的名称。我们知道,在 Chrome 中播放音频时,会有一个图标显示正在播放的音频的名称。下面的截图展示了一个例子,其中播放了一个名为“Chrome and the web in 2020”的视频。

有什么方法可以通过我们的 Chrome 扩展程序获得正在播放的视频的标题(本例中为“Chrome 和 2020 年的网络”)?我们希望我们的扩展能够知道用户正在听什么视频或歌曲。谢谢!
根据Video 资源的官方文档,给定 YouTube 视频的标题将作为属性值找到snippet.title。
Videos.list可以通过其端点从 API 查询此属性(属于视频资源的任何其他属性) 。
例如,curl在以下 URL 上发出:
https://www.googleapis.com/youtube/v3/videos?key=$APP_KEY&id=14pb8t1lHws&part=snippet&fields=items/snippet/title&maxResults=1
将调用将生成仅包含该视频标题的JSON 响应文本的端点:
{
"items": [
{
"snippet": {
"title": "Chrome and the web in 2020"
}
}
]
}
对于 Javascript GAPI(即 Google 的浏览器端 JavaScript 客户端库)实现,代码如下所示:
var app_key = ...;
var videoTitle;
function loadAPIClientInterfaces() {
gapi.client.load('youtube', 'v3', function() {
getVideoTitle('14pb8t1lHws');
});
}
function getVideoTitle(videoId) {
var request = gapi.client.youtube.videos.list({
id: videoId,
part: 'snippet',
fields: 'items/snippet/title',
key: app_key
});
request.execute(function(response) {
if ('error' in response) {
displayMessage(response.error.message);
} else {
videoTitle = response.items[0].snippet.title;
}
});
}
请注意,上面的代码使用fields请求参数 for 从Videos.list端点仅获取视频的标题(最好从 API 仅询问实际使用的信息)。
另请注意,$APP_KEYandapp_key是(shell 和,分别是 Javascript)变量设置为包含与通过Google 开发人员控制台创建的项目相关联的有效 API 密钥。