mirror of
https://github.com/mrfluffy-dev/kami.git
synced 2026-01-17 12:50:32 +00:00
added Chrome cast
This commit is contained in:
@@ -1,3 +1,13 @@
|
||||
extern crate rust_cast;
|
||||
use rust_cast::{
|
||||
channels::{
|
||||
media::{Media, StreamType},
|
||||
receiver::CastDeviceApp,
|
||||
},
|
||||
CastDevice,
|
||||
};
|
||||
use std::str::FromStr;
|
||||
|
||||
pub fn open_video(link: (String, String)) {
|
||||
let title = link.1;
|
||||
let title = title.replace("-", " ");
|
||||
@@ -10,3 +20,63 @@ pub fn open_video(link: (String, String)) {
|
||||
|
||||
// clear terminal
|
||||
}
|
||||
|
||||
const DEFAULT_DESTINATION_ID: &str = "receiver-0";
|
||||
fn play_media(
|
||||
device: &CastDevice,
|
||||
app_to_run: &CastDeviceApp,
|
||||
media: String,
|
||||
media_type: String,
|
||||
media_stream_type: StreamType,
|
||||
) {
|
||||
let app = device.receiver.launch_app(app_to_run).unwrap();
|
||||
|
||||
device
|
||||
.connection
|
||||
.connect(app.transport_id.as_str())
|
||||
.unwrap();
|
||||
|
||||
let _status = device
|
||||
.media
|
||||
.load(
|
||||
app.transport_id.as_str(),
|
||||
app.session_id.as_str(),
|
||||
&Media {
|
||||
content_id: media,
|
||||
content_type: media_type,
|
||||
stream_type: media_stream_type,
|
||||
duration: None,
|
||||
metadata: None,
|
||||
},
|
||||
)
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
pub fn open_cast(link: (String, String), ip: &str) {
|
||||
let cast_device = match CastDevice::connect_without_host_verification(ip, 8009) {
|
||||
Ok(cast_device) => cast_device,
|
||||
Err(err) => panic!("Could not establish connection with Cast Device: {:?}", err),
|
||||
};
|
||||
|
||||
cast_device
|
||||
.connection
|
||||
.connect(DEFAULT_DESTINATION_ID.to_string())
|
||||
.unwrap();
|
||||
cast_device.heartbeat.ping().unwrap();
|
||||
|
||||
// Play media and keep connection.
|
||||
|
||||
let media_stream_type = match "none" {
|
||||
value @ "buffered" | value @ "live" | value @ "none" => {
|
||||
StreamType::from_str(value).unwrap()
|
||||
}
|
||||
_ => panic!("Unsupported stream type!"),
|
||||
};
|
||||
play_media(
|
||||
&cast_device,
|
||||
&CastDeviceApp::from_str("default").unwrap(),
|
||||
link.0.to_string(),
|
||||
"".to_string(),
|
||||
media_stream_type,
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user