@@ -27,6 +27,7 @@ var argv = rc('peerflix', {}, optimist
2727 . alias ( 'q' , 'quiet' ) . describe ( 'q' , 'be quiet' ) . boolean ( 'v' )
2828 . alias ( 'v' , 'vlc' ) . describe ( 'v' , 'autoplay in vlc*' ) . boolean ( 'v' )
2929 . alias ( 's' , 'airplay' ) . describe ( 's' , 'autoplay via AirPlay' ) . boolean ( 'a' )
30+ . alias ( 'u' , 'dlna' ) . describe ( 'u' , 'autoplay via DLNA' ) . boolean ( 'u' )
3031 . alias ( 'm' , 'mplayer' ) . describe ( 'm' , 'autoplay in mplayer*' ) . boolean ( 'm' )
3132 . alias ( 'g' , 'smplayer' ) . describe ( 'g' , 'autoplay in smplayer*' ) . boolean ( 'g' )
3233 . describe ( 'mpchc' , 'autoplay in MPC-HC player*' ) . boolean ( 'boolean' )
@@ -301,6 +302,50 @@ var ontorrent = function (torrent) {
301302 } )
302303 browser . start ( )
303304 }
305+ if ( argv . dlna ) {
306+ var Browser = require ( 'nodecast-js' )
307+ var Client = require ( 'upnp-mediarenderer-client' )
308+ var xmlb = require ( 'xmlbuilder' )
309+
310+ var nodecast = new Browser ( )
311+
312+ // Apparently, the metadata constructed in
313+ // upnp-mediarenderer-client doesn't work
314+ var metadata = xmlb . create ( 'DIDL-Lite' , {
315+ 'headless' : true
316+ } ) . att ( {
317+ 'xmlns' : 'urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/' ,
318+ 'xmlns:dc' : 'http://purl.org/dc/elements/1.1/' ,
319+ 'xmlns:upnp' : 'urn:schemas-upnp-org:metadata-1-0/upnp/' ,
320+ 'xmlns:dlna' : 'urn:schemas-dlna-org:metadata-1-0/' ,
321+ 'xmlns:sec' : 'http://www.sec.co.kr/' ,
322+ 'xmlns:xbmc' : 'urn:schemas-xbmc-org:metadata-1-0/'
323+ } )
324+ . ele ( 'item' , {
325+ 'id' : '0' ,
326+ 'parentID' : '-1' ,
327+ 'restricted' : '1'
328+ } )
329+ . ele ( 'dc:title' , { } , filename )
330+ . insertAfter ( 'res' , { 'protocolInfo' : 'http-get:*:video/mp4:*' } , href )
331+ . insertAfter ( 'upnp:class' , { } , 'object.item.videoItem.movie' )
332+ . end ( { pretty : false } )
333+
334+ nodecast . onDevice ( function ( device ) {
335+ device . onError ( function ( err ) {
336+ throw err
337+ } )
338+
339+ new Client ( device . xml ) . load ( href , {
340+ autoplay : true ,
341+ metadata : metadata
342+ } , function ( err , result ) {
343+ if ( err ) throw err
344+ } )
345+ } )
346+
347+ nodecast . start ( )
348+ }
304349
305350 if ( argv [ 'on-listening' ] ) proc . exec ( argv [ 'on-listening' ] + ' ' + href )
306351
0 commit comments