aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--Cargo.lock5
-rw-r--r--Cargo.toml1
-rw-r--r--src/live.rs21
-rw-r--r--src/main.rs15
-rw-r--r--templates/home.html.tera2
5 files changed, 36 insertions, 8 deletions
diff --git a/Cargo.lock b/Cargo.lock
index e0c1600..67ba3e7 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -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",
]
diff --git a/Cargo.toml b/Cargo.toml
index d88284e..57ea2d4 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -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"