Анализ данных id3 из локального аудиофайла в аддоне Firefox

Я разрабатываю Firefox addon с помощью SDK, в котором перечислены аудиофайлы на вашем компьютере с помощью require("sdk/io/file").list().
Я создаю массив путей к файлам, используя описанный выше метод, и передаю этот массив в contentScript, прикрепленный к Panel.
Затем 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 существует в файловой системе.


person bobbyrne01    schedule 12.01.2015    source источник


Ответы (2)


Эта библиотека JavaScript-ID3-Reader предназначена для работы в контексте веб-сайта только для файлов, доступных через http и https afaict.

Возможно, вы захотите найти библиотеку, которая будет работать на стороне дополнения.

person erikvold    schedule 24.01.2015
comment
contentScripts, прикрепленный к Panels, не работает в контексте веб-сайта? Поскольку я подключил библиотеку во время создания Panel, я подумал, что у нее будет доступ к локальным файлам, подобно тому, как <audio> src на contentURL из Panel может получить доступ к локальным файлам. - person bobbyrne01; 25.01.2015
comment
contentScript запускаются в песочнице с почти такими же привилегиями (с использованием расширенного принципала), что и сам веб-сайт. Это почти то же самое, что и обычный импорт <script>, но не совсем то же самое из-за оберток xray. Некоторые скрипты ломаются в таких условиях. Вы должны либо использовать другой скрипт, либо попробовать внедрить его в само содержимое страницы, если это не создает никаких проблем с безопасностью. - person the8472; 27.01.2015

Вы уверены, что в файле audio.mp3 определены эти теги ID3? Попробуйте перечислить свои теги ID3, используя console.log(tags), чтобы увидеть их все, а также попробуйте открыть его с помощью настольного медиаплеера, чтобы увидеть, отображается ли информация. Обратите внимание, что существует несколько разных версий ID3, поэтому вы можете использовать и неправильную версию.

person dionyziz    schedule 12.01.2015
comment
Некоторые данные есть, я провел тест, предоставленный lib, здесь для проверки ID3 тегов и результатов {"Track": "1/12", "Comment":"", "Lyrics": ""}. Таким образом, использование console.log(tags) должно напечатать что-то вместо {}, верно? - person bobbyrne01; 12.01.2015