about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-12-14 12:47:18 +0100
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-12-14 12:58:46 +0100
commit7105c4f672456a2b928279a6f24b97d2ebf65a54 (patch)
tree755a1008eb84e627c561c31405de26bca3fc37bb
parentrefactor(yt/config): Rename `local_comments_length` to `local_display_length` (diff)
downloadyt-7105c4f672456a2b928279a6f24b97d2ebf65a54.tar.gz
yt-7105c4f672456a2b928279a6f24b97d2ebf65a54.zip
refactor(yt/description): Provide `get` function, returning a string
This allows code to get the description without shelling out.
-rw-r--r--yt/src/description/mod.rs37
1 files changed, 19 insertions, 18 deletions
diff --git a/yt/src/description/mod.rs b/yt/src/description/mod.rs
index 527fa8e..10f0e0c 100644
--- a/yt/src/description/mod.rs
+++ b/yt/src/description/mod.rs
@@ -22,26 +22,27 @@ 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 description = get(app).await?;
+    display_fmt_and_less(description).await?;
 
-        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",
-            );
+    Ok(())
+}
 
-        info_json
-            .description
-            .unwrap_or("<No description>".to_owned())
-    };
+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!");
+        };
 
-    display_fmt_and_less(description).await?;
+    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",
+        );
 
-    Ok(())
+    Ok(info_json
+        .description
+        .unwrap_or("<No description>".to_owned()))
 }