From 52e99b38eae6b4f3cb991342ff9ba9abbab9e42c Mon Sep 17 00:00:00 2001 From: Benedikt Peetz Date: Fri, 23 Aug 2024 13:06:00 +0200 Subject: refactor(yt_dlp): Also move the `crates` subdirectory --- yt_dlp/src/duration.rs | 71 -------------------------------------------------- 1 file changed, 71 deletions(-) delete mode 100644 yt_dlp/src/duration.rs (limited to 'yt_dlp/src/duration.rs') diff --git a/yt_dlp/src/duration.rs b/yt_dlp/src/duration.rs deleted file mode 100644 index cd7454b..0000000 --- a/yt_dlp/src/duration.rs +++ /dev/null @@ -1,71 +0,0 @@ -// yt - A fully featured command line YouTube client -// -// Copyright (C) 2024 Benedikt Peetz -// SPDX-License-Identifier: GPL-3.0-or-later -// -// This file is part of Yt. -// -// You should have received a copy of the License along with this program. -// If not, see . - -// TODO: This file should be de-duplicated with the same file in the 'yt' crate <2024-06-25> -pub struct Duration { - time: u32, -} - -impl From<&str> for Duration { - fn from(v: &str) -> Self { - let buf: Vec<_> = v.split(':').take(2).collect(); - Self { - time: (buf[0].parse::().expect("Should be a number") * 60) - + buf[1].parse::().expect("Should be a number"), - } - } -} - -impl From> for Duration { - fn from(value: Option) -> Self { - Self { - time: value.unwrap_or(0.0).ceil() as u32, - } - } -} - -impl std::fmt::Display for Duration { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> { - const SECOND: u32 = 1; - const MINUTE: u32 = 60 * SECOND; - const HOUR: u32 = 60 * MINUTE; - - let base_hour = self.time - (self.time % HOUR); - let base_min = (self.time % HOUR) - ((self.time % HOUR) % MINUTE); - let base_sec = (self.time % HOUR) % MINUTE; - - let h = base_hour / HOUR; - let m = base_min / MINUTE; - let s = base_sec / SECOND; - - if self.time == 0 { - write!(f, "0s") - } else if h > 0 { - write!(f, "{h}h {m}m") - } else { - write!(f, "{m}m {s}s") - } - } -} -#[cfg(test)] -mod test { - use super::Duration; - - #[test] - fn test_display_duration_1h() { - let dur = Duration { time: 60 * 60 }; - assert_eq!("[1h 0m]".to_owned(), dur.to_string()); - } - #[test] - fn test_display_duration_30min() { - let dur = Duration { time: 60 * 30 }; - assert_eq!("[30m 0s]".to_owned(), dur.to_string()); - } -} -- cgit 1.4.1