diff --git a/src/main.rs b/src/main.rs index 26867b4..329fd39 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,23 +1,48 @@ use anyhow::{format_err, Result}; use chrono::{DateTime, Local, NaiveDate, TimeZone, Utc}; use html2md::parse_html; -use megalodon::{generator, megalodon::GetLocalTimelineInputOptions, response::Response}; +use megalodon::{ + entities::status::Status, generator, megalodon::GetLocalTimelineInputOptions, + response::Response, +}; use std::env; #[derive(Debug)] struct Post { + id: String, content: String, created_at: DateTime, } +// TODO implement try_from that looks for descendants and adds them +impl From<&Status> for Post { + fn from(status: &Status) -> Self { + let Status { + id, + created_at, + content, + .. + } = status; + let id = id.clone(); + let created_at = created_at.clone(); + let content = parse_html(&content); + Post { + id, + created_at, + content, + } + } +} + #[tokio::main] async fn main() -> Result<()> { env_logger::init(); + // TODO add clap and argument for date let start = Local .from_local_datetime( &NaiveDate::from_ymd_opt(2023, 7, 1) - .ok_or_else(|| format_err!("Invallid date!"))? + .ok_or_else(|| format_err!("Invalid date!"))? .and_hms_opt(0, 0, 0) .expect("Failed to construct time!"), ) @@ -51,26 +76,50 @@ async fn main() -> Result<()> { }; if let Some(last) = json.last() { - println!( - "Checking {:?} against {:?}: {}", - last.created_at, - start, - last.created_at > start - ); if last.created_at > start { max_id.replace(last.id.clone()); continue; } } println!( - "{:#?}", + "{}", json.iter() .filter(|json| start <= json.created_at && json.created_at <= end) - .map(|json| Post { - content: parse_html(&json.content), - created_at: json.created_at + .map(Post::from) + .map(|post| { + format!( + "{} ({}) +> {}", + post.created_at.format("%H:%M"), + post.id, + post.content + ) }) - .collect::>() + .collect::>() + .join("\n\n") + ); + let context = client + .get_status_context(String::from("110638913257555200"), None) + .await?; + println!( + "{}", + context + .json + .descendants + .iter() + .map(Post::from) + .map(|post| { + format!( + "> +> {} ({}) +>> {}", + post.created_at.format("%H:%M"), + post.id, + post.content + ) + }) + .collect::>() + .join("\n") ); break; }