iTranslated by AI
The content below is an AI-generated translation. This is an experimental feature, and may contain errors. View original article
🐡
How to Get Streaming Metadata in Node.js
In this article, I will introduce how to retrieve streaming metadata in Node.js.
We will use node-icy.
TooTallNate/node-icy: Node.js module for parsing and/or injecting ICY metadata
Code
const icy = require('icy')
const iconv = require('iconv-lite')
const sjisToUtf8 = (str) => iconv.decode(str, 'SJIS')
const url = process.env.URL
icy.get(url, (res) => {
// HTTP response headers
// console.log(res.headers)
res.on('metadata', (metadata) => {
const parsed = icy.parse(sjisToUtf8(metadata))
console.log(parsed.StreamTitle) // Title
})
res.on('end', () => {
console.log('end')
})
res.resume() // For retrieving multiple times
})
If there is a character encoding, decode it before calling icy.parse().
Function Version
function subscribe(url, callback, onEnd) {
icy.get(url, (res) => {
res.on('metadata', (metadata) => {
const parsed = icy.parse(sjisToUtf8(metadata))
callback(parsed.StreamTitle)
})
res.on('end', onEnd)
res.resume()
})
}
subscribe(
'http://hoge.mp4',
(title) => console.log('title: ' + title),
() => {
console.log('end')
}
)
Discussion