about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--hm/soispha/pkgs/scripts.nix10
-rwxr-xr-xhm/soispha/pkgs/scripts/wrappers/yts61
2 files changed, 71 insertions, 0 deletions
diff --git a/hm/soispha/pkgs/scripts.nix b/hm/soispha/pkgs/scripts.nix
index 0b32a9c1..e9c70966 100644
--- a/hm/soispha/pkgs/scripts.nix
+++ b/hm/soispha/pkgs/scripts.nix
@@ -214,6 +214,15 @@
     path = "wrappers";
     dependencies = builtins.attrValues {inherit (pkgs) gawk expect yt-dlp;};
   };
+  yts-scr = write_script {
+    name = "yts";
+    path = "wrappers";
+    keep_path = true; # We need neovim
+    dependencies = builtins.attrValues {
+      inherit (pkgs) ytcc jq gawk;
+      inherit ytc-scr;
+    };
+  };
 in [
   # llp-scr # TODO: see above
   aumo-scr
@@ -232,4 +241,5 @@ in [
   virsh-del-scr
   ytc-scr
   yti-scr
+  yts-scr
 ]
diff --git a/hm/soispha/pkgs/scripts/wrappers/yts b/hm/soispha/pkgs/scripts/wrappers/yts
new file mode 100755
index 00000000..5abecb9b
--- /dev/null
+++ b/hm/soispha/pkgs/scripts/wrappers/yts
@@ -0,0 +1,61 @@
+#!/usr/bin/env dash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="1.10.0" . %SHELL_LIBRARY_PATH
+
+TASK_UUID=ce4f9e07-8324-4570-8be6-967955e9271e
+
+help_text="
+#
+# Commands:
+# w, watch <id> = watch id
+# d, drop <id> = mark id as watched
+# p, pick <id> = leave id as is; This is a noop
+#
+# These lines can be re-ordered; they are executed from top to bottom.
+# vim: ft=gitrebase"
+
+table="$(ytcc --output json list | jq --raw-output 'map("pick \(.id) \(.title) (\(.playlists | map(.name) | join(", "))) [\(.duration | gsub("^\\s+|\\s+$";""))]") | join("\n")')"
+
+selection_file="$(mktmp)";
+
+task start "$TASK_UUID"
+
+echo "$table" > "$selection_file";
+echo "$help_text" >> "$selection_file";
+
+$EDITOR "$selection_file"
+
+ids=""
+is_first=true;
+while read -r line; do
+    cmd="$(echo "$line" | awk '{print $1}')";
+    case "$cmd" in
+        "#" )
+            # This is a comment, do nothing here
+            ;;
+        "pick" | "p")
+            # noop do nothing here
+            ;;
+        "drop" | "d")
+            id="$(echo "$line" | awk '{print $2}')";
+            ytcc mark "$id";
+            dbg "Marked as watched: $id"
+            ;;
+        "watch" | "w")
+            id="$(echo "$line" | awk '{print $2}')";
+            if [ "$is_first" = "true" ]; then
+                ids="$id";
+            else
+                ids="$ids,$id";
+            fi
+            dbg "Added to be watched: $id"
+            is_first=false
+            ;;
+    esac
+done < "$selection_file"
+
+[ "$ids" != "" ] && ytc "$ids";
+
+task stop "$TASK_UUID"
+# vim: ft=sh