blob: 10f0e0c5ae0636059576063deebc1738d61a42c8 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
// 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 = get(app).await?;
display_fmt_and_less(description).await?;
Ok(())
}
pub async fn get(app: &App) -> Result<String> {
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",
);
Ok(info_json
.description
.unwrap_or("<No description>".to_owned()))
}
|