diff --git a/scripts/.local/bin/vidl b/scripts/.local/bin/vidl index 67d047b..f5b4e36 100755 --- a/scripts/.local/bin/vidl +++ b/scripts/.local/bin/vidl @@ -2,6 +2,13 @@ # download a file if it does not exist in the archive alread # otherwise just re-link it from the archive +DL_FOLDER="${DL_FOLDER:-${XDG_VIDEOS_DIR:-$HOME/videos}}/inbox" +ARCHIVE_FOLDER="${ARCHIVE_FOLDER:-${XDG_VIDEOS_DIR:-$HOME/videos}}/archive" +YT_DL_CMD="${YT_DL_CMD:-yt-dlp}" +yt_default_opts=(-f "best[height\<=1080]" --retries 15 --embed-subs --sub-lang "en,de,es,fr") +declare -a YT_DL_OPTS=${YT_DL_OPTS:-( "${yt_default_opts[@]}" )} +YT_DL_TITLE="""${YT_DL_TITLE:-%(channel)s_%(title)s_%(id)s}""" + show_help() { printf """ archive.sh: Hard linking your stuff. @@ -15,24 +22,19 @@ Point it to a link you want downloaded. Options: - -h Display this help. + -h Display this help. - -d Directory to check for existence of file and archive to if needed. - If this is passed will not download existing archived files again. + -d Directory to check for existence of file and archive to if needed. - -f Directory to download to. - - -c Clear existing download queue. + -f Directory to download to. -t Point to youtube-dl command to use. Can be command or absolute link. By default will use \`yt-dlp\` which is a more up to date fork of the - youtube-dl program. + program. """ } -urls=("$@") - -while getopts "t:f:d:hc" opt; do +while getopts "t:f:d:h" opt; do case "$opt" in # v) verbose=1 # ;; @@ -45,9 +47,6 @@ while getopts "t:f:d:hc" opt; do d) ARCHIVE_FOLDER="$OPTARG" ;; - c) - ONLY_DO=clear - ;; h | \? | *) show_help exit 0 @@ -56,15 +55,7 @@ while getopts "t:f:d:hc" opt; do done shift $((OPTIND - 1)) -get_ytdl_fname() { - yt_dl_fname=$("$YT_DL_CMD" --get-filename -o "$YT_DL_TITLE" "$*") - if [ -z "$yt_dl_fname" ]; then - echo Could not get video filename, error with youtube-dl. - exit 1 - fi -} - -_call_archive() { # 1=new_file, 2=archive_location +_call_archive() { command -v archive >/dev/null 2>&1 || { echo "archive command not found." exit 1 @@ -73,119 +64,43 @@ _call_archive() { # 1=new_file, 2=archive_location } vid_ext="\(mp4\|avi\|webm\|mkv\|mpe?g\|3gp\|m4a\)" -_findfile() { # 1=directory, 2=file - find "$1" -type f -name "$2.*" | sed -ne "/$2\.$vid_ext$/Ip" +_findfile() { + dir="$1" + fname="$2" + find "$dir" -type f -name "$fname.*" | sed -ne "/$fname\.$vid_ext$/Ip" } -_alreadyexists() { # 1=video_regex - if [ ! -d "$ARCHIVE_FOLDER" ]; then return 0; fi - local found - found=$(_findfile "$ARCHIVE_FOLDER" "$1") - if [ -n "$found" ]; then - return 0 - else - return 1 - fi -} - -_download_cmd() { +YT_DL_TITLE="%(channel)s_%(title)s_%(id)s" +_download() { "$YT_DL_CMD" \ -o "$DL_FOLDER/$YT_DL_TITLE.%(ext)s" \ "${YT_DL_OPTS[@]}" \ - "$*" + "$url" } -download() { # 1=url - # # download the video to download folder - if ! _alreadyexists "$yt_dl_fname"; then - _download_cmd "$*" +url="$*" +dl_fn=$("$YT_DL_CMD" --get-filename -o "$YT_DL_TITLE" "$url") +video_file_regex="${dl_fn}" - # yt-dl never knows the exact filename in advance - file=$(_findfile "$DL_FOLDER" "$yt_dl_fname") - if [ -z "$file" ]; then exit 1; fi - _call_archive "$file" "$ARCHIVE_FOLDER" - # only link old file if one exists - else - archive_file=$(_findfile "$ARCHIVE_FOLDER" "$yt_dl_fname") - echo "$archive_file" | while read -r file; do - echo "file $file exists, not downloading duplicate" - _call_archive "$file" "$DL_FOLDER" - done - fi -} +if [ -z "$dl_fn" ]; then + echo Could not get video filename, error with youtube-dl. + exit 1 +fi -setup() { - DL_FOLDER="${DL_FOLDER:-${XDG_VIDEOS_DIR:-$HOME/videos}}/inbox" - ARCHIVE_FOLDER="${ARCHIVE_FOLDER:-${XDG_VIDEOS_DIR:-$HOME/videos}}/archive" - YT_DL_CMD="${YT_DL_CMD:-yt-dlp}" - yt_default_opts=(-f "best[height\<=1080]" --retries 15 --embed-subs --sub-lang "en,de,es,fr") - declare -a YT_DL_OPTS=${YT_DL_OPTS:-( "${yt_default_opts[@]}" )} - YT_DL_TITLE="${YT_DL_TITLE:-%(channel)s_%(title)s_%(id)s}" # this title needs to be without extension +alreadyexists=$(_findfile "$ARCHIVE_FOLDER" "$video_file_regex") - queue_file="${XDG_CACHE_HOME:-$HOME/.cache}/vidl_queue" - if [ ! -f "$queue_file" ]; then - mkdir -p $(dirname "$queue_file") - touch "$queue_file" - fi - lock_dir="${XDG_CACHE_HOME:-$HOME/.cache}/vidl_lock" -} +# # download the video to download folder +if [ "$alreadyexists" = "" ] || [ -z "$alreadyexists" ]; then + _download -is_in_queue() { # 1=url - [ -f "$queue_file" ] || return 1 - grep -q "$1" "$queue_file" -} - -add_to_queue() { # 1=url - if is_in_queue "$1"; then return; fi - echo "$1" >>"$queue_file" - echo "added $url to queue." -} - -remove_from_queue() { # 1=url - sed -i.bak -e "\|$1|d" "$queue_file" -} - -clear_queue() { - rm "$queue_file" -} - -remove_lock() { - if ! rmdir $lock_dir; then - echo "Failed to remove lock '$lock_dir'. Please remove manually before next run." - exit 1 - fi -} - -is_only_instance() { - if mkdir $lock_dir 2>/dev/null; then - trap "remove_lock" EXIT - return 0 - else - return 1 - fi -} - -main() { - setup - if [ "$ONLY_DO" = "clear" ]; then - clear_queue - exit - fi - - for url in $*; do - add_to_queue "$url" + # yt-dl never knows the exact filename in advance + file=$(_findfile "$DL_FOLDER" "$video_file_regex") + if [ -z "$file" ]; then exit 1; fi + _call_archive "$file" "$ARCHIVE_FOLDER" +# only link old file if one exists +else + echo "$alreadyexists" | while read -r file; do + echo "file $file exists, not downloading duplicate" + _call_archive "$file" "$DL_FOLDER" done - if is_only_instance; then - echo "Download starting..." - while read -r line; do - get_ytdl_fname "$line" - download "$line" - remove_from_queue "$line" - done <"$queue_file" - else - echo "Download already running, only adding to queue." - fi - echo "Download done..." -} - -main "${urls[@]}" +fi diff --git a/tmux/.config/tmux/sessions/dot.session b/tmux/.config/tmux/sessions/dot.session index abb88c6..c35e349 100644 --- a/tmux/.config/tmux/sessions/dot.session +++ b/tmux/.config/tmux/sessions/dot.session @@ -1,5 +1,5 @@ rename-window dot-git -send-keys "cd ~/.dotfiles; while true; do [[ -z $(git status -s) ]] && { fd -t f --hidden | entr -cd tea issue ;} || { fd -t f --hidden | entr -cd git -c color.ui=always diff ;} ; done" +send-keys "cd ~/.dotfiles; while true; do fd -t f --hidden | entr -cd git -c color.ui=always diff; done" C-m split-window -h "cd ~/.dotfiles; while true; do fd -t f --hidden --exclude .git/objects | entr -cd git -c color.ui=always status; done" split-window -v send-keys "cd ~/.dotfiles; clear" C-m L C-m diff --git a/zathura/.config/zathura/zathurarc b/zathura/.config/zathura/zathurarc index d9a823a..45fc1c7 100644 --- a/zathura/.config/zathura/zathurarc +++ b/zathura/.config/zathura/zathurarc @@ -1,5 +1,3 @@ -include colorscheme - set recolor "true" set selection-clipboard "clipboard" @@ -7,3 +5,4 @@ map r reload map R rotate map p print +include colorscheme