aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/main.rs b/src/main.rs
index ba834ce..9ed67cf 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -8,7 +8,7 @@ use std::str::FromStr;
use std::sync::atomic::{AtomicBool, Ordering};
use anyhow::{anyhow, Context, Error, Result};
-use chrono::{DateTime, TimeZone, Utc};
+use chrono::{DateTime, Duration, TimeZone, Utc};
use colored::Colorize;
use log::debug;
use regex::Regex;
@@ -156,6 +156,8 @@ pub struct LogResult {
log_file: PathBuf,
/// The time of the recording.
time: DateTime<Utc>,
+ /// The duration of the fight.
+ duration: Duration,
/// The boss.
boss: Option<Boss>,
/// A vector of all participating players.
@@ -550,9 +552,17 @@ fn extract_info(path: &Path, log: &Log) -> LogResult {
.collect::<Vec<Player>>();
players.sort();
+ let duration = log
+ .local_end_timestamp()
+ .and_then(|end| log.local_start_timestamp().map(|start| end - start))
+ .map(|x| x as i64)
+ .map(Duration::seconds)
+ .unwrap_or_else(Duration::zero);
+
LogResult {
log_file: path.to_path_buf(),
time: Utc.timestamp(i64::from(log.local_end_timestamp().unwrap_or(0)), 0),
+ duration,
boss,
players,
outcome: get_fight_outcome(log),