about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-08-23 18:25:09 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-08-24 11:45:12 +0200
commitcc07fd430f5860481d6dd7e9050bf32da11d76ce (patch)
tree8d6cba95a1522a6bab731e4e839e346cd260605c
parentfeat(select/display): Also show the video hash when color displaying it (diff)
downloadyt-cc07fd430f5860481d6dd7e9050bf32da11d76ce.tar.gz
yt-cc07fd430f5860481d6dd7e9050bf32da11d76ce.zip
feat(select/cmds): Add a `watched` command
Otherwise, running `yt select file --done` would mark all your already
wached stuff to be watched again.
-rw-r--r--src/cli.rs6
-rw-r--r--src/storage/video_database/mod.rs22
2 files changed, 22 insertions, 6 deletions
diff --git a/src/cli.rs b/src/cli.rs
index 3883cb1..4e64657 100644
--- a/src/cli.rs
+++ b/src/cli.rs
@@ -234,6 +234,12 @@ pub enum SelectCommand {
         shared: SharedSelectionCommandArgs,
     },
 
+    /// Mark the video given by the hash as already watched
+    Watched {
+        #[command(flatten)]
+        shared: SharedSelectionCommandArgs,
+    },
+
     /// Open the video URL in Firefox's `timesinks.youtube` profile
     Url {
         #[command(flatten)]
diff --git a/src/storage/video_database/mod.rs b/src/storage/video_database/mod.rs
index da08f8f..2a52bb7 100644
--- a/src/storage/video_database/mod.rs
+++ b/src/storage/video_database/mod.rs
@@ -107,17 +107,27 @@ pub enum VideoStatus {
 }
 
 impl VideoStatus {
+    pub const ALL: [Self; 6] = [
+        Self::Pick,
+        VideoStatus::Watch,
+        VideoStatus::Cached,
+        VideoStatus::Watched,
+        VideoStatus::Drop,
+        VideoStatus::Dropped,
+    ];
+
     pub fn as_command(&self) -> &str {
         // NOTE: Keep the serialize able variants synced with the main `select` function <2024-06-14>
+        // Also try to ensure, that the strings have the same length
         match self {
-            VideoStatus::Pick => "pick",
+            VideoStatus::Pick => "pick   ",
 
-            VideoStatus::Watch => "watch",
-            VideoStatus::Cached => "watch",
-            VideoStatus::Watched => "watch",
+            VideoStatus::Watch => "watch  ",
+            VideoStatus::Cached => "watch  ",
+            VideoStatus::Watched => "watched",
 
-            VideoStatus::Drop => "drop",
-            VideoStatus::Dropped => "drop",
+            VideoStatus::Drop => "drop   ",
+            VideoStatus::Dropped => "drop   ",
         }
     }