mirror of
https://git.savannah.gnu.org/git/guix.git
synced 2026-04-11 23:50:33 +02:00
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>
This commit is contained in:
committed by
Raghav Gururajan
parent
1cc89f08b8
commit
3fdb2d6792
@@ -1858,6 +1858,8 @@ dist_patch_DATA = \
|
|||||||
%D%/packages/patches/xsane-support-ipv6.patch \
|
%D%/packages/patches/xsane-support-ipv6.patch \
|
||||||
%D%/packages/patches/xsane-tighten-default-umask.patch \
|
%D%/packages/patches/xsane-tighten-default-umask.patch \
|
||||||
%D%/packages/patches/yggdrasil-extra-config.patch \
|
%D%/packages/patches/yggdrasil-extra-config.patch \
|
||||||
|
%D%/packages/patches/ytfzf-programs.patch \
|
||||||
|
%D%/packages/patches/ytfzf-updates.patch \
|
||||||
%D%/packages/patches/ytnef-CVE-2021-3403.patch \
|
%D%/packages/patches/ytnef-CVE-2021-3403.patch \
|
||||||
%D%/packages/patches/ytnef-CVE-2021-3404.patch \
|
%D%/packages/patches/ytnef-CVE-2021-3404.patch \
|
||||||
%D%/packages/patches/zstd-CVE-2021-24031_CVE-2021-24032.patch \
|
%D%/packages/patches/zstd-CVE-2021-24031_CVE-2021-24032.patch \
|
||||||
|
|||||||
@@ -18,6 +18,8 @@
|
|||||||
;;; Copyright © 2021 Rovanion Luckey <rovanion.luckey@gmail.com>
|
;;; Copyright © 2021 Rovanion Luckey <rovanion.luckey@gmail.com>
|
||||||
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
|
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
|
||||||
;;; Copyright © 2021 Stefan Reichör <stefan@xsteve.at>
|
;;; Copyright © 2021 Stefan Reichör <stefan@xsteve.at>
|
||||||
|
;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name>
|
||||||
|
;;; Copyright © 2021 jgart <jgart@dismail.de>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
@@ -46,6 +48,7 @@
|
|||||||
#:use-module (guix build-system python)
|
#:use-module (guix build-system python)
|
||||||
#:use-module (gnu packages autotools)
|
#:use-module (gnu packages autotools)
|
||||||
#:use-module (gnu packages algebra)
|
#:use-module (gnu packages algebra)
|
||||||
|
#:use-module (gnu packages base)
|
||||||
#:use-module (gnu packages boost)
|
#:use-module (gnu packages boost)
|
||||||
#:use-module (gnu packages check)
|
#:use-module (gnu packages check)
|
||||||
#:use-module (gnu packages compression)
|
#:use-module (gnu packages compression)
|
||||||
@@ -64,6 +67,7 @@
|
|||||||
#:use-module (gnu packages image-processing)
|
#:use-module (gnu packages image-processing)
|
||||||
#:use-module (gnu packages imagemagick)
|
#:use-module (gnu packages imagemagick)
|
||||||
#:use-module (gnu packages maths)
|
#:use-module (gnu packages maths)
|
||||||
|
#:use-module (gnu packages ncurses)
|
||||||
#:use-module (gnu packages perl)
|
#:use-module (gnu packages perl)
|
||||||
#:use-module (gnu packages perl-check)
|
#:use-module (gnu packages perl-check)
|
||||||
#:use-module (gnu packages photo)
|
#:use-module (gnu packages photo)
|
||||||
@@ -71,10 +75,108 @@
|
|||||||
#:use-module (gnu packages python)
|
#:use-module (gnu packages python)
|
||||||
#:use-module (gnu packages python-xyz)
|
#:use-module (gnu packages python-xyz)
|
||||||
#:use-module (gnu packages qt)
|
#:use-module (gnu packages qt)
|
||||||
|
#:use-module (gnu packages suckless)
|
||||||
|
#:use-module (gnu packages terminals)
|
||||||
|
#:use-module (gnu packages video)
|
||||||
|
#:use-module (gnu packages web)
|
||||||
#:use-module (gnu packages xdisorg)
|
#:use-module (gnu packages xdisorg)
|
||||||
#:use-module (gnu packages xorg)
|
#:use-module (gnu packages xorg)
|
||||||
#:use-module (gnu packages))
|
#:use-module (gnu packages))
|
||||||
|
|
||||||
|
(define-public ytfzf
|
||||||
|
(package
|
||||||
|
(name "ytfzf")
|
||||||
|
(version "1.2.0")
|
||||||
|
(home-page "https://github.com/pystardust/ytfzf")
|
||||||
|
(source
|
||||||
|
(origin
|
||||||
|
(method git-fetch)
|
||||||
|
(uri
|
||||||
|
(git-reference
|
||||||
|
(url home-page)
|
||||||
|
(commit (string-append "v" version))))
|
||||||
|
(file-name (git-file-name name version))
|
||||||
|
(sha256
|
||||||
|
(base32 "00d416qb4109pm77ikhnmds8qng90ni2jan9kdnxz7b6sh5f61nz"))
|
||||||
|
(patches
|
||||||
|
(search-patches
|
||||||
|
;; Prerequisite for 'patch phase.
|
||||||
|
"ytfzf-programs.patch"
|
||||||
|
;; Disables self-update.
|
||||||
|
"ytfzf-updates.patch"))))
|
||||||
|
(build-system gnu-build-system)
|
||||||
|
(arguments
|
||||||
|
`(#:tests? #f ; no test suite
|
||||||
|
#:modules
|
||||||
|
((guix build gnu-build-system)
|
||||||
|
(guix build utils)
|
||||||
|
(srfi srfi-26))
|
||||||
|
#:phases
|
||||||
|
(modify-phases %standard-phases
|
||||||
|
(add-after 'unpack 'patch
|
||||||
|
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||||
|
;; Use correct $PREFIX path.
|
||||||
|
(substitute* "Makefile"
|
||||||
|
(("/usr/bin")
|
||||||
|
(format #f "~a/bin"
|
||||||
|
(assoc-ref outputs "out"))))
|
||||||
|
;; Use absolute path to referenced programs.
|
||||||
|
(substitute* "ytfzf"
|
||||||
|
(("guix-catimg")
|
||||||
|
(format #f "~a/bin/catimg"
|
||||||
|
(assoc-ref inputs "catimg")))
|
||||||
|
(("guix-chafa")
|
||||||
|
(format #f "~a/bin/chafa"
|
||||||
|
(assoc-ref inputs "chafa")))
|
||||||
|
(("guix-curl")
|
||||||
|
(format #f "~a/bin/curl"
|
||||||
|
(assoc-ref inputs "curl")))
|
||||||
|
(("guix-dmenu")
|
||||||
|
(format #f "~a/bin/dmenu"
|
||||||
|
(assoc-ref inputs "dmenu")))
|
||||||
|
(("guix-fzf")
|
||||||
|
(format #f "~a/bin/fzf"
|
||||||
|
(assoc-ref inputs "fzf")))
|
||||||
|
(("guix-jp2a")
|
||||||
|
(format #f "~a/bin/jp2a"
|
||||||
|
(assoc-ref inputs "jp2a")))
|
||||||
|
(("guix-jq")
|
||||||
|
(format #f "~a/bin/jq"
|
||||||
|
(assoc-ref inputs "jq")))
|
||||||
|
(("guix-mpv")
|
||||||
|
(format #f "~a/bin/mpv"
|
||||||
|
(assoc-ref inputs "mpv")))
|
||||||
|
(("guix-notify-send")
|
||||||
|
(format #f "~a/bin/notify-send"
|
||||||
|
(assoc-ref inputs "libnotify")))
|
||||||
|
(("guix-tput")
|
||||||
|
(format #f "~a/bin/tput"
|
||||||
|
(assoc-ref inputs "ncurses")))
|
||||||
|
(("guix-ueberzug")
|
||||||
|
(format #f "~a/bin/ueberzug"
|
||||||
|
(assoc-ref inputs "python-ueberzug")))
|
||||||
|
(("guix-youtube-dl")
|
||||||
|
(format #f "~a/bin/youtube-dl"
|
||||||
|
(assoc-ref inputs "youtube-dl"))))))
|
||||||
|
(delete 'configure)))) ;no configure script
|
||||||
|
(inputs
|
||||||
|
`(("catimg" ,catimg)
|
||||||
|
("chafa" ,chafa)
|
||||||
|
("curl" ,curl)
|
||||||
|
("dmenu" ,dmenu)
|
||||||
|
("fzf" ,fzf)
|
||||||
|
("jp2a" ,jp2a)
|
||||||
|
("jq" ,jq)
|
||||||
|
("libnotify" ,libnotify)
|
||||||
|
("mpv" ,mpv)
|
||||||
|
("ncurses" ,ncurses)
|
||||||
|
("python-ueberzug" ,python-ueberzug)
|
||||||
|
("youtube-dl" ,youtube-dl)))
|
||||||
|
(synopsis "Find and watch PeerTube or YouTube videos from the terminal")
|
||||||
|
(description "@code{ytfzf} is a POSIX script that helps you find PeerTube or
|
||||||
|
YouTube videos without requiring API and opens/downloads them using mpv/ytdl.")
|
||||||
|
(license license:gpl3+)))
|
||||||
|
|
||||||
(define-public feh
|
(define-public feh
|
||||||
(package
|
(package
|
||||||
(name "feh")
|
(name "feh")
|
||||||
|
|||||||
372
gnu/packages/patches/ytfzf-programs.patch
Normal file
372
gnu/packages/patches/ytfzf-programs.patch
Normal file
@@ -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
|
||||||
|
|
||||||
41
gnu/packages/patches/ytfzf-updates.patch
Normal file
41
gnu/packages/patches/ytfzf-updates.patch
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
From b39ea2784c7616ca1e00bc605bf84b1360f4125f Mon Sep 17 00:00:00 2001
|
||||||
|
From: LibreMiami <packaging-guix@libremiami.org>
|
||||||
|
Date: Sat, 26 Jun 2021 20:34:39 -0400
|
||||||
|
Subject: [PATCH 2/2] Disable updates within the application.
|
||||||
|
|
||||||
|
---
|
||||||
|
ytfzf | 18 ++----------------
|
||||||
|
1 file changed, 2 insertions(+), 16 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/ytfzf b/ytfzf
|
||||||
|
index 28e320b..69a6f8e 100755
|
||||||
|
--- a/ytfzf
|
||||||
|
+++ b/ytfzf
|
||||||
|
@@ -1260,22 +1260,8 @@ EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
update_ytfzf () {
|
||||||
|
- branch="$1"
|
||||||
|
- updatefile="/tmp/ytfzf-update"
|
||||||
|
- 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"
|
||||||
|
- [ "$(uname)" = "Darwin" ] && prefix="/usr/local/bin" || prefix="/usr/bin"
|
||||||
|
- function_exists "sudo" && doasroot="sudo" || doasroot="doas"
|
||||||
|
- $doasroot cp "$updatefile" "$prefix/ytfzf"
|
||||||
|
- unset prefix doasroot
|
||||||
|
- else
|
||||||
|
- printf "%bFailed to update ytfzf. Try again later.%b" "$c_red" "$c_reset"
|
||||||
|
- fi
|
||||||
|
-
|
||||||
|
- rm "$updatefile"
|
||||||
|
- exit 0
|
||||||
|
+ printf "%bUpdates have to be installed with Guix.%b\n" "$c_red" "$c_reset"
|
||||||
|
+ exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
#gives a value to sort by (this will give the unix time the video was uploaded)
|
||||||
|
--
|
||||||
|
2.32.0
|
||||||
|
|
||||||
Reference in New Issue
Block a user