From a5ed861c4d1ee0902650eb6aa68c5ffa17e7fa48 Mon Sep 17 00:00:00 2001 From: LibreMiami Date: Sat, 26 Jun 2021 20:23:11 -0400 Subject: [PATCH 1/2] Modify the strings of referenced programs. Prefix the strings of referenced programs with the string "guix-", so that they can be easily substituted with absolute paths using a custom-phase. --- ytfzf | 110 +++++++++++++++++++++++++++++----------------------------- 1 file changed, 55 insertions(+), 55 deletions(-) diff --git a/ytfzf b/ytfzf index f4d2e0d..28e320b 100755 --- a/ytfzf +++ b/ytfzf @@ -49,19 +49,19 @@ cache_dir=${YTFZF_CACHE-${cache_dir-$HOME/.cache/ytfzf}} #video type preference (mp4/1080p, mp4/720p, etc..) video_pref=${YTFZF_PREF-${video_pref-}} #the menu to use instead of fzf when -D is specified -external_menu=${YTFZF_EXTMENU-${external_menu-dmenu -i -l 30 -p Search:}} +external_menu=${YTFZF_EXTMENU-${external_menu-guix-dmenu -i -l 30 -p Search:}} #number of columns (characters on a line) the external menu can have #necessary for formatting text for external menus external_menu_len=${YTFZF_EXTMENU_LEN-${external_menu_len-220}} #player settings (players need to support streaming with youtube-dl) #player to use for watching the video -video_player=${YTFZF_PLAYER-${video_player-mpv}} +video_player=${YTFZF_PLAYER-${video_player-guix-mpv}} #if YTFZF_PREF is specified, use this player instead -video_player_format=${YTFZF_PLAYER_FORMAT-${video_player_format-mpv --ytdl-format=}} +video_player_format=${YTFZF_PLAYER_FORMAT-${video_player_format-guix-mpv --ytdl-format=}} #player to use for audio only -audio_player=${YTFZF_AUDIO_PLAYER-${audio_player-mpv --no-video}} +audio_player=${YTFZF_AUDIO_PLAYER-${audio_player-guix-mpv --no-video}} #the command to use for displaying thumbnails -thumb_disp_method=${YTFZF_THUMB_DISP_METHOD-${thumb_disp_method-ueberzug}} +thumb_disp_method=${YTFZF_THUMB_DISP_METHOD-${thumb_disp_method-guix-ueberzug}} #Storing the argument and location for autogenerated subtitles [ -z "$YTFZF_SUBT_NAME" ] && YTFZF_SUBT_NAME="" #Stores the language for the auto genereated subtitles @@ -177,12 +177,12 @@ dep_ck () { done unset Dep } -dep_ck "jq" "youtube-dl" "curl" +dep_ck "guix-jq" "guix-youtube-dl" "guix-curl" #only check for mpv if $YTFZF_PLAYER is set to it #don't check $YTFZF_PLAYER as it could be multiple commands -[ "$video_player" = "mpv" ] && dep_ck "mpv" +[ "$video_player" = "guix-mpv" ] && dep_ck "guix-mpv" ############################ # Help Texts # @@ -326,8 +326,8 @@ print_info () { } print_error () { - [ $ext_menu_notifs -eq 1 ] && notify-send "error" "$*" || printf "\033[31m$*\033[0m" >&2 - [ $ext_menu_notifs -eq 1 ] && notify-send "Check for new versions and report at: https://github.com/pystardust/ytfzf\n" || printf "Check for new versions and report at: https://github.com/pystardust/ytfzf\n" >&2 + [ $ext_menu_notifs -eq 1 ] && guix-notify-send "error" "$*" || printf "\033[31m$*\033[0m" >&2 + [ $ext_menu_notifs -eq 1 ] && guix-notify-send "Check for new versions and report at: https://github.com/pystardust/ytfzf\n" || printf "Check for new versions and report at: https://github.com/pystardust/ytfzf\n" >&2 } ############################ @@ -398,8 +398,8 @@ format_fzf () { format_menu () { if [ "$is_ext_menu" -eq 0 ]; then #dep_ck fzf here because it is only necessary to use here - dep_ck "fzf" - menu_command='column -t -s "$tab_space" | fzf -m --bind change:top --tabstop=1 --layout=reverse --delimiter="$tab_space" --nth=1,2 --expect="$shortcuts" $FZF_DEFAULT_OPTS' + dep_ck "guix-fzf" + menu_command='column -t -s "$tab_space" | guix-fzf -m --bind change:top --tabstop=1 --layout=reverse --delimiter="$tab_space" --nth=1,2 --expect="$shortcuts" $FZF_DEFAULT_OPTS' format_fzf else # Dmenu doesn't render tabs so removing it @@ -462,7 +462,7 @@ WIDTH=$FZF_PREVIEW_COLUMNS HEIGHT=$FZF_PREVIEW_LINES start_ueberzug () { [ -e $FIFO ] || { mkfifo "$FIFO" || exit 1 ; } - ueberzug layer --parser json --silent < "$FIFO" & + guix-ueberzug layer --parser json --silent < "$FIFO" & exec 3>"$FIFO" } stop_ueberzug () { @@ -476,12 +476,12 @@ preview_img () { shorturl=${args##*${tab_space}|} shorturl="${shorturl%% *}" - json_obj=$(printf "%s" "$videos_json" | jq '.[]|select( .videoID == "'"$shorturl"'")') + json_obj=$(printf "%s" "$videos_json" | guix-jq '.[]|select( .videoID == "'"$shorturl"'")') IFS=$tab_space read -r title channel duration views date description <<-EOF $( - printf "%s" "$json_obj" | jq -r \ + printf "%s" "$json_obj" | guix-jq -r \ ' [.title,.channel,.duration,.views,.date,.description]|@tsv ' @@ -530,31 +530,31 @@ preview_img () { } > "$FIFO" ;; catimg) printf "\n" - catimg -w "$((thumb_width * 2))" "$IMAGE" ;; + guix-catimg -w "$((thumb_width * 2))" "$IMAGE" ;; jp2a) printf "\n" - jp2a --size="${thumb_width}x$((thumb_height / 2))" --colors --color-depth=24 "$IMAGE" ;; + guix-jp2a --size="${thumb_width}x$((thumb_height / 2))" --colors --color-depth=24 "$IMAGE" ;; jp2a-8) printf "\n" - jp2a --size="${thumb_width}x$((thumb_height / 2))" --colors --color-depth=8 "$IMAGE" ;; + guix-jp2a --size="${thumb_width}x$((thumb_height / 2))" --colors --color-depth=8 "$IMAGE" ;; jp2a-4) printf "\n" - jp2a --size="${thumb_width}x$((thumb_height / 2))" --colors --color-depth=4 "$IMAGE" ;; + guix-jp2a --size="${thumb_width}x$((thumb_height / 2))" --colors --color-depth=4 "$IMAGE" ;; jp2a-gray|jp2a-grey) printf "\n" - jp2a --size="${thumb_width}x$((thumb_height / 2))" "$IMAGE" ;; + guix-jp2a --size="${thumb_width}x$((thumb_height / 2))" "$IMAGE" ;; chafa) printf "\n" - chafa --size="${thumb_width}x${thumb_height}" "$IMAGE" ;; + guix-chafa --size="${thumb_width}x${thumb_height}" "$IMAGE" ;; chafa-gray|chafa-grey) printf "\n" - chafa --size="${thumb_width}x${thumb_height}" --colors=2 "$IMAGE" ;; + guix-chafa --size="${thumb_width}x${thumb_height}" --colors=2 "$IMAGE" ;; chafa-4) printf "\n" - chafa --size="${thumb_width}x${thumb_height}" --colors=16 "$IMAGE" ;; + guix-chafa --size="${thumb_width}x${thumb_height}" --colors=16 "$IMAGE" ;; chafa-8) printf "\n" - chafa --size="${thumb_width}x${thumb_height}" --colors=256 "$IMAGE" ;; + guix-chafa --size="${thumb_width}x${thumb_height}" --colors=256 "$IMAGE" ;; custom) if ! function_exists "handle_display_img"; then printf "\033[031mERROR[#07]: \033[0m\033[1mhandle_display_img\033[0m is not defined" >&2 @@ -585,17 +585,17 @@ download_thumbnails () { if [ "$thumbnail_quality" -eq 1 ]; then image_download () { # higher quality images - curl -s "$Url" -G --data-urlencode "sqp=" > "$thumb_dir/$Name.png" + guix-curl -s "$Url" -G --data-urlencode "sqp=" > "$thumb_dir/$Name.png" } else image_download () { - curl -s "$Url" > "$thumb_dir/$Name.png" + guix-curl -s "$Url" > "$thumb_dir/$Name.png" } fi print_info "Downloading Thumbnails...\n" thumb_urls=$(printf "%s" "$*" |\ - jq -r '.[]|[.thumbs,.videoID]|@tsv' ) + guix-jq -r '.[]|[.thumbs,.videoID]|@tsv' ) while IFS=$tab_space read -r Url Name; do sleep 0.001 @@ -668,7 +668,7 @@ get_yt_html () { link=$1 query=$2 printf "%s" "$( - curl "$link" -s \ + guix-curl "$link" -s \ -G --data-urlencode "search_query=$query" \ -G --data-urlencode "sp=$sp" \ -H 'Authority: www.youtube.com' \ @@ -684,7 +684,7 @@ get_video_data () { # outputs tab and pipe separated fields: title, channel, view count, video length, video upload date, and the video id/url # from the videos_json printf "%s" "$*" |\ - jq -r '.[]| "\(.title)'"$tab_space"'|\(.channel)'"$tab_space"'|\(.views)'"$tab_space"'|\(.duration)'"$tab_space"'|\(.date)'"$tab_space"'|\(.videoID)"' + guix-jq -r '.[]| "\(.title)'"$tab_space"'|\(.channel)'"$tab_space"'|\(.views)'"$tab_space"'|\(.duration)'"$tab_space"'|\(.date)'"$tab_space"'|\(.videoID)"' } scrape_channel () { @@ -723,7 +723,7 @@ scrape_channel () { #gets a list of videos videos_json=$(printf "%s" "$yt_json" |\ - jq '[ .contents | ..|.gridVideoRenderer? | + guix-jq '[ .contents | ..|.gridVideoRenderer? | select(. !=null) | { title: .title.runs[0].text, @@ -736,7 +736,7 @@ scrape_channel () { } ]') - videos_json=$(printf "%s" "$videos_json" | jq '.[0:'$sub_link_count']') + videos_json=$(printf "%s" "$videos_json" | guix-jq '.[0:'$sub_link_count']') printf "%s\n" "$videos_json" >> "$tmp_video_json_file" #checks if it's empty in case it was defined in a config function eg: on_get_search [ -z "$videos_data" ] && videos_data=$(get_video_data "$videos_json") @@ -768,11 +768,11 @@ get_trending_url_data () { scrape_pt () { #gets a list of videos pt_json=$( - curl \ + guix-curl \ -s "https://sepiasearch.org/api/v1/search/videos" \ -G --data-urlencode "search=$*") videos_json=$(printf "%s" "$pt_json" |\ - jq '[ .data | .[] | + guix-jq '[ .data | .[] | { title: .name, channel: .channel.displayName, @@ -829,7 +829,7 @@ scrape_yt () { fi #gets a list of videos - videos_json=$(printf "%s" "$yt_json" | jq '[ .contents| + videos_json=$(printf "%s" "$yt_json" | guix-jq '[ .contents| ..|.videoRenderer? | select(. !=null) | { @@ -844,7 +844,7 @@ scrape_yt () { } ]') - playlist_json=$(printf "%s" "$yt_json" | jq '[ .contents| + playlist_json=$(printf "%s" "$yt_json" | guix-jq '[ .contents| ..|.playlistRenderer? | select(. !=null) | { @@ -919,16 +919,16 @@ user_selection () { #show thumbnail menu elif [ "$show_thumbnails" -eq 1 ] ; then - dep_ck "ueberzug" "fzf" + dep_ck "guix-ueberzug" "guix-fzf" export YTFZF_THUMB_DISP_METHOD="$thumb_disp_method" - [ "$thumb_disp_method" = "ueberzug" ] && start_ueberzug + [ "$thumb_disp_method" = "guix-ueberzug" ] && start_ueberzug #thumbnails only work in fzf, use fzf - menu_command="fzf -m --tabstop=1 --bind change:top --delimiter=\"$tab_space\" \ + menu_command="guix-fzf -m --tabstop=1 --bind change:top --delimiter=\"$tab_space\" \ --nth=1,2 --expect='$shortcuts' $FZF_DEFAULT_OPTS \ --layout=reverse --preview \"sh $0 -U {}\" \ --preview-window \"$PREVIEW_SIDE:50%:noborder:wrap\"" selected_data=$( title_len=200 video_menu "$videos_data" ) - [ "$thumb_disp_method" = "ueberzug" ] && stop_ueberzug + [ "$thumb_disp_method" = "guix-ueberzug" ] && stop_ueberzug # Deletes thumbnails if no video is selected [ -z "$selected_data" ] && clean_up #show regular menu @@ -988,7 +988,7 @@ format_user_selection () { 11) selected_urls=$selected_urls$new_line'https://www.youtube.com/watch?v='$surl ;; 34) selected_urls=$selected_urls$new_line'https://www.youtube.com/playlist?list='$surl ;; 36) - selected_urls=$selected_urls$new_line"$(printf "%s" "$videos_json" | jq '.[].url' | grep -F "$surl" | tr -d '"')" ;; + selected_urls=$selected_urls$new_line"$(printf "%s" "$videos_json" | guix-jq '.[].url' | grep -F "$surl" | tr -d '"')" ;; *) continue ;; esac refined_selected_data=$refined_selected_data$new_line$(printf '%s' "$videos_data" | grep "|$surl" ) @@ -1014,7 +1014,7 @@ print_data () { get_video_format () { # select format if flag given [ $show_format -eq 0 ] && return - formats=$(youtube-dl -F "$(printf "$selected_urls")") + formats=$(guix-youtube-dl -F "$(printf "$selected_urls")") line_number=$(printf "$formats" | grep -n '.*extension resolution.*' | cut -d: -f1) quality=$(printf "$formats \n1 2 xAudio" | awk -v lineno=$line_number 'FNR > lineno {print $3}' | sort -n | awk -F"x" '{print $2 "p"}' | uniq | sed -e "s/Audiop/Audio/" -e "/^p$/d" | eval "$menu_command" | sed "s/p//g") [ -z "$quality" ] && exit; @@ -1026,9 +1026,9 @@ get_video_format () { get_sub_lang () { if [ $auto_caption -eq 1 ]; then #Gets the auto generated subs and stores them in a file - sub_list=$(youtube-dl --list-subs --write-auto-sub "$selected_urls" | sed '/Available subtitles/,$d' | awk '{print $1}' | sed '1d;2d;3d') + sub_list=$(guix-youtube-dl --list-subs --write-auto-sub "$selected_urls" | sed '/Available subtitles/,$d' | awk '{print $1}' | sed '1d;2d;3d') if [ -n "$sub_list" ]; then - [ -n "$selected_sub" ] || selected_sub=$(printf "$sub_list" | eval "$menu_command") && youtube-dl --sub-lang $selected_sub --write-auto-sub --skip-download "$selected_urls" -o /tmp/ytfzf && YTFZF_SUBT_NAME="--sub-file=/tmp/ytfzf.$selected_sub.vtt" || printf "Auto generated subs not available." + [ -n "$selected_sub" ] || selected_sub=$(printf "$sub_list" | eval "$menu_command") && guix-youtube-dl --sub-lang $selected_sub --write-auto-sub --skip-download "$selected_urls" -o /tmp/ytfzf && YTFZF_SUBT_NAME="--sub-file=/tmp/ytfzf.$selected_sub.vtt" || printf "Auto generated subs not available." fi unset sub_list fi @@ -1064,9 +1064,9 @@ open_player () { fi elif [ $is_download -eq 1 ]; then if [ -z "$video_pref" ]; then - youtube-dl "$@" "$YTFZF_SUBT_NAME" + guix-youtube-dl "$@" "$YTFZF_SUBT_NAME" else - youtube-dl -f "$video_pref" "$@" $YTFZF_SUBT_NAME || video_pref= open_player "$@" + guix-youtube-dl -f "$video_pref" "$@" $YTFZF_SUBT_NAME || video_pref= open_player "$@" fi fi } @@ -1200,7 +1200,7 @@ search_history_menu () { #when using an external menu, the search history will be done there choice=$( printf "%s\n" "$search_history" | eval "$external_menu" ) else - choice="$( printf "%s\n" "$search_history" | fzf --prompt="$search_history_prompt" --print-query --no-multi -d '\t' --with-nth=2.. --expect='alt-enter' --bind='tab:replace-query' )" + choice="$( printf "%s\n" "$search_history" | guix-fzf --prompt="$search_history_prompt" --print-query --no-multi -d '\t' --with-nth=2.. --expect='alt-enter' --bind='tab:replace-query' )" fi # first line is the fzf query (what the user types in fzf) @@ -1244,7 +1244,7 @@ search_history_menu () { #if downloading, say Downloading not currently playing [ $is_download -eq 1 ] && title="Downloading" || title="Currently playing" - notify-send "$title" "$message" -i "$video_thumb" + guix-notify-send "$title" "$message" -i "$video_thumb" unset message video_thumb title } @@ -1262,7 +1262,7 @@ EOF update_ytfzf () { branch="$1" updatefile="/tmp/ytfzf-update" - curl -L "https://raw.githubusercontent.com/pystardust/ytfzf/$branch/ytfzf" -o "$updatefile" + guix-curl -L "https://raw.githubusercontent.com/pystardust/ytfzf/$branch/ytfzf" -o "$updatefile" if sed -n '1p' < "$updatefile" | grep -q '#!/bin/sh'; then chmod 755 "$updatefile" @@ -1346,10 +1346,10 @@ create_subs () { : > "$config_dir/subscriptions" # check how many subscriptions there are in the file - sublength=$( jq '. | length' < "$yt_sub_import_file" ) + sublength=$( guix-jq '. | length' < "$yt_sub_import_file" ) for i in $(seq $((sublength - 1))); do - channelInfo=$(jq --argjson index ${i} '[ "https://www.youtube.com/channel/" + .[$index].snippet.resourceId.channelId + "/videos", "#" + .[$index].snippet.title ]' < "$yt_sub_import_file") + channelInfo=$(guix-jq --argjson index ${i} '[ "https://www.youtube.com/channel/" + .[$index].snippet.resourceId.channelId + "/videos", "#" + .[$index].snippet.title ]' < "$yt_sub_import_file") printf "%s\n" "$(printf "%s" "$channelInfo" | tr -d '[]"\n,')" >> "$subscriptions_file" done exit @@ -1486,8 +1486,8 @@ parse_opt () { exit ;; version) printf "\033[1mytfzf:\033[0m %s\n" "$YTFZF_VERSION" - printf "\033[1myoutube-dl:\033[0m %s\n" "$(youtube-dl --version)" - command -v "fzf" 1>/dev/null && printf "\033[1mfzf:\033[0m %s\n" "$(fzf --version)" + printf "\033[1myoutube-dl:\033[0m %s\n" "$(guix-youtube-dl --version)" + command -v "guix-fzf" 1>/dev/null && printf "\033[1mfzf:\033[0m %s\n" "$(guix-fzf --version)" exit ;; subt) @@ -1559,19 +1559,19 @@ done shift $((OPTIND-1)) #only apply to ext_menu since they dont have a terminal to print to -[ $is_ext_menu -eq 1 ] && command -v notify-send 1>/dev/null 2>&1 && ext_menu_notifs=1 || ext_menu_notifs=0 +[ $is_ext_menu -eq 1 ] && command -v guix-notify-send 1>/dev/null 2>&1 && ext_menu_notifs=1 || ext_menu_notifs=0 #used for thumbnail previews in ueberzug if [ $is_ext_menu -eq 0 ]; then - export TTY_LINES=$(tput lines) - export TTY_COLS=$(tput cols) + export TTY_LINES=$(guix-tput lines) + export TTY_COLS=$(guix-tput cols) fi #if both are true, it defaults to using fzf, and if fzf isnt installed it will throw an error #so print this error instead and set $show_thumbnails to 0 if [ $is_ext_menu -eq 1 ] && [ $show_thumbnails -eq 1 ]; then [ $ext_menu_notifs -eq 1 ] &&\ - notify-send "warning" "Currently thumbnails do not work in external menus" ||\ + guix-notify-send "warning" "Currently thumbnails do not work in external menus" ||\ printf "\033[33mWARNING: Currently thumbnails do not work in external menus\033[0m\n" >&2 show_thumbnails=0 fi -- 2.32.0