auto-call downloader every day
This commit is contained in:
@@ -17,11 +17,10 @@ async fn get_newest_morning_journal() -> Result<String, Box<dyn std::error::Erro
|
||||
if let Some(broadcasts) = day["broadcasts"].as_array() {
|
||||
for broadcast in broadcasts.iter().rev() {
|
||||
//if broadcast["title"] == "Ö1 Morgenjournal" {
|
||||
if broadcast["title"] == "Eröffnungskonzert Allegro Vivo" {
|
||||
if let Some(href) = broadcast["href"].as_str() {
|
||||
if broadcast["title"] == "Eröffnungskonzert Allegro Vivo"
|
||||
&& let Some(href) = broadcast["href"].as_str() {
|
||||
return Ok(href.into());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
23
src/main.rs
23
src/main.rs
@@ -2,8 +2,10 @@ mod state;
|
||||
mod streamer;
|
||||
|
||||
use axum::{routing::get, Router};
|
||||
use chrono::Utc;
|
||||
use state::AppState;
|
||||
use std::sync::Arc;
|
||||
use tokio_cron_scheduler::{Job, JobScheduler};
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
@@ -11,7 +13,26 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
|
||||
let app = Router::new()
|
||||
.route("/", get(streamer::stream_handler))
|
||||
.with_state(state);
|
||||
.with_state(state.clone());
|
||||
|
||||
let scheduler = JobScheduler::new().await.unwrap();
|
||||
scheduler
|
||||
.add(
|
||||
Job::new_async(
|
||||
"30 0 7 * * Mon,Tue,Wed,Thu,Fri,Sat",
|
||||
move |_uuid, _locked| {
|
||||
let state_for_task = state.clone();
|
||||
Box::pin(async move {
|
||||
state_for_task.check_update().await;
|
||||
println!("Task executed at: {}", Utc::now());
|
||||
})
|
||||
},
|
||||
)
|
||||
.unwrap(),
|
||||
)
|
||||
.await
|
||||
.unwrap();
|
||||
scheduler.start().await.unwrap();
|
||||
|
||||
println!("Streaming server running on http://localhost:3029");
|
||||
|
||||
|
||||
@@ -25,11 +25,10 @@ impl AppState {
|
||||
|
||||
pub async fn check_update(self: Arc<Self>) {
|
||||
let today = Local::now().date_naive();
|
||||
if let Some(downloaded_on_day) = *self.downloaded_on_day.read().await {
|
||||
if today == downloaded_on_day {
|
||||
if let Some(downloaded_on_day) = *self.downloaded_on_day.read().await
|
||||
&& today == downloaded_on_day {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
self.reset().await;
|
||||
*self.downloaded_on_day.write().await = Some(today);
|
||||
|
||||
Reference in New Issue
Block a user