0.1.6: add "WAR" mode

Signed-off-by: Ivan Bushchik <ivabus@ivabus.dev>
This commit is contained in:
Ivan Bushchik 2024-01-29 19:58:20 +03:00
parent 6b5d73d341
commit 819972f0c0
No known key found for this signature in database
GPG key ID: 2F16FBF3262E090C
3 changed files with 31 additions and 8 deletions

View file

@ -1,7 +1,7 @@
[package]
name = "lonelyradio"
description = "TCP radio for singles"
version = "0.1.5"
version = "0.1.6"
edition = "2021"
license = "MIT"
authors = [ "Ivan Bushchik <ivabus@ivabus.dev>" ]

View file

@ -15,7 +15,7 @@ cargo build -r
## Run
```
lonelyradio [-a <ADDRESS:PORT>] <MUSIC_FOLDER> [-p]
lonelyradio [-a <ADDRESS:PORT>] <MUSIC_FOLDER> [-p] [-w]
```
All files (recursively) will be shuffled and played back. Public log will be displayed to stderr, private to stdout.

View file

@ -1,9 +1,10 @@
use std::path::PathBuf;
use chrono::Local;
use clap::Parser;
use rand::prelude::*;
use rand::seq::SliceRandom;
use samplerate::ConverterType;
use std::path::PathBuf;
use symphonia::core::audio::SampleBuffer;
use symphonia::core::codecs::CODEC_TYPE_NULL;
use symphonia::core::formats::FormatOptions;
@ -22,6 +23,9 @@ struct Args {
#[arg(short, long)]
public_log: bool,
#[arg(short, long)]
war: bool,
}
#[tokio::main]
@ -63,19 +67,29 @@ async fn stream(mut s: TcpStream) {
'track: loop {
let track = pick_track(&tracklist);
println!(
"[{}] {} to {}:{}",
"[{}] {} to {}:{}{}",
Local::now().to_rfc3339(),
track.to_str().unwrap(),
s.peer_addr().unwrap().ip(),
s.peer_addr().unwrap().port()
s.peer_addr().unwrap().port(),
if args.war {
" with WAR.rs"
} else {
""
}
);
if args.public_log {
eprintln!(
"[{}] {} to {}",
"[{}] {} to {}{}",
Local::now().to_rfc3339(),
track.to_str().unwrap(),
s.peer_addr().unwrap().port()
s.peer_addr().unwrap().port(),
if args.war {
" with WAR.rs"
} else {
""
}
);
}
@ -134,7 +148,16 @@ async fn stream(mut s: TcpStream) {
)
.unwrap();
for sample in samples {
let result = s.write(&((sample * 32768_f32) as i16).to_le_bytes()).await;
let result = s
.write(
&(if args.war {
sample.signum() as i16 * 32767
} else {
(sample * 32768_f32) as i16
})
.to_le_bytes(),
)
.await;
if result.is_err() {
// Socket error -> stop
return;