{"id":13403637,"url":"https://github.com/bencevans/node-sonos","last_synced_at":"2025-05-14T07:08:15.133Z","repository":{"id":5988557,"uuid":"7210931","full_name":"bencevans/node-sonos","owner":"bencevans","description":"🔈 Sonos Media Player Interface/Client","archived":false,"fork":false,"pushed_at":"2025-03-08T18:30:54.000Z","size":2480,"stargazers_count":712,"open_issues_count":20,"forks_count":149,"subscribers_count":30,"default_branch":"master","last_synced_at":"2025-05-11T11:16:52.509Z","etag":null,"topics":["home-automation","javascript","music","nodejs","sonos"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/sonos","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bencevans.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"bencevans","custom":"https://buymeacoffee.com/bencevans"}},"created_at":"2012-12-17T19:38:58.000Z","updated_at":"2025-05-07T05:50:48.000Z","dependencies_parsed_at":"2023-11-14T00:26:54.508Z","dependency_job_id":"d0fe40a3-c177-476a-a696-a958cd982c92","html_url":"https://github.com/bencevans/node-sonos","commit_stats":{"total_commits":617,"total_committers":73,"mean_commits":8.452054794520548,"dds":0.7941653160453809,"last_synced_commit":"2608f7abc83d48cecd2530e1b02b4c9b08e82005"},"previous_names":[],"tags_count":81,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bencevans%2Fnode-sonos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bencevans%2Fnode-sonos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bencevans%2Fnode-sonos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bencevans%2Fnode-sonos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bencevans","download_url":"https://codeload.github.com/bencevans/node-sonos/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254092656,"owners_count":22013290,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["home-automation","javascript","music","nodejs","sonos"],"created_at":"2024-07-30T19:01:32.690Z","updated_at":"2025-05-14T07:08:15.112Z","avatar_url":"https://github.com/bencevans.png","language":"JavaScript","readme":"\u003ch1 align=\"center\"\u003e\n  \u003cbr\u003e\n  \u003ca href=\"https://github.com/bencevans/node-sonos\"\u003e\u003cimg src=\"https://cdn.rawgit.com/bencevans/node-sonos/0f2775ab/logo.svg\" alt=\"node-sonos logo\" width=\"200\"\u003e\u003c/a\u003e\n  \u003cbr\u003e\n  \u003cbr/\u003e\n  node-sonos\n  \u003cbr\u003e\n  \u003cbr\u003e\n\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cb\u003eControl your Sonos devices with JavaScript (node.js)\u003c/b\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/bencevans/node-sonos/actions\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/workflow/status/bencevans/node-sonos/Run%20tests/master?style=flat-square\u0026color=brightgreen\"\n         alt=\"GitHub Actions Build\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://www.npmjs.com/package/sonos\"\u003e\n    \u003cimg src=\"https://img.shields.io/npm/v/sonos.svg?style=flat-square\"\n         alt=\"NPM Version\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://www.npmjs.com/package/sonos\"\u003e\n    \u003cimg src=\"https://img.shields.io/npm/dm/sonos.svg?style=flat-square\u0026color=brightgreen\"\n         alt=\"NPM Downloads\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/feross/standard\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square\"\n         alt=\"Standard Codestyle\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://discord.gg/m62rFAV4NU\"\u003e\n  \u003cimg src=\"https://img.shields.io/discord/782374564054564875?style=flat-square\u0026color=success\" alt=\"Discord badge\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n**node-sonos** gives you the power to control all your Sonos devices from your own apps in JavaScript. Automatically discover your devices on the network and control the playback and queue with instant events announcing change.\n\n## Features\n\n* Device Discovery\n* Queue Control\n* Volume Control\n* Spotify Support\n* Radio\n* Change Events\n\n## Install\n\nPublished versions (recommended)\n\n    $ npm install sonos\n\nFrom the repo, living on the edge\n\n    $ npm install git://github.com/bencevans/node-sonos.git\n\n## Quick Start\n\n### Discovering Devices\n\n```js\nconst { DeviceDiscovery } = require('sonos')\n\n// event on all found...\nDeviceDiscovery((device) =\u003e {\n  console.log('found device at ' + device.host)\n\n  // mute every device...\n  device.setMuted(true)\n    .then(d =\u003e console.log(`${d.host} now muted`))\n})\n\n// find one device\nDeviceDiscovery().once('DeviceAvailable', (device) =\u003e {\n  console.log('found device at ' + device.host)\n\n  // get all groups\n  device.getAllGroups().then(groups =\u003e {\n    groups.forEach(group =\u003e {\n      console.log(group.Name);\n    })\n  })\n})\n```\n\n### Discovering devices async\n\n```js\nconst DeviceDiscovery = require('sonos').AsyncDeviceDiscovery\nlet discovery = new DeviceDiscovery()\ndiscovery.discover().then((device, model) =\u003e {\n    // Do stuff, see examples/devicediscovery.js\n})\n```\n\n### Controlling Known Devices\n\n```js\nconst { Sonos } = require('sonos')\n\nconst device = new Sonos('192.168.1.56');\n\ndevice.play()\n  .then(() =\u003e console.log('now playing'))\n\ndevice.getVolume()\n  .then((volume) =\u003e console.log(`current volume = ${volume}`))\n```\n\n## API\n\n* DeviceDiscovery([options], [deviceAvailableListener])\n* Class: DeviceDiscovery([options])\n  * Event: 'DeviceAvailable'\n  * destroy()\n* Class: 'AsyncDeviceDiscovery'\n  * discover([options])\n  * discoverMultiple([options])\n* Class: Sonos(host, [port])\n  * currentTrack()\n  * deviceDescription()\n  * flush()\n  * getCurrentState()\n  * getLEDState()\n  * getMusicLibrary(search, options)\n  * getMuted()\n  * ~~getTopology()~~ Doesn't work if you upgraded to Sonos v9.1. Check-out getAllGroups() for some replacement.\n  * getVolume()\n  * getZoneAttrs()\n  * getZoneInfo()\n  * getQueue()\n  * next()\n  * parseDIDL(didl)\n  * pause()\n  * play(uri)\n  * togglePlayback()\n  * previous()\n  * queue(uri, positionInQueue)\n  * queueNext(uri)\n  * request(endpoint, action, body, responseTag)\n  * seek(seconds)\n  * setLEDState(desiredState)\n  * setMuted(muted)\n  * setName(name)\n  * getPlayMode()\n  * setPlayMode(mode)\n  * setVolume(volume)\n  * stop()\n  * setSpotifyRegion(region)\n  * alarmClockService()\n    * ListAlarms()\n    * PatchAlarm(id,options)\n    * SetAlarm(id,enabled)\n  * joinGroup(otherDeviceName)\n  * leaveGroup()\n  * getAllGroups()\n  * startListening(options)\n  * stopListening()\n  * Event: 'CurrentTrack'\n  * Event: 'NextTrack'\n  * Event: 'PlayState' and 'PlaybackStopped'\n  * Event: 'AVTransport'\n  * Event: 'Volume'\n  * Event: 'Muted'\n  * Event: 'RenderingControl'\n\n## Documentation\n\nWe tried to add jsdoc info to all functions, and generate documentation from it. [/docs](./docs/)\n\n## Examples\n\nAdditional examples can be found in the [/examples](./examples) directory within the repository.\n\n## In The Wild\n\nnode-sonos in use across the interwebs. Missing yours? [Add it](https://github.com/bencevans/node-sonos/edit/master/README.md) and send us a pull request!\n\n### Apps\n\n* **[AirSonos](https://github.com/stephen/airsonos)** - Apple AirPlay (iOS, OS X) support to all Sonos devices on a network.\n* **[sonos-cli](https://github.com/bencevans/sonos-cli)** - Command Line Interface for Sonos\n* **[sonos2mqtt](https://github.com/svrooij/sonos2mqtt)** - Bridge between Sonos and an MQTT server\n* **[homebridge-zp](https://github.com/ebaauw/homebridge-zp)** - Homebridge plugin for Sonos ZonePlayer\n* **[ZenMusic](https://github.com/htilly/zenmusic)** - Control Sonos thru #Slack!\n* **[gladys-sonos](https://github.com/GladysProject/gladys-sonos)** - Control Sonos with [Gladys](https://github.com/GladysProject/Gladys) a Raspberry Pi Home Assistant\n* **[sonos-web](https://github.com/Villarrealized/sonos-web)** - Sonos controller for your web browser\n* **[BudgieStream](https://github.com/filahf/budgie-stream)** - Stream system output to Sonos\n* **[GrooveSensor](https://github.com/recursivefunk/groove-sensor)** - Motion-activated Sonos playback\n\n### Writeups\n\n* **[How we gave our studio WWE-style entrances using iBeacons and Sonos](https://hackernoon.com/how-we-gave-our-studio-wwe-style-entrances-using-ibeacons-and-sonos-92dd2f54983)** - A technical run-down of using futuristic technology for sheer entertainment value\n\n## Maintainers\n\n* Ben Evans (@bencevans)\n* Stephen Wan (@stephen)\n* Marshall T. Rose (@mrose17)\n* Stephan van Rooij (@svrooij)\n\n## Contributors ✨\n\n\u003c!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --\u003e\n[![All Contributors](https://img.shields.io/badge/all_contributors-51-orange.svg?style=flat-square)](#contributors-)\n\u003c!-- ALL-CONTRIBUTORS-BADGE:END --\u003e\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://bencevans.io/\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/638535?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eBen Evans\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=bencevans\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=bencevans\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"#ideas-bencevans\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"#maintenance-bencevans\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://svrooij.io\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/1292510?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eStephan van Rooij\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=svrooij\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=svrooij\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"https://github.com/bencevans/node-sonos/pulls?q=is%3Apr+reviewed-by%3Asvrooij\" title=\"Reviewed Pull Requests\"\u003e👀\u003c/a\u003e \u003ca href=\"#maintenance-svrooij\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/sseiber\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/618603?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eScott Seiber\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=sseiber\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=sseiber\" title=\"Tests\"\u003e⚠️\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/mrose17\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/400552?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMarshall T. Rose\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=mrose17\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#maintenance-mrose17\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://stephenwan.com\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/2320890?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eStephen Wan\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=stephen\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#maintenance-stephen\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/pascalopitz\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/271740?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ePascal Opitz\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=pascalopitz\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/gupsho\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/1124090?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eShobhit Gupta\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=gupsho\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://humanoids.be\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/640949?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMartin Giger\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=freaktechnik\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/bencevans/node-sonos/issues?q=author%3Afreaktechnik\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/HarlekinX\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/3353981?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMatthias Brünning\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=HarlekinX\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/ebaauw\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/22179355?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eErik Baauw\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=ebaauw\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/bencevans/node-sonos/issues?q=author%3Aebaauw\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/ThomasMirlacher\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/36892916?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eThomas Mirlacher\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=ThomasMirlacher\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/tobhult\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/22472772?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eTobias Hultman\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=tobhult\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/monsur\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/81861?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMonsur Hossain\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=monsur\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/TheBenji\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/1070666?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eBen A.\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=TheBenji\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/phoenixrising87\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/28021533?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eManuel Heim\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=phoenixrising87\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/ludlovian\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/30529803?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAlan Layng\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=ludlovian\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/bencevans/node-sonos/issues?q=author%3Aludlovian\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://omines.nl\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/1455673?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eNiels Keurentjes\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=curry684\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://www.dafruits.com\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/53433?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eArnaud Vallat\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=rno\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/cw124\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/7177848?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eChris Wiggins\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=cw124\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://dennis.io\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/332905?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDennis\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=ds82\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/htilly\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/582460?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eHenrik Tilly\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=htilly\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/bencevans/node-sonos/issues?q=author%3Ahtilly\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://iansutherland.ca/\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/433725?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eIan Sutherland\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=iansu\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/driskell\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/939815?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJason Woods\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=driskell\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://fi.linkedin.com/in/harjulamarko\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/2276211?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMarko Harjula\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=mharj\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/MikiDi\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/9383603?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMichaël Dierick\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=MikiDi\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://blog.travismclarke.com\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/9957358?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eTravis Clarke\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=clarketm\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://vinkla.dev\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/499192?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eVincent Klaiber\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=vinkla\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/VonRehberg\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/8611608?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eVonRehberg\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=VonRehberg\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://adamvarga.com\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/250306?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAdam Varga\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=abv\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/arjenvanderende\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/357115?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eArjen van der Ende\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=arjenvanderende\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://www.failsource.com\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/100601?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eCraig Lonsdale\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=craiglonsdale\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://craigmr.github.io\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/2215614?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eCraig Simpson\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=craigmr\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://denv.it/\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/4939519?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDenys Vitali\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=denysvitali\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/erik-beus\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/32451595?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eErik Beuschau\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=erik-beus\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/hklages\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/17273119?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eH. Klages\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=hklages\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/bencevans/node-sonos/issues?q=author%3Ahklages\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://keith.mcknig.ht\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/1398194?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eKeith McKnight\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=kmck\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://kneths-korner.blogspot.com/\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/1225363?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eKenneth Geisshirt\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=kneth\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/TKirmani\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/6881672?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eKirmani\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=TKirmani\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://www.easen.co.uk\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/111948?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMarc Easen\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=Easen\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/mrstegeman\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/457381?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMichael Stegeman\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=mrstegeman\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://www.findforsikring.dk\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/6514342?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMorten Scheel\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=mortenscheel\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://nathanwong.co.uk\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/219826?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eNathan Wong\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=esteluk\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://sam.daitzman.com\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/1499476?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eSam Daitzman\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=sdaitzman\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://www.sammygriffiths.co.uk/\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/6638381?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eSammy Griffiths\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=sammygriffiths\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://trevorsullivan.net\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/466713?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eTrevor Sullivan\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=pcgeek86\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://gambio.de\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/5122750?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003emistaTT\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=mistaTT\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/wafflegolfing\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/6316612?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ewafflegolfing\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=wafflegolfing\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/yoogie\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/2392903?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eBjörn Häggquist\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/commits?author=yoogie\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/wwwizzarrdry\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/2218144?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ewwwizzarrdry\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/issues?q=author%3Awwwizzarrdry\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/magnlund\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/34715101?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMagnus Lundberg\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/issues?q=author%3Amagnlund\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://www.dandak.is/\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/7499386?v=4\" width=\"120px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eNick Dandakis\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/bencevans/node-sonos/issues?q=author%3Anickdandakis\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-enable --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification.\nContributions of any kind welcome!\nYou can get added by [mentioning](https://allcontributors.org/docs/en/bot/usage)\nthe `@all-contributors` bot in a pr or issue.\n\nIf we missed you, just go to your (closed) issue or pr and mention the bot to get added.\n\n## Issues\n\nIf you got discovered an issue with this library, please check the [issue-tracker](https://github.com/bencevans/node-sonos/issues).\nAnd [create](https://github.com/bencevans/node-sonos/issues/new) an issue if your\nproblem isn't discovered by someone else.\nIf you want to contribute something check out these ['help-wanted' issues](https://github.com/bencevans/node-sonos/labels/help-wanted).\n\n## Questions\n\n[![Join us on Discord][badge_discord]][link_discord]\n\nThe best place to ask your questions is in Discord, we are there to help you. [Join us on Discord][link_discord].\n\n### Unsupported sonos features\n\nThere is a great other library to control Sonos with Python, they also have a great list of all possible soap actions [here](https://github.com/SoCo/SoCo/wiki/Sonos-UPnP-Services-and-Functions). So if you have anything that you cannot do with node-sonos but that you can with the official app. You could have a look in the above list, or use [wireshark](https://github.com/SoCo/SoCo/wiki/Use-Wireshark-for-protocol-research) to investigate the protocol.\n\n### NPM publish\n\nWe try to react to all pull-requests, but if you think we don't respond in time, please don't create a 'sonos-by-xyz' or a 'node-sonos-by-xyz' package on NPM. This might lead to people installing the wrong version.\n\nIf you want to publish your own version, please do it as a [user-scoped](https://docs.npmjs.com/getting-started/scoped-packages) eg. `@svrooij/sonos` package.\n\n1. Change the top of the readme to state your specific changes.\n2. Change the `name` of the project to `@npm_username/sonos`\n3. Publish it to npm `npm publish --access=public`\n\n## Development\n\nIf you want to make this library better, you can follow these steps.\n\n1. Create a [fork](https://github.com/bencevans/node-sonos/fork)\n2. Make changes\n3. (optional) Create tests for the feature or the bug, see [sonos.test.js](./test/sonos.test.js).\n4. Run `SONOS_HOST=192.168.x.x npm run test` to test your code (against an actual sonos device, change the ip)\n5. Check-in your code in a single commit.\n   Make sure your commit starts with `fix:` for a bugfix or `feat:` for a new\n   feature followed by a short description. You can also follow with an\n   empty line followed by a more details description.\n6. Send a pull-request\n7. Hold-on, we will be checking them.\n\nIf you already had a fork, make sure it is updated with the latest master so things don't get complicated when we want to merge the PR.\n\n```bash\ngit remote add upstream https://github.com/bencevans/node-sonos.git\ngit fetch upstream\ngit checkout master\ngit rebase upstream/master\ngit push origin\n```\n\n## Licence\n\nMIT © [Ben Evans](https://bencevans.io)\n\n[badge_discord]: https://img.shields.io/discord/782374564054564875\n[link_discord]: https://discord.gg/m62rFAV4NU\n","funding_links":["https://github.com/sponsors/bencevans","https://buymeacoffee.com/bencevans"],"categories":["JavaScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbencevans%2Fnode-sonos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbencevans%2Fnode-sonos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbencevans%2Fnode-sonos/lists"}