This module uses XBMC JSON-RPC Api V6 to provice a rich and simple API to communicate with XMBC instances.
The xbmc
module contains the following classes:
XbmcApi
: API wrapper of available actions, notifications and media handlingTCPConnection
: TCP Client to communicate with XBMC
All classes are created asynchronously.
All classes are sharing an EventEmitter
instance.
XbmcApi.on
and XbmcApi.emit
are wrappers to the shared PubSub. For instance:
In CoffeeScript :
{TCPConnection, XbmcApi} = require 'xbmc'
connection = new TCPConnection
host: '127.0.0.1'
port: 9090
verbose: true
xbmc = new XbmcApi
xbmc.setConnection connection
xbmc.on 'connection:open', -> console.log 'Connection is open'
xbmc.on 'connection:data', (data) -> console.log 'Received data:', data
xbmc.on 'connection:notification', (notification) -> console.log 'Received notification:', notification
In JavaScript :
var Xbmc = require('xbmc');
var connection = new Xbmc.TCPConnection({
host: '127.0.0.1',
port: 9000,
verbose: false
});
var xbmcApi = new Xbmc.XbmcApi;
xbmcApi.setConnection(connection);
xbmcApi.on('connection:data', function() { console.log('onData'); });
xbmcApi.on('connection:open', function() { console.log('onOpen'); });
xbmcApi.on('connection:close', function() { console.log('onClose'); });
TCPConnection uses a deferred (promise) mechanism. Following two examples are both working:
{TCPConnection, XbmcApi} = require 'xbmc'
connection = new TCPConnection
host: '127.0.0.1'
port: 9090
verbose: true
xbmc = new XbmcApi
xbmc.setConnection connection
# run actions after received a 'connection:open' event
xbmc.on 'connection:open', ->
xbmc.message 'Hello World'
connection = new TCPConnection
host: '127.0.0.1'
port: 9090
verbose: true
xbmc = new xbmcApi
xbmc.setConnection connection
# enqueu actions so they are called a soon as connection is opened
xbmc.message 'Hello World'
More actions, new helpers, tests, ...