code: README, .env support
This commit is contained in:
parent
7277ca0cfa
commit
478bdbc59a
2
.env
Normal file
2
.env
Normal file
@ -0,0 +1,2 @@
|
||||
DIRECTORY="E:/sounds/soundboard/all"
|
||||
DEVICE_PATTERN=".*VB-Audio Virtual Cable.*"
|
7
Cargo.lock
generated
7
Cargo.lock
generated
@ -317,6 +317,12 @@ version = "0.11.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0c87e182de0887fd5361989c677c4e8f5000cd9491d6d563161a8f3a5519fc7f"
|
||||
|
||||
[[package]]
|
||||
name = "dotenvy"
|
||||
version = "0.15.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b"
|
||||
|
||||
[[package]]
|
||||
name = "encoding_rs"
|
||||
version = "0.8.32"
|
||||
@ -1151,6 +1157,7 @@ dependencies = [
|
||||
"axum",
|
||||
"axum-template",
|
||||
"cpal",
|
||||
"dotenvy",
|
||||
"log",
|
||||
"minijinja",
|
||||
"minimp3",
|
||||
|
@ -10,6 +10,7 @@ default-run = "soundboard"
|
||||
axum = "0.6.18"
|
||||
axum-template = { version = "0.19.0", features = ["minijinja"] }
|
||||
cpal = "0.15.2"
|
||||
dotenvy = "0.15.7"
|
||||
log = "0.4.20"
|
||||
minijinja = { version = "1.0.3", features = ["loader"] }
|
||||
minimp3 = "0.5.1"
|
||||
|
26
README.md
Normal file
26
README.md
Normal file
@ -0,0 +1,26 @@
|
||||
# Soundboard
|
||||
|
||||
The idea is to run a web server that serves a sound board app to your devices, so you can play sounds on your computer from a second device.
|
||||
|
||||
## Features
|
||||
|
||||
- [x] play mp3
|
||||
- [x] play ogg
|
||||
- [x] play wav
|
||||
- [x] play flac
|
||||
- [x] read mp3 duration
|
||||
- [ ] read ogg duration
|
||||
- [ ] read wav duration
|
||||
- [x] block buttons
|
||||
- [x] fullscreen
|
||||
- [x] portrait/landscape
|
||||
- [ ] static css
|
||||
- [ ] categories
|
||||
- [ ] set folders per env
|
||||
- [ ] set output device per env
|
||||
- [ ] endpoint for setting devices
|
||||
- [ ] endpoint for setting folders
|
||||
- [ ] auth
|
||||
- [ ] multi-device support
|
||||
- [ ] press button while playing
|
||||
|
16
src/main.rs
16
src/main.rs
@ -5,10 +5,12 @@ use minijinja::{path_loader, Environment};
|
||||
use state::{AppState, TemplateEngine};
|
||||
use std::net::SocketAddr;
|
||||
|
||||
use log::{debug, info};
|
||||
use log::info;
|
||||
use serde::Serialize;
|
||||
use std::env;
|
||||
use std::sync::{Arc, Mutex};
|
||||
|
||||
use dotenvy::dotenv;
|
||||
use vbplay::{AudioThread, DeviceSelection, SoundDecoder};
|
||||
|
||||
mod soundclips;
|
||||
@ -17,22 +19,24 @@ mod vbplay;
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() {
|
||||
dotenv().ok();
|
||||
|
||||
let device_pattern = env::var("DEVICE_PATTERN").expect("Need a device pattern");
|
||||
let folder = env::var("DIRECTORY").expect("Need a directory in env file.");
|
||||
|
||||
let mut jinja = Environment::new();
|
||||
jinja.set_loader(path_loader("templates"));
|
||||
let template_engine = Engine::from(jinja);
|
||||
|
||||
let audio = vbplay::audio_thread(
|
||||
DeviceSelection::FindByPattern(".*VB-Audio Virtual Cable.*".to_owned()),
|
||||
DeviceSelection::FindByPattern(device_pattern),
|
||||
SoundDecoder::Detect,
|
||||
);
|
||||
let audio: Arc<Mutex<AudioThread>> = Arc::new(Mutex::new(audio));
|
||||
|
||||
let app_state = AppState {
|
||||
engine: template_engine,
|
||||
clips: soundclips::scan_directory_for_clips(
|
||||
"E:/sounds/soundboard/all",
|
||||
&["mp3", "ogg", "wav", "flac"],
|
||||
)
|
||||
clips: soundclips::scan_directory_for_clips(&folder, &["mp3", "ogg", "wav", "flac"])
|
||||
.expect("No Soundclips found."),
|
||||
player: audio,
|
||||
playback: None,
|
||||
|
Loading…
Reference in New Issue
Block a user