anlumo / KaraokeV2

WIP
GNU Affero General Public License v3.0
2 stars 1 forks source link

Karaoke v2

A management solution for running large Karaoke parties using software compatible with the Ultrastar Deluxe song format.

In these parties, people want to queue up for singing songs. They want to discover what's available and see when their song is going to come up. The traditional way is to have a huge paper list of all songs, and pieces of paper with a form on it to fill out and throw to the DJ. This works, but is cumbersome for everyone involved.

This implementation solves the problem by using technology.

The project consists of three programs:

Dependencies

The importer and server need Rust installed, see rustup.rs. Also install cargo-make using:

cargo install cargo-make

Building the web client needs Flutter 3.16.9 (3.19.x doesn't work yet). Install as instructed on flutter.dev.

Then, build the frontend and server using

cargo make build-flutter
cargo make build-server

Parse the Ultrastar library using

cargo run --bin importer -- --db songs.db -s <num> "<path>"

where <path> is the path to the song collection. The directory is scanned recursively, so the precise structure doesn't matter. Note that invalid entries are skipped.

The -s <num> indicates how many parts of the path have to be skipped (removed) to make the HTTP requests work. This probably needs a bit of experimentation.

Configuration

Copy config.example.yaml to config.yaml and edit for your needs.

Running the server

'''TODO: This needs to be updated to include concrete steps for setting up the file tree!'''

Running the server itself is easy:

karaoke-server -c config.yaml

The server can serve the frontend, the song database, and its own REST/WebSocket API at the same time. It's possible to have a reverse proxy in front of it, but it's not really necessary (unless TLS is desired).

Contributions

Contributions are welcome, please fork and open a pull request! You have to agree to use the same license as this project.

License

Copyright (C) 2024 Andreas Monitzer

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Affero General Public License for more details.

See LICENSE.md for the full license.