从 firefox 插件中的本地音频文件解析 id3 数据
Posted
技术标签:
【中文标题】从 firefox 插件中的本地音频文件解析 id3 数据【英文标题】:Parsing id3 data from a local audio file within firefox addon 【发布时间】:2015-01-12 13:36:56 【问题描述】:我正在使用SDK
开发一个Firefox addon
,它使用require("sdk/io/file").list()
列出您计算机上的音频文件。
我使用上述方法构建了一个文件路径数组,并将此数组传递给附加到Panel
的contentScript
。
然后Panel
循环遍历数组并显示找到的所有文件。
现在我正在尝试使用javascript-ID3-Reader,这样我就可以从每个文件中读取ID3
数据并将这些数据显示在每个文件旁边。
我一直在尝试this(读取本地文件),从contentScript
内部,例如..
var f = new File([""], "file:///home/user/audio.mp3");
ID3.loadTags("audio.mp3", function ()
var tags = ID3.getAllTags("audio.mp3");
console.log(tags.comment + " - " + tags.track + ", " + tags.lyrics);
,
dataReader: FileAPIReader(f)
);
但我得到的输出是..
undefined - undefined, undefined
/home/user/audio.mp3
包含以下ID3
数据,与http://web.ist.utl.pt/antonio.afonso/www.aadsm.net/libraries/id3/ 一起找到..
Artist
A Perfect Circle
Title
Annihilation
Album
eMOTIVe
Year
2004
Comment
Genre
Pop/Rock
Track
1/12
Lyrics
这是我正在尝试的另一个测试..
function getID3 (file)
var url = file.name;
console.log(url); // console.log: addon: /home/user/audio.mp3
ID3.loadTags(url, function ()
var tags = ID3.getAllTags(url);
console.log(tags); // console.log: addon:
console.log(tags.artist); // console.log: addon: null
,
dataReader: new FileAPIReader(file)
);
var f = new File([""], "file:///home/rob/audio.mp3", type : "audio/mpeg");
getID3(f);
有人知道这可能有什么问题吗? /home/user/audio.mp3
确实存在于文件系统中。
【问题讨论】:
【参考方案1】:此 JavaScript-ID3-Reader 库旨在在网站上下文中运行,仅适用于通过 http
和 https
afaict 获得的文件。
您可能想找到一个可以在附加组件方面工作的库。
【讨论】:
做contentScripts
附加到Panels
不在网站上下文中运行?由于我在创建Panel
期间附加了库,因此我认为它可以访问本地文件,类似于contentURL
的<audio> src
上的Panel
可以访问本地文件。
contentScript
s 在沙箱中运行,具有与网站本身几乎相同的权限(使用扩展主体)。它与常规的 <script>
导入几乎相同,但由于 xray 包装器的存在,它并不完全相同。一些脚本在这些条件下会中断。如果不会造成任何安全问题,您应该使用不同的脚本或尝试将其注入页面内容本身。【参考方案2】:
您确定您的 audio.mp3 文件定义了这些 ID3 标签吗?尝试使用 console.log(tags) 列出您的 ID3 标签以查看所有标签,并尝试使用桌面媒体播放器打开它以查看信息是否显示。请注意,ID3 有几个不同的版本,因此您也可能使用了错误的版本。
【讨论】:
有一些数据,我运行了 lib 提供的测试,here,用于检查ID3
标签,结果为"Track": "1/12", "Comment":"", "Lyrics": ""
。所以使用console.log(tags)
应该打印一些东西而不是
,对吧?以上是关于从 firefox 插件中的本地音频文件解析 id3 数据的主要内容,如果未能解决你的问题,请参考以下文章