diff --git a/src/backends/youtube.rs b/src/backends/youtube.rs index 568f07a..eb6cc39 100644 --- a/src/backends/youtube.rs +++ b/src/backends/youtube.rs @@ -6,7 +6,7 @@ use std::path::{Path, PathBuf}; use async_trait::async_trait; use cached::proc_macro::cached; -use chrono::Utc; +use chrono::{DateTime, Utc}; use reqwest::Url; use rocket::futures::StreamExt; use ytextract::playlist::video::{Error as YouTubeVideoError, Video as YouTubePlaylistVideo}; @@ -197,6 +197,11 @@ impl From for Item { .iter() .max_by_key(|tn| tn.width * tn.height) .map(|tn| tn.url.clone()); + let timestamp = video + .date() + .and_hms_opt(12, 0, 0) + .expect("Invalid hour, minute and/or second"); + let updated_at = DateTime::from_utc(timestamp, Utc); Item { title: video.title().to_string(), @@ -208,7 +213,7 @@ impl From for Item { guid: id, keywords: Default::default(), image, - updated_at: Utc::now(), // TODO: Get a decent timestamp somewhere?! + updated_at, } } } diff --git a/src/feed.rs b/src/feed.rs index 20d46fc..a932c04 100644 --- a/src/feed.rs +++ b/src/feed.rs @@ -28,7 +28,9 @@ pub(crate) fn construct(backend_id: &str, config: &Config, channel: Channel) -> .unwrap_or_default(), ) .build(); - let mut last_build = DateTime::::from_utc(NaiveDateTime::from_timestamp(0, 0), Utc); + let unix_timestamp = NaiveDateTime::from_timestamp_opt(0, 0) + .expect("Out-of-range seconds or invalid nanoseconds"); + let mut last_build = DateTime::from_utc(unix_timestamp, Utc); let generator = String::from(concat!( env!("CARGO_PKG_NAME"), " ",