@@ -12,7 +12,7 @@ const parseString = require('xml2js').parseString
1212 * Helper class
1313 * @class Helpers
1414 */
15- var Helpers = { }
15+ const Helpers = { }
1616
1717/**
1818 * Wrap in UPnP Envelope
@@ -87,15 +87,15 @@ Helpers.GenerateCustomMetadata = function (streamUrl, itemId, duration = '00:00:
8787 * @return {Object } { uri: uri, metadata: metadata }
8888 */
8989Helpers . GenerateLocalMetadata = function ( uri , artUri = '' ) {
90- var title = ''
91- var match = / .* \/ ( .* ) $ / g. exec ( uri . replace ( / \. [ a - z A - Z 0 - 9 ] { 3 } $ / , '' ) )
90+ let title = ''
91+ const match = / .* \/ ( .* ) $ / g. exec ( uri . replace ( / \. [ a - z A - Z 0 - 9 ] { 3 } $ / , '' ) )
9292 if ( match ) {
9393 title = match [ 1 ]
9494 }
95- var meta = '<DIDL-Lite xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:r="urn:schemas-rinconnetworks-com:metadata-1-0/" xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/"><item id="##ITEMID##" parentID="##PARENTID##" restricted="true"><dc:title>##RESOURCETITLE##</dc:title><upnp:class>##UPNPCLASS##</upnp:class><upnp:albumArtURI>##ARTURI##</upnp:albumArtURI><desc id="cdudn" nameSpace="urn:schemas-rinconnetworks-com:metadata-1-0/">##REGION##</desc></item></DIDL-Lite>'
95+ const meta = '<DIDL-Lite xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:r="urn:schemas-rinconnetworks-com:metadata-1-0/" xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/"><item id="##ITEMID##" parentID="##PARENTID##" restricted="true"><dc:title>##RESOURCETITLE##</dc:title><upnp:class>##UPNPCLASS##</upnp:class><upnp:albumArtURI>##ARTURI##</upnp:albumArtURI><desc id="cdudn" nameSpace="urn:schemas-rinconnetworks-com:metadata-1-0/">##REGION##</desc></item></DIDL-Lite>'
9696 if ( uri . startsWith ( 'x-file-cifs' ) ) {
9797 return {
98- uri : uri ,
98+ uri,
9999 metadata : meta . replace ( '##ITEMID##' , uri . replace ( 'x-file-cifs' , 'S' ) . replace ( / \s / g, '%20' ) )
100100 . replace ( '##RESOURCETITLE##' , title . replace ( '%20' , ' ' ) )
101101 . replace ( '##UPNPCLASS##' , Helpers . GetUpnpClass ( 'A:TRACKS' ) )
@@ -105,11 +105,11 @@ Helpers.GenerateLocalMetadata = function (uri, artUri = '') {
105105 }
106106 }
107107 if ( uri . startsWith ( 'x-rincon-playlist' ) ) {
108- var parentMatch = / .* # ( .* ) \/ .* / g. exec ( uri )
109- var parentID = parentMatch [ 1 ]
108+ const parentMatch = / .* # ( .* ) \/ .* / g. exec ( uri )
109+ const parentID = parentMatch [ 1 ]
110110
111111 return {
112- uri : uri ,
112+ uri,
113113 metadata : meta . replace ( '##ITEMID##' , `${ parentID } /${ title . replace ( / \s / g, '%20' ) } ` )
114114 . replace ( '##RESOURCETITLE##' , title . replace ( '%20' , ' ' ) )
115115 . replace ( '##UPNPCLASS##' , Helpers . GetUpnpClass ( parentID ) )
@@ -118,7 +118,7 @@ Helpers.GenerateLocalMetadata = function (uri, artUri = '') {
118118 . replace ( '##REGION##' , 'RINCON_AssociatedZPUDN' )
119119 }
120120 }
121- return { uri : uri , metadata : '' }
121+ return { uri, metadata : '' }
122122}
123123
124124/**
@@ -129,15 +129,15 @@ Helpers.GenerateLocalMetadata = function (uri, artUri = '') {
129129 * @return {Object } options {uri: Spotify uri, metadata: metadata}
130130 */
131131Helpers . GenerateMetadata = function ( uri , title = '' , region = '3079' ) {
132- var parts = uri . split ( ':' )
132+ const parts = uri . split ( ':' )
133133 if ( ! ( ( parts . length === 2 && ( parts [ 0 ] === 'radio' || parts [ 0 ] === 'x-sonosapi-stream' || parts [ 0 ] === 'x-rincon-cpcontainer' ) ) || ( parts . length >= 3 && parts [ 0 ] === 'spotify' ) ) ) {
134134 debug ( 'Returning string because it isn\'t recognized' )
135135 return Helpers . GenerateLocalMetadata ( uri )
136136 }
137- var meta = '<DIDL-Lite xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:r="urn:schemas-rinconnetworks-com:metadata-1-0/" xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/"><item id="##SPOTIFYURI##" ##PARENTID##restricted="true"><dc:title>##RESOURCETITLE##</dc:title><upnp:class>##SPOTIFYTYPE##</upnp:class><desc id="cdudn" nameSpace="urn:schemas-rinconnetworks-com:metadata-1-0/">##REGION##</desc></item></DIDL-Lite>'
137+ let meta = '<DIDL-Lite xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:r="urn:schemas-rinconnetworks-com:metadata-1-0/" xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/"><item id="##SPOTIFYURI##" ##PARENTID##restricted="true"><dc:title>##RESOURCETITLE##</dc:title><upnp:class>##SPOTIFYTYPE##</upnp:class><desc id="cdudn" nameSpace="urn:schemas-rinconnetworks-com:metadata-1-0/">##REGION##</desc></item></DIDL-Lite>'
138138
139139 if ( parts [ 0 ] === 'radio' || parts [ 0 ] === 'x-sonosapi-stream' ) {
140- var radioTitle = title || 'TuneIn Radio'
140+ const radioTitle = title || 'TuneIn Radio'
141141 if ( parts [ 0 ] === 'radio' ) {
142142 return {
143143 uri : 'x-sonosapi-stream:' + parts [ 1 ] + '?sid=254&flags=8224&sn=0' ,
@@ -150,7 +150,7 @@ Helpers.GenerateMetadata = function (uri, title = '', region = '3079') {
150150 } else {
151151 const itemId = parts [ 1 ] . split ( '?' ) [ 0 ]
152152 return {
153- uri : uri ,
153+ uri,
154154 metadata : meta . replace ( '##SPOTIFYURI##' , 'F00092020' + itemId )
155155 . replace ( '##RESOURCETITLE##' , radioTitle )
156156 . replace ( '##SPOTIFYTYPE##' , 'object.item.audioItem.audioBroadcast' )
@@ -161,7 +161,7 @@ Helpers.GenerateMetadata = function (uri, title = '', region = '3079') {
161161 } else {
162162 meta = meta . replace ( '##REGION##' , 'SA_RINCON' + region + '_X_#Svc' + region + '-0-Token' )
163163 }
164- var spotifyUri = uri . replace ( / : / g, '%3a' )
164+ const spotifyUri = uri . replace ( / : / g, '%3a' )
165165
166166 if ( uri . startsWith ( 'spotify:track:' ) ) { // Just one track
167167 return {
@@ -204,8 +204,8 @@ Helpers.GenerateMetadata = function (uri, title = '', region = '3079') {
204204 . replace ( '##PARENTID##' , 'parentID="10082664playlists" ' )
205205 }
206206 } else if ( uri . startsWith ( 'spotify:artistRadio:' ) ) { // Artist radio
207- var spotifyTitle = title || 'Artist Radio'
208- var parentId = spotifyUri . replace ( 'artistRadio' , 'artist' )
207+ const spotifyTitle = title || 'Artist Radio'
208+ const parentId = spotifyUri . replace ( 'artistRadio' , 'artist' )
209209 return {
210210 uri : 'x-sonosapi-radio:' + spotifyUri + '?sid=12&flags=8300&sn=5' ,
211211 metadata : meta . replace ( '##SPOTIFYURI##' , '100c206c' + spotifyUri )
@@ -226,7 +226,7 @@ Helpers.GenerateMetadata = function (uri, title = '', region = '3079') {
226226 } else if ( uri . startsWith ( 'x-rincon-cpcontainer:100d206cuser-fav' ) ) { // Sound Cloud likes
227227 const id = uri . replace ( 'x-rincon-cpcontainer:' , '' )
228228 return {
229- uri : uri ,
229+ uri,
230230 metadata : meta . replace ( '##SPOTIFYURI##' , id )
231231 . replace ( '##RESOURCETITLE##' , title || 'Sound Cloud Likes' )
232232 . replace ( '##SPOTIFYTYPE##' , 'object.container.albumList' )
@@ -236,15 +236,15 @@ Helpers.GenerateMetadata = function (uri, title = '', region = '3079') {
236236 } else if ( uri . startsWith ( 'x-rincon-cpcontainer:1006206cplaylist' ) ) { // Sound Cloud playlists
237237 const [ id ] = uri . replace ( 'x-rincon-cpcontainer:' , '' ) . split ( '?' )
238238 return {
239- uri : uri ,
239+ uri,
240240 metadata : meta . replace ( '##SPOTIFYURI##' , id )
241241 . replace ( '##RESOURCETITLE##' , title || 'Sound Cloud Playlist' )
242242 . replace ( '##SPOTIFYTYPE##' , 'object.container.playlistContainer' )
243243 . replace ( '##PARENTID##' , '' )
244244 . replace ( `SA_RINCON${ region } _X_#Svc${ region } -0-Token` , 'SA_RINCON40967_X_#Svc40967-0-Token' )
245245 }
246246 } else {
247- return { uri : uri , metadata : '' }
247+ return { uri, metadata : '' }
248248 }
249249}
250250
0 commit comments