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,
timestamp = status.created_at.with_timezone(&Local).format("%H:%M"),
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)
);
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 clap::{arg, command, Parser};
use log::{debug, trace};
@ -9,6 +9,7 @@ use megalodon::{
response::Response,
Megalodon,
};
use tokio::fs::try_exists;
use tokio_stream::{iter, StreamExt};
use std::{env, fs::File, io::prelude::*};
@ -121,9 +122,23 @@ async fn main() -> Result<()> {
reversed.reverse();
if let Some(output_dir) = output_dir {
let output = format!("{}{}.md", output_dir, date);
let mut f = File::options().append(true).open(&output)?;
f.write_all(&reversed.join("\n\n").as_bytes())?;
let output = format!("{}/{}.md", output_dir.trim_end_matches("/"), date);
let mut f = match try_exists(&output).await {
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);
} else {
println!("{}", reversed.join("\n\n"));