summaryrefslogtreecommitdiff
path: root/gnu/packages/patches/ytfzf-programs.patch
diff options
context:
space:
mode:
authorLibreMiami <packaging-guix@libremiami.org>2021-06-26 23:12:43 -0400
committerRaghav Gururajan <rg@raghavgururajan.name>2021-06-28 17:43:24 -0400
commit3fdb2d679259f5d1541240dd4e9cedda17040bf2 (patch)
treedfc991c3b371772d45f3a2a00d65bcefb8884224 /gnu/packages/patches/ytfzf-programs.patch
parent1cc89f08b816f56e1bca25340e945b1cbb34f05d (diff)
gnu: Add ytfzf.
* gnu/packages/image-viewers.scm (ytfzf): New variable. Co-authored-by: Raghav Gururajan <rg@raghavgururajan.name> Co-authored-by: jgart <jgart@dismail.de>
Diffstat (limited to 'gnu/packages/patches/ytfzf-programs.patch')
-rw-r--r--gnu/packages/patches/ytfzf-programs.patch372
1 files changed, 372 insertions, 0 deletions
diff --git a/gnu/packages/patches/ytfzf-programs.patch b/gnu/packages/patches/ytfzf-programs.patch
new file mode 100644
index 0000000000..f744c19aeb
--- /dev/null
+++ b/gnu/packages/patches/ytfzf-programs.patch
@@ -0,0 +1,372 @@
+From a5ed861c4d1ee0902650eb6aa68c5ffa17e7fa48 Mon Sep 17 00:00:00 2001
+From: LibreMiami <packaging-guix@libremiami.org>
+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
+