aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-12-14 12:32:49 +0100
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-12-14 12:32:49 +0100
commit00ce7b46ba96f97247d339e67b9ffc503d32100d (patch)
tree73ea02db747d78c8e4866a49baa601efdf651fd5
parentrefactor(yt/comments): Move the display code to a separate function (diff)
downloadyt-00ce7b46ba96f97247d339e67b9ffc503d32100d.zip
feat(yt/description): Init
-rw-r--r--yt/src/description/mod.rs47
-rw-r--r--yt/src/main.rs4
2 files changed, 49 insertions, 2 deletions
diff --git a/yt/src/description/mod.rs b/yt/src/description/mod.rs
new file mode 100644
index 0000000..527fa8e
--- /dev/null
+++ b/yt/src/description/mod.rs
@@ -0,0 +1,47 @@
+// yt - A fully featured command line YouTube client
+//
+// Copyright (C) 2024 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+// 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 <https://www.gnu.org/licenses/gpl-3.0.txt>.
+
+use crate::{
+ comments::output::display_fmt_and_less,
+ storage::video_database::{
+ getters::{get_currently_playing_video, get_video_info_json},
+ Video,
+ },
+ unreachable::Unreachable,
+ App,
+};
+
+use anyhow::{bail, Result};
+use yt_dlp::wrapper::info_json::InfoJson;
+
+pub async fn description(app: &App) -> Result<()> {
+ let description = {
+ let currently_playing_video: Video =
+ if let Some(video) = get_currently_playing_video(app).await? {
+ video
+ } else {
+ bail!("Could not find a currently playing video!");
+ };
+
+ let info_json: InfoJson = get_video_info_json(&currently_playing_video)
+ .await?
+ .unreachable(
+ "A currently *playing* must be cached. And thus the info.json should be available",
+ );
+
+ info_json
+ .description
+ .unwrap_or("<No description>".to_owned())
+ };
+
+ display_fmt_and_less(description).await?;
+
+ Ok(())
+}
diff --git a/yt/src/main.rs b/yt/src/main.rs
index 3833b79..fbfdac0 100644
--- a/yt/src/main.rs
+++ b/yt/src/main.rs
@@ -43,6 +43,7 @@ pub mod cache;
pub mod comments;
pub mod config;
pub mod constants;
+pub mod description;
pub mod download;
pub mod select;
pub mod status;
@@ -237,8 +238,7 @@ async fn main() -> Result<()> {
comments::comments(&app).await?;
}
Command::Description {} => {
- todo!()
- // description::description(&app).await?;
+ description::description(&app).await?;
}
}