about summary refs log tree commit diff stats
path: root/hm/soispha/pkgs/scripts/wrappers/yts
blob: b5edf52caa06942a9d53c68aa3482cac79cbd937 (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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#!/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 <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";

# vim: ft=sh