aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Geerinckx-Rice <me@tobias.gr>2020-03-17 19:40:55 +0100
committerTobias Geerinckx-Rice <me@tobias.gr>2020-03-17 20:02:07 +0100
commit6c71d56d7757b5f35bdd0d6fc623ba133c9c3e2e (patch)
tree6b98f92ea018c73f4711797e0f85b707dca2b5c3
parent9bd0f41509ae405ed62f90af28769761fbe58a98 (diff)
downloadpatches-6c71d56d7757b5f35bdd0d6fc623ba133c9c3e2e.tar
patches-6c71d56d7757b5f35bdd0d6fc623ba133c9c3e2e.tar.gz
gnu: Add straw-viewer.
* gnu/packages/video.scm (straw-viewer): New public variable.
-rw-r--r--gnu/packages/video.scm85
1 files changed, 85 insertions, 0 deletions
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index cc1a011d9a..62b19e2dfb 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -123,6 +123,7 @@
#:use-module (gnu packages networking)
#:use-module (gnu packages ocr)
#:use-module (gnu packages perl)
+ #:use-module (gnu packages perl-check)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages popt)
#:use-module (gnu packages pretty-print)
@@ -511,6 +512,90 @@ H.264 (MPEG-4 AVC) video streams.")
(@command{mkvmerge}).")
(license license:gpl2)))
+(define-public straw-viewer
+ (package
+ (name "straw-viewer")
+ (version "0.0.2")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/trizen/straw-viewer")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "067j8wdfy29bi5ahky10xzzs8cr3mn95wl4kyqqjvjzri77a25j3"))))
+ (build-system perl-build-system)
+ (native-inputs
+ `(("perl-module-build" ,perl-module-build)
+ ("perl-test-pod" ,perl-test-pod)))
+ (inputs
+ `(("perl-data-dump" ,perl-data-dump)
+ ("perl-json" ,perl-json)
+ ("perl-libwww" ,perl-libwww)
+ ("perl-lwp-protocol-https" ,perl-lwp-protocol-https)
+ ("perl-lwp-useragent-cached" ,perl-lwp-useragent-cached)
+ ("perl-mozilla-ca" ,perl-mozilla-ca)
+ ("perl-term-readline-gnu" ,perl-term-readline-gnu)
+ ("perl-unicode-linebreak" ,perl-unicode-linebreak)
+ ("xdg-utils" ,xdg-utils)
+
+ ;; Some videos play without youtube-dl, but others silently fail to.
+ ("youtube-dl" ,youtube-dl)))
+
+ ;; Required only when building the graphical interface (--gtk).
+ ;;("perl-file-sharedir" ,perl-file-sharedir)
+ (arguments
+ `(#:modules ((guix build perl-build-system)
+ (guix build utils)
+ (srfi srfi-26))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'refer-to-inputs
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "lib/WWW/StrawViewer.pm"
+ (("'youtube-dl'")
+ (format #f "'~a/bin/youtube-dl'"
+ (assoc-ref inputs "youtube-dl"))))
+ (substitute* "bin/gtk-straw-viewer"
+ (("'xdg-open'")
+ (format #f "'~a/bin/xdg-open'"
+ (assoc-ref inputs "xdg-utils"))))
+ #t))
+ (add-after 'install 'install-desktop
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (sharedir (string-append out "/share")))
+ (install-file "share/gtk-straw-viewer.desktop"
+ (string-append sharedir "/applications"))
+ (install-file "share/icons/gtk-straw-viewer.png"
+ (string-append sharedir "/pixmaps"))
+ #t)))
+ (add-after 'install 'wrap-program
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin-dir (string-append out "/bin/"))
+ (site-dir (string-append out "/lib/perl5/site_perl/"))
+ (lib-path (getenv "PERL5LIB")))
+ (for-each (cut wrap-program <>
+ `("PERL5LIB" ":" prefix (,lib-path ,site-dir)))
+ (find-files bin-dir))
+ #t))))))
+ (synopsis
+ "Light-weight application for searching and streaming videos from YouTube")
+ (description
+ "Straw-viewer searches for YouTube videos using @uref{https://invidio.us/,
+invidio.us} and plays them locally in a native media player like @command{vlc}
+or @command{mpv}.
+
+You can search for videos, playlists, and/or channels. The videos are streamed
+directly to the player at the best chosen resolution and with closed captions if
+available.")
+ ;; XXX Add #:module-build-flags '("--gtk") dependencies and this sentence.
+ ;; Both a command-line and a graphical interface are available.
+ (home-page "https://github.com/trizen/youtube-viewer")
+ (license license:perl-license)))
+
(define-public x265
(package
(name "x265")