Skip to content

Add option for external player

It's fairly straight-forward to emit a blob. Working example code you can paste in https://jsfiddle.net/.

const downloadBlobAsFile = function(contentType, dataFile, fileName){
        var blob = new Blob([dataFile], {type: contentType}),
            e    = document.createEvent('MouseEvents'),
            a    = document.createElement('a')
        a.download = fileName
        a.href = window.URL.createObjectURL(blob)
        a.dataset.downloadurl =  [contentType, a.download, a.href].join(':')
        e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null)
        a.dispatchEvent(e)
}
    
const dataName = "NME"
const dataURL = "http://svr1.msmn.co:8136/"
const dataFile = `
#EXTM3U
#EXTINF:-1,${dataName}
${dataURL}
`
const dataType = "application/vnd.apple.mpegurl"
const fileName = "listen.m3u";

downloadBlobAsFile(dataType, dataFile, fileName);

That's M3U format. PLS would be:

const dataFile = `
[playlist]
numberofentries=1
File1=${dataURL}
Title1=${dataName}
Length1=-1
Version=2
`
const dataType = "audio/x-scpls"
const fileName = "listen.pls";

And for XSPF:

const dataFile = `
<?xml version="1.0" encoding="UTF-8"?><playlist version="1" xmlns="http://xspf.org/ns/0/"><trackList><track>
<title>${dataName}</title><location>${dataURL}</location>
</track></trackList></playlist>
`
const dataType = "application/xspf+xml"
const fileName = "listen.xspf";