Collaborative jukebox for Slack built with Elixir
405
This is a collaborative jukebox for Slack built with Elixirā .
This repository contains the code for a webserver that has 2 main endpoints:
POST /api receives requests from Slack and allows controlling the player (starting, stopping, adding tracks)GET /stream returns an audio stream that can be opened in your media player or browserYou need to add a "Slash Command"ā integration, with such settings:
/radiohttp://radio.example.com/apiPOSTSLACK_TOKEN env var)RadioPlay YouTube or SoundCloud tracks[ status | playlist | add <url> | help ]In Slack:
/radio statusā - displays the player status/radio playlist - displays the tracks in the playlist/radio add <url>ā - adds a new track to the playlist (YouTube or SoundCloud links)/radio start - starts the player/radio stop - stops the player/radio help - displays the help
āYou can access the audio stream at $HOSTNAME/stream (http://localhost:4000/stream by default).
Most the players accept to open such a stream (it works with VLC or iTunes or even in your browser).
If you just want to run it (with production settings), use the Docker imageā :
docker run \
-p 4000:4000 \
-e PORT=4000 \
-e HOSTNAME=http://example.com \
-e SLACK_TOKEN=132456 \
-e SOUNDCLOUD_CLIENT_ID=123456 \
maxdec/radioslack
If you don't want to run a Docker container, you can run the elixir app.
That's the way to go for development.
Before running the app, make sure you have the following packages or binaries:
Erlang/OTP and Elixir (obviously)
ffmpegā for audio transcoding
Please refer to the download pageā and follow the instructions for your OS.
Example: sudo apt-get install ffmpeg
goonā (for Porcelainā )
Download the binary from the releases pageā and put it somewhere in your $PATH (e.g. in /usr/local/bin)
$ git clone https://github.com/maxdec/radioslack
$ cd radioslack
$ mix deps.get compile
$ SLACK_TOKEN=123 SOUNDCLOUD_CLIENT_ID=456 mix run --no-halt
Now you have the radio server running at http://localhost:4000ā .
You can configure the following environment variables:
PORT - Port for the server (Default: "4000")
HOSTNAME - The hostname to display in the links (Defaults: "http://localhost:4000")
SLACK_TOKEN - The verification token that is sent by Slack "Slash Commands" (Defaults: "123")
SOUNDCOUD_CLIENT_ID - SoundCloud API Client ID, required for SouldCloud tracks (Defaults: nil)
/!\ Those variables need to be set at compile time (not runtime).
Content type
Image
Digest
Size
386.7 MB
Last updated
almost 10 years ago
docker pull maxdec/radioslack