0.2.1 • Published 8 years ago

watchair-manager v0.2.1

Weekly downloads
2
License
MIT
Repository
github
Last release
8 years ago

WatchAirSession

This is an unofficial package that allows you to connect to the WatchAir smart antenna https://www.watchairtv.com/

Currently this package can:

  • Connect to a WatchAir device
  • Get what is currently being streamed
  • Get the full channel list
  • Change the channel and get the URL for the new channel. Once you have the URL, any video player that is HLS capable can play it.

Hopefully, I will add:

  • Automatic discovery of WatchAir device*
  • Simple recording (start / stop recording)
  • Determine if changing the channel will interfere with a recording
  • Get guide information (might not be possible, we'll see)

* I have this working in test code using mDNS, but I'm hoping to find an mDNS package that doesn't need an external library like Bonjour or Avahi.

Probably won't add, but a list of lists isn't complete without a third:

  • Full recording and scheduling support
  • Holographic projection of streaming content

This library uses Promises for nearly everything because there is a lot of sequencing involved (e.g. get session ID, use session ID to request current channel, change to current channel, etc). The WatchAirSession is also an EventEmitter, check instance.eventNames to see what events are emitted. Also, several of the functions are memoized. A Promise is returned regardless, it just immediately resolves to the result.

Install

npm install --save watchair-manager
# or
yarn add watchair-manager

Example

var watchAirManager = require('watchair-manager');

// The clientID is not required, but there might be advantages having a persistent clientID.
// The clientID is simply a V4 UUID in all uppercase.

var clientID = '72A2EFA5-0B27-4F97-93F9-827AECDC2E8A';
var ip = '192.168.1.88';

var session = new watchAirManager.WatchAirSession(ip, clientID);

session.init().then(status => {
	console.log(status); // 'initialized'
    return session.getChannels();
}).then(channels => {
	console.log(channels); // 'big list of channels'
    // pick a random uniqueID
    var ks = Object.keys(channels);
    var rand = ks[Math.floor(Math.random() * ks.length)];
    var uid = channels[rand].UniqueId;
    console.log(uid); // some random number (for example, 7)
    return session.changeChannel(uid);
}).then(url => {
	console.log(url);
	// feed the URL to an HLS capable video player
});

There are other examples in the examples folder.

0.2.1

8 years ago

0.1.6

8 years ago

0.1.4

8 years ago

0.1.3

8 years ago