使用 chrome.mediaGalleries API 获取用户画廊的名称

Using chrome.mediaGalleries API to get the names of the user's galleries

我正在尝试使用 chrome.getMediaGalleries API 列出用户设备上的媒体库。它一直工作到 item.name 部分。

我从 Google 开发者 youtube 频道观看了 video,他们在其中使用了 JSON.parse。但是,这会抛出一个 Uncaught SyntaxError: Unexpected token c in JSON at position 0 正如预期的那样。这不是 JSON.

所以我的问题是:如何检索人类可读的内容(视频、音乐等)。到目前为止,这是我的代码:

getGalleriesInfo(/*Array of DOMFileSystem objects*/ results) {

    if (!results.length)
        return console.log('No galleries found');

    console.log('Gallery count: ' + results.length);

    results.forEach((item, index) => {
        let gallery = item.name;// JSON.parse(item.name) doesn't work
        console.log(index, ' => ', gallery); // 0 => chrome-extension_hmnfbbnkjlgjgmlgpacnkkndfidbejpo_0:External_media_galleries-Default-hmnfbbnkjlgjgmlgpacnkkndfidbejpo-1, etc.
    });
}

// I'm using a custom element (document.registerElement)
createdCallback() {
    chrome.mediaGalleries.getMediaFileSystems({
        interactive: 'if_needed'
    }, this.getGalleriesInfo);
}

谢谢,
贾斯汀

编辑:Chrome item 的调试器视图
(来源:jtprogramming.com

chrome.getMediaGalleries API 似乎已更改。要查找任何给定画廊的名称,您必须使用 getMediaFileSystemMetadata 方法。

_getGalleriesInfo(results) {

    if (!results.length)
        return console.log('No galleries found');

    console.log('Gallery count: ' + results.length);

    results.forEach((item, index) => {
        console.log(chrome.mediaGalleries.getMediaFileSystemMetadata(item));
    });
}

其中 returns 一个包含 DOMFileSystem 元数据的对象。

Object {
    galleryId: (string) int,
    isAvailable: boolean, 
    isMediaDevice: boolean,
    isRemovable: boolean, 
    name: "C:\example\path\to\gallery"
}