mp3ファイルをアップロードした際にID3v1のデータを表示するプログラムを製作しました。
ID3v1はデータ最後の128bitなので、それを切り分けて読み込みしています。

ID3v2版も作ろうと思いましたが、v1とv2が混在していたり、データも可変長で何かと面倒なので次回にでもやろうと思います。

html
<!DOCTYPE html>
<html>

<body>
    <form method="post" enctype="multipart/form-data">
        <input type="file" id="file" accept="audio/mp3">
    </form>
    <p id='trackInfo'>ファイル情報</p>
    <script>

    </script>
</body>

</html>
javascript
window.onload = function() {
    const reader = new FileReader();
    file.addEventListener('change', function(e) {
        reader.readAsArrayBuffer(e.target.files[0]);
        trackInfo.innerHTML = "";
    });
    reader.onload = function(e) {
        var id3v1 = (new Uint8Array(e.target.result)).slice(-128);
        var judge = id3v1[0] + id3v1[1] + id3v1[2];
        if (judge == 220) {
            for (var i = 3; i < 93; i++) {
                if (i == 33 || i == 63) trackInfo.innerHTML += '<br>';
                trackInfo.innerHTML += String.fromCharCode(id3v1[i]);
            }
        }
    }
};
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.