2

我正在嘗試使用chrome.getMediaGalleries API列出用戶設備上的媒體畫廊。它的工作原理直到item.name部分。使用chrome.mediaGalleries API獲取用戶畫廊的名稱

我觀看了Google Developers 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 Chrome debugger view http://jtprogramming.com/screen.png

+0

當你在函數內設置斷點時,你在調試器中看到了多少'item'值?問題是,視頻中的代碼沒有意義,因爲DOMFileSystem API不是基於JSON的。 – wOxxOm

+0

@wOxxOm我迷路了。你是說沒有辦法實現我的目標?在Chrome文檔中,它講述瞭如何訪問iTunes圖庫,視頻等。我如何區分它們? –

+0

@wOxxOm我沒有看到任何我不知道的東西,但我不太熟悉chrome的調試器,所以也許我錯過了一些東西。我在源代碼面板的問題中包含了一個圖片,其中包含'item'上的斷點# –

回答

2

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)); 
    }); 
} 

它返回一個對象與DOMFileSystem的元數據。

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