mirror of
https://github.com/librespot-org/librespot.git
synced 2024-12-18 17:11:53 +00:00
Merge pull request #5 from fossedihelm/master
Default volume 50% and --initial-volume argument
This commit is contained in:
commit
95ef34654b
5 changed files with 46 additions and 16 deletions
14
Cargo.lock
generated
14
Cargo.lock
generated
|
@ -1,10 +1,3 @@
|
|||
[root]
|
||||
name = "librespot-protocol"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"protobuf 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "aho-corasick"
|
||||
version = "0.6.3"
|
||||
|
@ -353,6 +346,13 @@ dependencies = [
|
|||
"protobuf 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "librespot-protocol"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"protobuf 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "linear-map"
|
||||
version = "1.2.0"
|
||||
|
|
11
README.md
11
README.md
|
@ -9,7 +9,7 @@ which are not available in the official library.
|
|||
Note: librespot needs to be logged in and only works with Spotify Premium
|
||||
|
||||
# THIS FORK
|
||||
As the origin is no longer maintained I wanted to have a place for a version of librespot with other peoples forks and features merged.
|
||||
As the origin is no longer maintained I wanted to have a place for a version of librespot with other peoples forks and features merged.
|
||||
|
||||
|
||||
# THANKS
|
||||
|
@ -21,7 +21,7 @@ I've done noting more than make this pretty so big thanks to:
|
|||
## Building
|
||||
Rust 1.17.0 or later is required to build librespot.
|
||||
|
||||
**If you are building librespot on macOS, the homebrew provided rust may fail due to the way in which homebrew installs rust. In this case, uninstall the homebrew version of rust and use [rustup](https://www.rustup.rs/), and librespot should then build.**
|
||||
**If you are building librespot on macOS, the homebrew provided rust may fail due to the way in which homebrew installs rust. In this case, uninstall the homebrew version of rust and use [rustup](https://www.rustup.rs/), and librespot should then build.**
|
||||
|
||||
It also requires a C, with portaudio.
|
||||
|
||||
|
@ -49,7 +49,7 @@ cargo build --release
|
|||
A sample program implementing a headless Spotify Connect receiver is provided.
|
||||
Once you've built *librespot*, run it using :
|
||||
```shell
|
||||
target/release/librespot --username USERNAME --cache CACHEDIR --name DEVICENAME
|
||||
target/release/librespot --username USERNAME --cache CACHEDIR --name DEVICENAME [--initial-volume 20]
|
||||
```
|
||||
|
||||
### All options
|
||||
|
@ -70,6 +70,7 @@ target/release/librespot --username USERNAME --cache CACHEDIR --name DEVICENAME
|
|||
| Option | | backend | Audio backend to use. Use '?' to list options | BACKEND |
|
||||
| Option | | device | Audio device to use. Use '?' to list options | DEVICE |
|
||||
| Option | | mixer | Mixer to use | MIXER |
|
||||
| Option | | initial-volume | Initial volume in %, once connected [0-100] | VOLUME |
|
||||
|
||||
Taken from here:
|
||||
https://github.com/ComlOnline/librespot/blob/master/src/main.rs#L88
|
||||
|
@ -87,7 +88,7 @@ target/release/librespot [...] --backend portaudio
|
|||
|
||||
The following backends are currently available :
|
||||
- ALSA
|
||||
- PortAudio
|
||||
- PortAudio
|
||||
- PulseAudio
|
||||
|
||||
## Cross-compiling
|
||||
|
@ -131,4 +132,4 @@ Come and hang out on gitter if you need help or want to offer some.
|
|||
https://gitter.im/sashahilton00/spotify-connect-resources
|
||||
|
||||
## License
|
||||
Everything in this repository is licensed under the MIT license.
|
||||
Everything in this repository is licensed under the MIT license.
|
||||
|
|
|
@ -121,4 +121,5 @@ impl Default for PlayerConfig {
|
|||
pub struct ConnectConfig {
|
||||
pub name: String,
|
||||
pub device_type: DeviceType,
|
||||
pub volume: i32,
|
||||
}
|
||||
|
|
32
src/main.rs
32
src/main.rs
|
@ -100,7 +100,8 @@ fn setup(args: &[String]) -> Setup {
|
|||
.optflag("", "disable-discovery", "Disable discovery mode")
|
||||
.optopt("", "backend", "Audio backend to use. Use '?' to list options", "BACKEND")
|
||||
.optopt("", "device", "Audio device to use. Use '?' to list options", "DEVICE")
|
||||
.optopt("", "mixer", "Mixer to use", "MIXER");
|
||||
.optopt("", "mixer", "Mixer to use", "MIXER")
|
||||
.optopt("", "initial-volume", "Initial volume in %, once connected (must be from 0 to 100)", "VOLUME");
|
||||
|
||||
let matches = match opts.parse(&args[1..]) {
|
||||
Ok(m) => m,
|
||||
|
@ -133,6 +134,33 @@ fn setup(args: &[String]) -> Setup {
|
|||
let mixer_name = matches.opt_str("mixer");
|
||||
let mixer = mixer::find(mixer_name.as_ref())
|
||||
.expect("Invalid mixer");
|
||||
let initial_volume;
|
||||
// check if initial-volume argument is present
|
||||
if matches.opt_present("initial-volume"){
|
||||
// check if value is a number
|
||||
if matches.opt_str("initial-volume").unwrap().parse::<i32>().is_ok(){
|
||||
// check if value is in [0-100] range, otherwise put the bound values
|
||||
if matches.opt_str("initial-volume").unwrap().parse::<i32>().unwrap() < 0 {
|
||||
initial_volume = 0 as i32;
|
||||
}
|
||||
else if matches.opt_str("initial-volume").unwrap().parse::<i32>().unwrap() > 100{
|
||||
initial_volume = 0xFFFF as i32;
|
||||
}
|
||||
// checks ok
|
||||
else{
|
||||
initial_volume = matches.opt_str("initial-volume").unwrap().parse::<i32>().unwrap()* 0xFFFF as i32 / 100 ;
|
||||
}
|
||||
}
|
||||
// if value is not a number use default value (50%)
|
||||
else {
|
||||
initial_volume = 0x8000 as i32;
|
||||
}
|
||||
}
|
||||
// if argument not present use default values (50%)
|
||||
else{
|
||||
initial_volume = 0x8000 as i32;
|
||||
}
|
||||
debug!("Volume \"{}\" !", initial_volume);
|
||||
|
||||
let name = matches.opt_str("name").unwrap();
|
||||
let use_audio_cache = !matches.opt_present("disable-audio-cache");
|
||||
|
@ -180,6 +208,7 @@ fn setup(args: &[String]) -> Setup {
|
|||
ConnectConfig {
|
||||
name: name,
|
||||
device_type: device_type,
|
||||
volume: initial_volume,
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -342,4 +371,3 @@ fn main() {
|
|||
|
||||
core.run(Main::new(handle, setup(&args))).unwrap()
|
||||
}
|
||||
|
||||
|
|
|
@ -145,9 +145,9 @@ impl Spirc {
|
|||
|
||||
let (cmd_tx, cmd_rx) = mpsc::unbounded();
|
||||
|
||||
let volume = 0xFFFF;
|
||||
let volume = config.volume as u16;
|
||||
let device = initial_device_state(config, volume);
|
||||
mixer.set_volume(volume);
|
||||
mixer.set_volume(volume as u16);
|
||||
|
||||
let mut task = SpircTask {
|
||||
player: player,
|
||||
|
|
Loading…
Reference in a new issue