#!/usr/bin/env dash # shellcheck source=/dev/null SHELL_LIBRARY_VERSION="1.10.2" . %SHELL_LIBRARY_PATH TASK_UUID=ce4f9e07-8324-4570-8be6-967955e9271e cleanup() { task stop "$TASK_UUID" } trap cleanup EXIT help_text=" # # Commands: # w, watch = watch id # d, drop = mark id as watched # p, pick = 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"; # vim: ft=sh