From 98317a5c95e8f3f4a6d36f62651965e269f1ea9a Mon Sep 17 00:00:00 2001 From: Matheus Albino Date: Sun, 23 Jun 2024 04:50:38 -0300 Subject: [PATCH] Adds tmux parallel thingy to gdl-update-todo.sh --- scripts/shell/gdl-update-todo.sh | 87 ++++++++++++++++++++++++++++++-- 1 file changed, 82 insertions(+), 5 deletions(-) diff --git a/scripts/shell/gdl-update-todo.sh b/scripts/shell/gdl-update-todo.sh index 1a1122f..31e7b3c 100755 --- a/scripts/shell/gdl-update-todo.sh +++ b/scripts/shell/gdl-update-todo.sh @@ -7,24 +7,33 @@ show_help() { echo "Usage: $0 [--custom-grep-search|-c ]" echo "Options:" # echo " --no-abort-on-found (optional) The script will not update each gallery download until it finds an already downloaded file." - # echo " --parallel (optional) The script will update each gallery download in parallel, with background jobs." + # echo " --parallel-jobs (optional) The script will update each gallery download in parallel, with multiple background jobs running on your operating system." + # echo " --parallel-tmux (optional) The script will update each gallery download in parallel, with a tmux session with multiple tabs and panels." echo " --custom-grep-search|-c (optional) Includes a string to filter the URLs." } should_abort_on_found=true -should_parallel_download=true +should_use_parallel_downloads=false +should_use_parallel_tmux=true custom_grep_search='' while [ "$#" -gt 0 ]; do case "$1" in --help|-h) show_help; exit ;; # --no-abort-on-found) should_abort_on_found=false; shift ;; - # --parallel) should_parallel_download=true; shift ;; + # --parallel-jobs) should_use_parallel_downloads=true; shift ;; + # --parallel-tmux) should_use_parallel_tmux=true; shift ;; --custom-grep-search|-c) custom_grep_search="$2"; shift 2 ;; *) shift ;; esac done +if $should_use_parallel_downloads && $should_use_parallel_tmux; then + echo "Only one (or none) of these parameters should be used:" + echo " --parallel-jobs" + echo " --parallel-tmux" +fi + gallery_dl_path=/mnt/e/home/Documents/data-hoarding cd "$gallery_dl_path" @@ -72,10 +81,12 @@ fi sleep 5 & +commands_list=() + for url in ${urls[@]}; do gdl_command="$gdl_command_base $url" - if $should_parallel_download; then + if $should_use_parallel_downloads; then gdl_command+=' &' fi @@ -85,5 +96,71 @@ for url in ${urls[@]}; do echo " $gdl_command" fi - eval $gdl_command + if $should_use_parallel_tmux; then + # commands_list+=("$gdl_command") + commands_list+=("$gdl_command") + else + eval $gdl_command + fi done + +# debug +if false; then + commands_list=( + "echo foo1" + "echo foo2" + "echo foo3" + "echo foo4" + "echo foo5" + "echo foo6" + "echo foo7" + "echo foo8" + "echo foo9" + ) +fi + +# debug +if false; then + echo "Commands:" + + for ((i = 0; i < ${#commands_list[@]}; i++)); do + command_to_run="${commands_list[$i]}" + + echo " $command_to_run" + done + + exit 0 +fi + +if $should_use_parallel_tmux; then + session_name="tmp_gdl-update-todo-`uuidgen | sed 's/[-]//g' | head -c 10; echo;`" + + tmux new-session -d -s $session_name + + current_window_num=0 + current_panel_num=0 + + for ((i = 0; i < ${#commands_list[@]}; i++)); do + command_to_run="${commands_list[$i]}" + + if [ "$i" -eq 0 ] || [ $(( i % 4 )) -eq 0 ]; then + if [ "$i" -ne 0 ]; then + tmux new-window -t $session_name + fi + + ((current_window_num++)) + current_panel_num=1 + + tmux split-window -v -t $session_name + tmux select-pane -t $session_name:$current_window_num.1 + tmux split-window -h -t $session_name + tmux select-pane -t $session_name:$current_window_num.3 + tmux split-window -h -t $session_name + fi + + tmux select-pane -t $session_name:$current_window_num.$current_panel_num + tmux send-keys -t $session_name "$command_to_run" Enter + + ((current_panel_num++)) + done +fi