librespot/src/main.rs

53 lines
1.3 KiB
Rust
Raw Normal View History

2015-07-09 19:08:56 +00:00
#![feature(scoped)]
#![allow(deprecated)]
2015-04-25 20:32:07 +00:00
2015-07-09 19:08:56 +00:00
extern crate librespot;
2015-04-25 20:32:07 +00:00
2015-06-23 14:38:29 +00:00
use std::clone::Clone;
use std::fs::File;
2015-07-09 19:08:56 +00:00
use std::io::Read;
use std::path::Path;
use std::thread;
2015-07-07 21:40:31 +00:00
use std::path::PathBuf;
use librespot::session::{Config, Session};
use librespot::util::version::version_string;
use librespot::player::Player;
use librespot::spirc::SpircManager;
2015-04-25 20:32:07 +00:00
fn main() {
let mut args = std::env::args().skip(1);
let mut appkey_file = File::open(Path::new(&args.next().unwrap())).unwrap();
let username = args.next().unwrap();
let password = args.next().unwrap();
2015-07-07 21:40:31 +00:00
let cache_location = args.next().unwrap();
2015-07-01 23:27:19 +00:00
let name = args.next().unwrap();
let mut appkey = Vec::new();
appkey_file.read_to_end(&mut appkey).unwrap();
let config = Config {
application_key: appkey,
2015-07-01 23:27:19 +00:00
user_agent: version_string(),
2015-07-07 21:40:31 +00:00
device_id: name.clone(),
cache_location: PathBuf::from(cache_location)
};
2015-06-23 14:38:29 +00:00
let session = Session::new(config);
2015-07-01 23:27:19 +00:00
session.login(username.clone(), password);
2015-06-23 14:38:29 +00:00
session.poll();
let poll_thread = thread::scoped(|| {
loop {
session.poll();
}
});
let player = Player::new(&session);
2015-07-09 20:08:14 +00:00
let mut spirc_manager = SpircManager::new(&session, player, username, name);
spirc_manager.run();
2015-07-01 17:49:03 +00:00
poll_thread.join();
2015-07-01 17:49:03 +00:00
}