diff options
Diffstat (limited to '')
-rw-r--r-- | Cargo.lock | 5 | ||||
-rw-r--r-- | Cargo.toml | 1 | ||||
-rw-r--r-- | src/live.rs | 21 | ||||
-rw-r--r-- | src/main.rs | 15 | ||||
-rw-r--r-- | templates/home.html.tera | 2 |
5 files changed, 36 insertions, 8 deletions
@@ -2080,9 +2080,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.93" +version = "1.0.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cad406b69c91885b5107daf2c29572f6c8cdb3c66826821e286c533490c0bc76" +checksum = "bdf3bf93142acad5821c99197022e170842cdbc1c30482b98750c688c640842a" dependencies = [ "itoa", "ryu", @@ -2158,6 +2158,7 @@ dependencies = [ "rocket", "rocket_dyn_templates", "serde", + "serde_json", "tokio", ] @@ -16,3 +16,4 @@ serde = { version = "1.0", features = ["derive"] } rocket_dyn_templates = { version = "0.1.0-rc.2", features = ["tera"] } listenbrainz = "0.7" chrono = "0.4.23" +serde_json = "1.0.97" diff --git a/src/live.rs b/src/live.rs new file mode 100644 index 0000000..4efb0d9 --- /dev/null +++ b/src/live.rs @@ -0,0 +1,21 @@ +use reqwest::Client; +use serde::Deserialize; + +use crate::Result; + +#[derive(Deserialize, Default)] +#[serde(rename_all = "camelCase")] +pub struct LiveStatus { + pub online: bool, + pub viewer_count: u32, +} + +pub async fn get_live_status(client: &Client) -> Result<LiveStatus> { + let endpoint = "https://weirdstar.stream/api/status"; + Ok(client + .get(endpoint) + .send() + .await? + .json::<LiveStatus>() + .await?) +} diff --git a/src/main.rs b/src/main.rs index ab65f8e..57d4973 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,5 @@ mod error; +mod live; mod posts; mod scrobbles; mod skweets; @@ -17,27 +18,30 @@ type Result<T> = std::result::Result<T, BlossomError>; struct Clients { listenbrainz: listenbrainz::raw::Client, skinnyverse: mastodon_async::Mastodon, + reqwest: reqwest::Client, } #[macro_use] extern crate rocket; #[get("/")] -async fn home(clients: &State<Clients>) -> Result<Template> { - let (listenbrainz, skweets) = tokio::join!( +async fn home(clients: &State<Clients>) -> Template { + let (live, listenbrainz, skweets) = tokio::join!( + live::get_live_status(&clients.reqwest), scrobbles::get_now_playing(&clients.listenbrainz), skweets::get_recents(&clients.skinnyverse) ); + let is_live = live.unwrap_or_default().online; let listenbrainz = listenbrainz.unwrap_or_default(); let skweets = skweets.unwrap_or_default(); - Ok(Template::render( + Template::render( "home", context! { - is_live: false, + is_live, listenbrainz, skweets, }, - )) + ) } #[get("/contact")] @@ -78,6 +82,7 @@ async fn main() -> std::result::Result<(), rocket::Error> { .manage(Clients { listenbrainz: listenbrainz::raw::Client::new(), skinnyverse: mastodon_async::Mastodon::from(skinny_data), + reqwest: reqwest::Client::new(), }) .attach(Template::custom(|engines| { engines.tera.autoescape_on(vec![]); diff --git a/templates/home.html.tera b/templates/home.html.tera index 1d5d7da..cb7fe08 100644 --- a/templates/home.html.tera +++ b/templates/home.html.tera @@ -12,7 +12,7 @@ <iframe class="panel" id="stream" - src="https://live.blos.sm/embed/video" + src="https://weirdstar.stream/embed/video" title="girlstream" referrerpolicy="origin" scrolling="no" |