Mercurial > eldonilo > mpd
view xmpp.js @ 0:363600705376 default tip
Initial commit.
author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> |
---|---|
date | Tue, 23 Aug 2011 18:43:15 -0700 |
parents | |
children |
line wrap: on
line source
#!/usr/bin/env node var MPD = require('./lib'); var xmpp = require('node-xmpp'); var config = require('./config'); var mpd = new MPD(); var conn = new xmpp.Client(config); var id = 0; var NS = 'http://jabber.org/protocol/tune'; var publish = function() { mpd.send('status', function(s) { mpd.send('currentsong', function(cs) { var tune = new xmpp.Element('tune', {xmlns: NS}); if (cs.file && s.state === 'play') { // Don't publish "rating" and "uri". if (cs.Artist) tune.c('artist').t(cs.Artist); if (cs.Time) tune.c('length').t(cs.Time); if (cs.Album) tune.c('source').t(cs.Album); if (cs.Title) tune.c('title').t(cs.Title); if (cs.Track) tune.c('track').t(cs.Track); } conn.send(new xmpp.Element('iq', {type: 'set', id: 'mpd-'+(++id)}) .c('pubsub', {xmlns: 'http://jabber.org/protocol/pubsub'}) .c('publish', {node: NS}) .c('item') .cnode(tune).up() .up() .up() .up()); mpd.send('idle player', publish); }); }); }; // We suppose that the XMPP connection will be open after the MPD one. conn.on('online', publish); // vim: sts=2 et sw=2