diff options
author | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2024-12-14 12:32:49 +0100 |
---|---|---|
committer | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2024-12-14 12:32:49 +0100 |
commit | 00ce7b46ba96f97247d339e67b9ffc503d32100d (patch) | |
tree | 73ea02db747d78c8e4866a49baa601efdf651fd5 | |
parent | refactor(yt/comments): Move the display code to a separate function (diff) | |
download | yt-00ce7b46ba96f97247d339e67b9ffc503d32100d.tar.gz yt-00ce7b46ba96f97247d339e67b9ffc503d32100d.zip |
feat(yt/description): Init
-rw-r--r-- | yt/src/description/mod.rs | 47 | ||||
-rw-r--r-- | yt/src/main.rs | 4 |
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(¤tly_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?; } } |