npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

xbmc-listener

v0.1.4

Published

A node.js module to listen for Xbmc events (notifications) and do stuff when they happen.

Downloads

6

Readme

xbmc-listener

A node.js module to listen for Xbmc events (notifications) and do stuff when they happen. The normal Xbmc API methods should also work.

I wrote this so I could trigger home automation events based on what Xbmc is playing: turn on AVR to the Xbmc input when anything is playing, turn on TV to the Xbmc input when video is playing et c.

Installation

npm install xbmc-listener

Usage

Quick Example

var Xbmc = require('xbmc-listener');
var xbmc = new Xbmc({
  host: '192.168.0.123',
  username: 'xbmc',
  password: 'xbmc'
});

xbmc.connect();

xbmc.on('playMusic', function () {
  xbmc.method('visualisation', function () {
    xbmc.notify('switched to visualisation!', 3000, function () {
    });
  });
});

Events

Using the tcp protocol. Must connect() before listening for events.

connect()

Open connection to the Xbmc machine.

No arguments

end()

Close connection to the Xbmc machine

No arguments

Event listening

Start listening for a notification from the Xbmc machine. The xbmc listener inherits from the node.js EventEmitter. For the EventEmitter methods please read its documentation. For available events, scroll to the section "Event types" further down.

Example

xbmc.connect();

xbmc.on('play', function (data) {
  console.log('playing');
});

xbmc.on('playEpisode', function (data) {
  console.log('playing episode');
});

xbmc.on('playMusic', function (data) {
  console.log('playing music');
});

xbmc.on('playVideo', function (data) {
  console.log('video is playing');
});

xbmc.on('Player.OnStop', function (data) {
  console.log('stopped');
});

Methods

The regular Xbmc API methods as well as extra shortcut methods. The http protocol is used, not tcp, no need to connect() and end().

http://wiki.xbmc.org/index.php?title=JSON-RPC_API/v6#Methods

method(method, [params], [callback])

Call one of Xbmc's API methods.

Arguments

  • method - A string with the name of the Xbmc method or an alias/shortcut method in aliases.js.
  • params - Optional params array or object for the method, some Xbmc methods require it.
  • callback(error, result) - optional callback function.

Example


// mute xbmc
xbmc.method('Input.ExecuteAction', ['mute'], function (error, result) {
  if (error) {
    return console.log(error);
  }
  console.log(result);
});

// mute using its shortcut
xbmc.method('mute', function (error, result) {
  if (error) {
    return console.log(error);
  }
  console.log(result);
});

notify(opts, [timeout], [callback])

Send a notification to the Xbmc machine.

Arguments

  • opts - a string with the message or object with options: { message, title, image, timeout }
  • timeout - optional timeout number in ms
  • callback(error, result) - optional callback function

Example

xbmc.notify('Hello', 1500, function (error, result) {
  if (error) {
    return onsole.log(error);
  }
  console.log(result);
});

Event types

Events from standard Xbmc Notifications

The notifications provided by the Xbmc API should all work. The callback result is the parsed JSON response from Xbmc.

http://wiki.xbmc.org/index.php?title=JSON-RPC_API/v6#Notifications_2

Special events

Some extra events has been added. This list might not be complete, please refer to the source code for all events available.

These special events are attempts to get more fine tuned notifications, they may not always be correct, please submit any issues you might find.

The callback result is a sub object from Xbmcs JSON response with details of the item.

'play', 'pause', 'stop', 'seek', 'scan', 'sleep', 'exit', 'quit', 'wake'

Just aliases for the standard events: play => Player.OnPlay et c.

'play*', 'pause*', 'stop*'

*= Video, Audio, Music, Movie, Episode, Song, Channel, Tv E.g., 'playEpisode' is the event when an episode starts playing.

Shortcut methods

Please review aliases.js for a complete list of shortcut methods.

Change log

0.1.4
  • type seems to be 'movies' instead of 'movie' now, fixed
0.1.3
  • small fixes
0.1.1
  • fix for some method aliases
0.1.0
  • npm release