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')
  }
)
GitHubで編集を提案

Discussion