{"id":13484259,"url":"https://github.com/smashingboxes/maestro","last_synced_at":"2025-04-15T06:53:30.393Z","repository":{"id":4287896,"uuid":"51166332","full_name":"smashingboxes/maestro","owner":"smashingboxes","description":":headphones: A Slack-Powered music bot for Spotify","archived":false,"fork":false,"pushed_at":"2022-12-01T01:02:35.000Z","size":6655,"stargazers_count":122,"open_issues_count":5,"forks_count":15,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-15T06:53:25.524Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://maestromakesyou.dance","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/smashingboxes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-02-05T18:38:38.000Z","updated_at":"2023-11-22T01:39:24.000Z","dependencies_parsed_at":"2023-01-11T16:35:33.010Z","dependency_job_id":null,"html_url":"https://github.com/smashingboxes/maestro","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smashingboxes%2Fmaestro","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smashingboxes%2Fmaestro/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smashingboxes%2Fmaestro/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smashingboxes%2Fmaestro/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/smashingboxes","download_url":"https://codeload.github.com/smashingboxes/maestro/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249023711,"owners_count":21199958,"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":[],"created_at":"2024-07-31T17:01:21.474Z","updated_at":"2025-04-15T06:53:30.368Z","avatar_url":"https://github.com/smashingboxes.png","language":"Shell","readme":"# Maestro\n\n\u003cimg src=\"./roboto.png\" width=270/\u003e\n\nA Slack-Powered music bot for Spotify, using [Sinatra](http://sinatrarb.com/) and [shpotify](https://github.com/hnarayanan/shpotify).\n\n## Getting Started\n\nThe first thing you'll need to run Maestro is a computer to run it from. It'll need to be running\n**OSX, with [homebrew](https://brew.sh/) installed**. It'll also need **Ruby**, which comes\npre-installed with OSX, so you should be good there. Lastly, but most importantly, this computer\nis the one that will be playing the music, so it'll either need\n**good speakers, or a headphone jack** to plug a sound system into.\n\nOnce you've got a computer to run it on, you can install Maestro by running the following commands\nin a terminal:\n\n```sh\nbrew install shpotify\n\ngit clone https://github.com/smashingboxes/maestro.git\ncd maestro\nbundle install\n```\n\n### Connecting to Spotify's api\n\nshpotify needs to connect to Spotify’s API in order to find music by\nname. It is very likely you want this feature!\n\nTo get this to work, you first need to sign up (or into) Spotify’s\ndeveloper site and [create an *Application*][spotify-dev]. Once you’ve\ndone so, you can find its `Client ID` and `Client Secret` values and\nenter them into your shpotify config file at `${HOME}/.shpotify.cfg`.\n\nBe sure to quote your values and don’t add any extra spaces. When\ndone, it should look like the following (but with your own values):\n\n```sh\nCLIENT_ID=\"abc01de2fghijk345lmnop\"\nCLIENT_SECRET=\"qr6stu789vwxyz\"\n```\n\n## Usage\n\n```sh\nruby app.rb\n```\n\nThis will start up Maestro on port 4567. To use it with Slack, you'll want to configure an external\nURL (see \"Obtaining an external URL\" below), and set up a slash command (see \"Creating a slash\ncommand\" below).\n\nOnce that's done, you can interact with it via any command\n[shpotify](https://github.com/hnarayanan/shpotify) supports. Here are the most common commands:\n\n```\n/maestro play \u003csong name\u003e\n/maestro next\n/maestro vol up\n/maestro vol down\n/maestro status\n```\n\n## Configuring Slack\n\n### Obtaining an external URL\n\nThere are many ways to get an external URL or static IP. The easiest is to use [ngrok]():\n\n```sh\nbrew cask install ngrok\nngrok http 4567\n```\n\nIn the output, ngrok will provide you with an external url such as `http://71ca42f4.ngrok.io`,\nyou'll need that for the next section.\n\n**NOTE: If ngrok gets restarted (during a computer restart, for example), a new URL will be\ngenerated. You'll need to update your slash command (created in the next section) with the\nnew one.**\n\n### Creating a slash command\n\nTo create a slash command in Slack, go to https://slack.com/apps/A0F82E8CA-slash-commands, click \"Add Configuration\", and fill in the following settings:\n\n- Command: \"/maestro\"\n- URL: Your external URL (from previous section), followed by `/maestro`. So, for example, if your ngrok url is `http://71ca42f4.ngrok.io`, you'd enter `http://71ca42f4.ngrok.io/maestro`\n- Method: POST\n- Customize Name: Maestro\n- Customize Icon: Any icon you'd like. Feel free to use [ours](./maestro.png)\n- Autocomplete help text:\n  - Check \"Show this command in the autocomplete list\"\n  - Description: https://github.com/hnarayanan/shpotify\n  - Usage hint: [shpotify command]\n","funding_links":[],"categories":["Music and Sound"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmashingboxes%2Fmaestro","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsmashingboxes%2Fmaestro","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmashingboxes%2Fmaestro/lists"}