Fela Maslen 5537e98267 feat: updated readmes 5 năm trước cách đây
..
cmd 84c08a3531 feat: artist/album scrollable tree view 5 năm trước cách đây
migrations 9c43ce622a feat: scanner cronjob (#2) 5 năm trước cách đây
pkg dbf1de68cc feat: removed duplicate log and log broadcasts 5 năm trước cách đây
.dockerignore 9c43ce622a feat: scanner cronjob (#2) 5 năm trước cách đây
.gitignore 4775d52a09 Feature/music scanner (#1) 5 năm trước cách đây
Dockerfile 9c43ce622a feat: scanner cronjob (#2) 5 năm trước cách đây
Makefile 84c08a3531 feat: artist/album scrollable tree view 5 năm trước cách đây
README.md 5537e98267 feat: updated readmes 5 năm trước cách đây
docker-compose.yml e2f37eb5c6 feat: barebones http server, websocket API and react app 5 năm trước cách đây
example.env d7cf87b649 chore: updated example env files 5 năm trước cách đây
go.mod a5bb7642fc feat: basic vim-like ui with ability to select and play songs 5 năm trước cách đây
go.sum a5bb7642fc feat: basic vim-like ui with ability to select and play songs 5 năm trước cách đây
init.sql 4775d52a09 Feature/music scanner (#1) 5 năm trước cách đây
test.env d7cf87b649 chore: updated example env files 5 năm trước cách đây

README.md

go-music-player backend

This is the backend part of the music player, written in Golang.

Building

Run make build inside this directory. Binaries will be built and output to the bin directory (which will be created if it does not exist).

Testing

Run make test inside this directory, to run unit and integration tests.

Migrations

First, make sure the following environment variables are set:

  • POSTGRES_HOST
  • POSTGRES_USER
  • POSTGRES_PASSWORD
  • POSTGRES_PORT (optional, defaults to 5432)
  • POSTGRES_DATABASE

Then, run:

  • make migrate

Creating migrations

After getting the migrate CLI tool, run:

  • NAME=create_some_table make migrate.make

Components

Music scanner

This is intended to be run as a scheduled job. It will scan a directory and add relevant metadata to a PostgreSQL database.

Usage

bin/scan

REST/WebSocket API

Usage

bin/server

This is an HTTP server running the following endpoints:

GET /stream?songid=

Streams an audio file based on the songid value in the query string.

GET /pubsub

Handles long-running client connections, initiating a websocket.

GET /artists

Fetches all artists, and outputs them in JSON format.

GET /albums?artist=

Fetches albums for a particular artist, and outputs them in JSON format.

GET /songs?artist=

Fetches songs for a particular artist, and outputs them in JSON format.

GET /song-info?id=

Fetches info for a particular song, based on its ID, and outputs it in JSON format.