pear-radio-backend
v1.3.2
Published
Pear radio backend
Downloads
15
Readme
Pear Radio Backend
Backend connectivity for Pear Radio.
API
User
User communication interface.
const user = new User(syncResponseCallback, opts)
await user.ready()
await user.getUserInfo(key)
Gets user/streamer information by key.
const info = await user.getUserInfo(key)
User information is an object:
{
publicKey: buffer,
name: string,
description: string,
tags: c.string
}
await user.syncRequest(key)
Gets user/streamer information about the track that is streaming at the moment.
const info = await user.syncRequest(key)
{
block: uint,
artist: string,
name: string
}
Listener
Receives stream from remote user/streamer.
const listener = new Listener(userPublicKey, swarm, store)
await listener.ready()
await listener.listen(fromBlock)
Returns the stream of the remote user core, starting from block fromBlock
. Each block corresponds to ~1 second of audio.
Streamer
Streams audio data and metadata.
const streamer = new Streamer(keyPair, swarm, store, opts)
await streamer.ready()
await streamer.stream(metadata, stream, opts)
Streams single track.
Mp3ReadStream
Collection of static methods to read mp3 files and ID3 tags.
Mp3ReadStream.stream(path)
Returns { localStream, remoteStream }
. localStream
is a fs.createReadStream
of a given file. remoteStream
streams chunks of the file of ~1 second of audio.
Mp3ReadStream.readTrack(path)
Return metadata and duration information of an mp3 file.
{
file: string // filename
name: string, // track title
artist: string, // track artist
duration: uint, // duration in seconds
path: string // absolute path of the file
}
HttpAudioStreamer
Http server that stream mp3 files for local consumption.
const httpStreamer = new HttpAudioStreamer()
const port = await httpStreamer.ready()
httpStreamer.stream(stream)
const { localStream } = Mp3ReadStream.stream(absPath)
httpStreamer.stream(localStream) // stream mp3 file in localhost:$port
PearRadioConfiguration
Hyperbee that stores pear radio user information.
const configuration = new PearRadioConfiguration()
await configuration.ready()
configuration.get(key)
Returns value of the given key.
configuration.set(key, value)
Sets value for the given key, with format compact-encoding.any
.
TagManager
Hyperswarm based tags search for users connectivity.
const tagManager = new TagManager(user)
await tagManager.ready()
The tagManager will announce itself in the #all
topic, and store all connections in the tagManager.tags
.
tagManager.announce(tag)
Announces tag manager in the given tag topic.
tagManager.searchByTag(tag)
await tagManager.searchByTag(tag)
tagManager.on('stream-found', (userInfo) => {
console.log(userInfo)
})