{"_id":"icecast-stack","_rev":"18-21e1747cc16ff10335d01500712139a3","name":"icecast-stack","description":"A `StreamStack` implementation for parsing and/or injecting metadata with SHOUTcast/Icecast radio streams.","dist-tags":{"latest":"0.3.0"},"versions":{"0.1.0":{"name":"icecast-stack","description":"A `StreamStack` implementation for parsing and/or injecting metadata with SHOUTcast/Icecast radio streams.","version":"0.1.0","author":{"name":"Nathan Rajlich","email":"nathan@tootallnate.net"},"keywords":["SHOUTcast","Icecast","Radio","Internet","Metadata","ReadStream","StreamStack"],"main":"./lib/icecast-stack","engines":{"node":">= 0.3.0"},"_id":"icecast-stack@0.1.0","_nodeSupported":true,"_npmVersion":"0.2.8","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"https://registry.npmjs.org/icecast-stack/-/icecast-stack-0.1.0.tgz","shasum":"a6142fbc1614d218920bc56c6bf0707206223241","integrity":"sha512-8PtKWdYbfhRKVU0LbWjMHM1VhqM2H8PQ8O2zBEu2kmD96K+5FDE8IQAABag4DPjcKYBTC0AhCh0D0KSOMOUdqw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBy3qedK73lUSnNmlPL3MLTwtEhck9f288vdhcVrCkwmAiEA+zgo+9neD8B9fBcs97cAHUWmOvcWjkQz5TgPVGL39f4="}]}},"0.2.0":{"name":"icecast-stack","description":"A `StreamStack` implementation for parsing and/or injecting metadata with SHOUTcast/Icecast radio streams.","version":"0.2.0","author":{"name":"Nathan Rajlich","email":"nathan@tootallnate.net"},"keywords":["SHOUTcast","Icecast","Radio","Internet","Metadata","ReadStream","StreamStack"],"dependencies":{"stream-stack":"*","http-stack":"*"},"devDependencies":{"colors":">= 0.3.0"},"main":"./lib/icecast-stack","modules":{"client":"./lib/client"},"engines":{"node":">= 0.3.0"},"_id":"icecast-stack@0.2.0","_nodeSupported":true,"_npmVersion":"0.2.8-1","_nodeVersion":"v0.3.2-pre","dist":{"tarball":"https://registry.npmjs.org/icecast-stack/-/icecast-stack-0.2.0.tgz","shasum":"0a2e54e2213a67f0fcac62b8c0e29c29b0d904d9","integrity":"sha512-ImHCOKMKJQtMU1U8IwJ77KNeIR+oeCFJYEZfWSphSRsh91HKka/7T8jiU0nKzMIm/GZGbz3kuSP3+OJbrSW0EQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCnfGEKXgqNPlm6HBWaWc+gd7nGAviJ/jwjvyiy/XKHbQIgVvzZLBvWglySBXQMkjB+ZDi7KQ8a7s506s4Mq8NIx1Q="}]}},"0.2.1":{"name":"icecast-stack","description":"A `StreamStack` implementation for parsing and/or injecting metadata with SHOUTcast/Icecast radio streams.","version":"0.2.1","author":{"name":"Nathan Rajlich","email":"nathan@tootallnate.net"},"keywords":["SHOUTcast","Icecast","Radio","Internet","Metadata","ReadStream","StreamStack"],"dependencies":{"stream-stack":">= 1.0.0","http-stack":"*"},"devDependencies":{"colors":">= 0.3.0"},"main":"./lib/icecast-stack","modules":{"client":"./lib/client"},"engines":{"node":">= 0.3.0"},"_id":"icecast-stack@0.2.1","_nodeSupported":true,"_npmVersion":"0.2.10-1","_nodeVersion":"v0.3.2-pre","dist":{"shasum":"f0394f0dd54b7406ea439daface709fe3879d29b","tarball":"https://registry.npmjs.org/icecast-stack/-/icecast-stack-0.2.1.tgz","integrity":"sha512-sWLeyhQkx8HH0Z7+aFePQtuIyvQFxEXmm2dpwu5QoSQDenNvPWLZ+wqVPU+YztchXcbXjUoSI5iBKnBg2TZtwQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDHIGlHOBzjrFme6H2Ck5Z6VDZy61faYBNwjAq7E4ym7wIgDk7jt+sKIdNMLUSdtKHSsLTWi0I8l/AmwDffQM8yv5c="}]}},"0.2.2":{"name":"icecast-stack","description":"A `StreamStack` implementation for parsing and/or injecting metadata with SHOUTcast/Icecast radio streams.","version":"0.2.2","author":{"name":"Nathan Rajlich","email":"nathan@tootallnate.net"},"keywords":["SHOUTcast","Icecast","Radio","Internet","Metadata","ReadStream","StreamStack"],"dependencies":{"stream-stack":">= 1.1.0","http-stack":">= 0.1.1"},"devDependencies":{"colors":">= 0.3.0","expresso":"0.8.x"},"main":"./icecast-stack.js","scripts":{"test":"expresso test/test*.js"},"engines":{"node":">= 0.3.0"},"_npmJsonOpts":{"file":"/Users/nrajlich/.npm/icecast-stack/0.2.2/package/package.json","contributors":false,"wscript":false,"serverjs":false},"_id":"icecast-stack@0.2.2","_engineSupported":true,"_npmVersion":"1.0.18","_nodeVersion":"v0.4.9","_defaultsLoaded":true,"dist":{"shasum":"7b27666e4e872b25b99a1c13f36459591e705507","tarball":"https://registry.npmjs.org/icecast-stack/-/icecast-stack-0.2.2.tgz","integrity":"sha512-mf7DMV1TosX9GaSUVthPYQxrjC1i8+X4D8QM8flTBGMwtCzlmgvCxFtB/0TmoVo9Og63dRBIHf2tuZE7VGpkcQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDjplJ0n0VSdFj8Ngqk42uyARBfdoqbSnkhgdGxhBZjzQIhAO5Byqh/wCP/OgS63+PNgSiGEsSrCRe/fy++zEcuFVuU"}]},"maintainers":[{"name":"TooTallNate","email":"nathan@tootallnate.net"}]},"0.2.3":{"name":"icecast-stack","description":"A `StreamStack` implementation for parsing and/or injecting metadata with SHOUTcast/Icecast radio streams.","version":"0.2.3","author":{"name":"Nathan Rajlich","email":"nathan@tootallnate.net"},"repository":{"type":"git","url":"git://github.com/TooTallNate/node-icecast-stack.git"},"keywords":["SHOUTcast","Icecast","Radio","Internet","Metadata","ReadStream","StreamStack"],"dependencies":{"stream-stack":">= 1.1.0","http-stack":">= 0.1.1"},"devDependencies":{"colors":">= 0.3.0","expresso":"0.8.x"},"main":"./icecast-stack.js","scripts":{"test":"expresso test/test*.js"},"engines":{"node":">= 0.3.0"},"_npmUser":{"name":"TooTallNate","email":"nathan@tootallnate.net"},"_id":"icecast-stack@0.2.3","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"55c2bd51e32b9729125c758619b6f3bb2a51df35","tarball":"https://registry.npmjs.org/icecast-stack/-/icecast-stack-0.2.3.tgz","integrity":"sha512-lgHNUU2Ui6FCVXum6jUV1FvWLc43XaUASKuwfgpZLm+jJsiYnxUGaOcHAIFE7vPoISEtzzzw2U+rPnoPtlHMzg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGALVeaIlo3zW4n56+wY7TSSYVEwNsEvIXQ1P3I1W1aEAiEAoMUHNCDbaRbXywkaCQAm3J9L6mYNfD4RQ++igxUhP7A="}]},"maintainers":[{"name":"TooTallNate","email":"nathan@tootallnate.net"}]},"0.3.0":{"name":"icecast-stack","description":"A `StreamStack` implementation for parsing and/or injecting metadata with SHOUTcast/Icecast radio streams.","version":"0.3.0","author":{"name":"Nathan Rajlich","email":"nathan@tootallnate.net"},"repository":{"type":"git","url":"git://github.com/TooTallNate/node-icecast-stack.git"},"keywords":["SHOUTcast","Icecast","Radio","Internet","Metadata","ReadStream","StreamStack"],"dependencies":{"stream-stack":">= 1.1.0","http-stack":">= 0.1.1"},"devDependencies":{"colors":">= 0.3.0","expresso":"0.8.x"},"main":"./icecast-stack.js","scripts":{"test":"expresso test/test*.js"},"engines":{"node":">= 0.3.0"},"_npmUser":{"name":"tootallnate","email":"nathan@tootallnate.net"},"_id":"icecast-stack@0.3.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.18","_nodeVersion":"v0.6.16","_defaultsLoaded":true,"dist":{"shasum":"188f76a9c550ef4efd7b8475867eab9085ca3c09","tarball":"https://registry.npmjs.org/icecast-stack/-/icecast-stack-0.3.0.tgz","integrity":"sha512-tcmFY6bY87I22HKxCRDZ7IphYMZmtLRnTrWCGx07JVgPzL9mSokVAzIFCwLz+SpH4Xi7WwtQKyEM0OBTvga6WQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDmEWh+hl0BiQG/jUe4awro0fR3F3RJap79F06YbhSCuAIhAIYb+q5ub0cxZdvF8v32xvxmKnGuuk+rSjjoZ9gsTBrz"}]},"maintainers":[{"name":"TooTallNate","email":"nathan@tootallnate.net"},{"name":"tootallnate","email":"nathan@tootallnate.net"}]}},"maintainers":[{"email":"nathan@tootallnate.net","name":"tootallnate"}],"author":{"name":"Nathan Rajlich","email":"nathan@tootallnate.net"},"time":{"modified":"2022-06-18T23:59:23.559Z","created":"2011-08-03T06:15:53.033Z","0.1.0":"2011-08-03T06:15:53.033Z","0.2.0":"2011-08-03T06:15:53.033Z","0.2.1":"2011-08-03T06:15:53.033Z","0.2.2":"2011-08-03T06:15:53.033Z","0.2.3":"2012-02-13T20:03:46.492Z","0.3.0":"2012-05-04T00:06:02.537Z"},"repository":{"type":"git","url":"git://github.com/TooTallNate/node-icecast-stack.git"},"keywords":["SHOUTcast","Icecast","Radio","Internet","Metadata","ReadStream","StreamStack"],"readme":"node-icecast-stack\n==================\n### A [StreamStack][] implementation for parsing and/or injecting metadata with SHOUTcast/Icecast radio streams.\n\nThis module offers an interface for retrieving the raw audio data and\nparsing the metadata from a [SHOUTcast][] or [Icecast][] broadcast. Two API's\nare offered: a low-level [StreamStack][] read and write interface (which\nrequires you to establish the connection to the `net.Stream` yourself), and a\nmore convenient high-level\n[ReadStream](http://nodejs.org/docs/latest/api/streams.html) interface (which\ncreates a `net.Stream` connection, and uses the `StreamStack` interfaces\ntransparently).\n\n\nUsage\n-----\n\nHere's a basic example of just piping the clean audio data to _stdout_,\nwhile printing the HTTP response headers and metadata events to _stderr_:\n\n``` javascript\nvar icecast = require('icecast-stack');\n\nvar url = 'http://67.205.85.183:5500'; // URL to a known Icecast stream\nvar stream = icecast.createReadStream(url);\n\n// Fired when the `net.Stream` has it's 'connect' event.\nstream.on('connect', function() {\n  console.error(\"Radio Stream connected!\");\n});\n    \n// Fired after the HTTP response headers have been received.\nstream.on('response', function(res) {\n  console.error(\"Radio Stream response!\");\n  console.error(res.headers);\n});\n\n// When a 'metadata' event happens, usually a new song is starting.\nstream.on('metadata', function(metadata) {\n  var title = icecast.parseMetadata(metadata).StreamTitle;\n  console.error(title);\n});\n\n// Proxy the raw audio stream to 'stdout', redirect to a file!\nstream.pipe(process.stdout);\n```\n\nLook in the `examples` directory for code of some more complex use-cases.\n\nThe most important use case of this is for HTML5 web apps that listen to\nradio streams; the `<audio>` tag doesn't know how to deal with the extra\nmetadata and it is impossible to extract (on the client-side). But a\nWebSocket connection could be used in conjunction with this module to provide\nthose `metadata` events to a web browser, for instance.\n\n\nInstallation\n------------\n\nInstallation through [__npm__](http://github.com/isaacs/npm) is the most\nstraight-forward way to install the `node-icecast-stack` module:\n\n``` bash\n$ npm install icecast-stack\n```\n\nOr just checking out this _git_ repo works as well:\n\n``` bash\n$ git clone git://github.com/TooTallNate/node-icecast-stack.git\n```\n\n\n[NodeJS]: http://nodejs.org\n[StreamStack]: http://github.com/TooTallNate/node-stream-stack\n[SHOUTcast]: http://www.shoutcast.com\n[Icecast]: http://icecast.org\n","readmeFilename":""}