Create the entry if it doesn't exist.

This commit is contained in:
Thomas Gideon 2023-09-06 10:30:50 -04:00
parent 8a9a3174ab
commit 1dd5f7be6a
2 changed files with 23 additions and 5 deletions

View file

@ -25,7 +25,10 @@ pub(super) async fn format_status(
time_prefix = time_prefix, time_prefix = time_prefix,
timestamp = status.created_at.with_timezone(&Local).format("%H:%M"), timestamp = status.created_at.with_timezone(&Local).format("%H:%M"),
ancestor_prefix = ancestor_prefix, ancestor_prefix = ancestor_prefix,
status = apply_block_quote(depth, (&status.content).trim()), status = apply_block_quote(
depth,
(status.content.replace("'", "'").replace("\"_", "\"")).trim()
),
attachments = format_attachments(depth, &status.media_attachments) attachments = format_attachments(depth, &status.media_attachments)
); );
let Response { json, .. } = client.get_status_context(status.id.clone(), None).await?; let Response { json, .. } = client.get_status_context(status.id.clone(), None).await?;

View file

@ -1,4 +1,4 @@
use anyhow::Result; use anyhow::{Context, Result};
use chrono::{DateTime, Local, Utc}; use chrono::{DateTime, Local, Utc};
use clap::{arg, command, Parser}; use clap::{arg, command, Parser};
use log::{debug, trace}; use log::{debug, trace};
@ -9,6 +9,7 @@ use megalodon::{
response::Response, response::Response,
Megalodon, Megalodon,
}; };
use tokio::fs::try_exists;
use tokio_stream::{iter, StreamExt}; use tokio_stream::{iter, StreamExt};
use std::{env, fs::File, io::prelude::*}; use std::{env, fs::File, io::prelude::*};
@ -121,9 +122,23 @@ async fn main() -> Result<()> {
reversed.reverse(); reversed.reverse();
if let Some(output_dir) = output_dir { if let Some(output_dir) = output_dir {
let output = format!("{}{}.md", output_dir, date); let output = format!("{}/{}.md", output_dir.trim_end_matches("/"), date);
let mut f = File::options().append(true).open(&output)?; let mut f = match try_exists(&output).await {
f.write_all(&reversed.join("\n\n").as_bytes())?; Ok(exists) if exists => {
debug!("Appending {}", output);
File::options().append(true).open(&output)?
}
_ => {
debug!("Writing {}", output);
File::options()
.create(true)
.append(true)
.open(&output)
.with_context(|| format!("Failed to create {}", output))?
}
};
f.write_all(&reversed.join("\n\n").as_bytes())
.with_context(|| format!("Failed to write all to {}", output))?;
println!("Appended matching posts to {}.", output); println!("Appended matching posts to {}.", output);
} else { } else {
println!("{}", reversed.join("\n\n")); println!("{}", reversed.join("\n\n"));