如何获取 Chrome 选项卡中播放的音频的名称

How to get the name of audio playing in a Chrome tab

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

有什么方法可以通过我们的 Chrome 扩展程序获取正在播放的视频的标题(在本例中是“Chrome and the web in 2020”)?我们希望我们的扩展能够知道用户正在收听的视频或歌曲。谢谢!

根据Video resource, the title of a given YouTube video is to be found as value of the property snippet.title的官方文档。

可以通过 Videos.list 端点从 API 查询此 属性(属于视频资源的任何其他内容)。

例如,在以下 URL 上发出 curl

https://www.googleapis.com/youtube/v3/videos?key=$APP_KEY&id=14pb8t1lHws&part=snippet&fields=items/snippet/title&maxResults=1

将调用将生成 JSON response 仅包含该视频标题的文本的端点:

{
  "items": [
    {
      "snippet": {
        "title": "Chrome and the web in 2020"
      }
    }
  ]
}

对于 Javascript GAPI(即 Google 的 Browser-side 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 请求参数仅从 Videos.list 端点获取视频的标题(最好只从 API 请求实际使用的信息)。

另请注意,$APP_KEYapp_key 分别是(shell 和 Javascript)变量,设置为包含一个有效的 API 键关联到通过 Google's developers console.

创建的项目