Added 'url' and 'download' functions

This commit is contained in:
Nox Sluijtman 2023-03-07 18:02:58 +01:00
parent 6904cfdd84
commit 9a270533a3
5 changed files with 57 additions and 9 deletions

View file

@ -1,10 +1,10 @@
# Contributor: Marty Sluijtman <marty.wanderer@disroot.org> # Contributor: Marty Sluijtman <marty.wanderer@disroot.org>
# Maintainer: Marty Sluijtman <marty.wanderer@disroot.org> # Maintainer: Marty Sluijtman <marty.wanderer@disroot.org>
pkgname=arbit pkgname=arbit
pkgver=1.0 pkgver=1.2
pkgrel=2 pkgrel=0
pkgdesc="A wrapper around yt-dlp, mpv and pipe-viewer to watch aribtrary videos without a browser" pkgdesc="A wrapper around yt-dlp, mpv and pipe-viewer to watch aribtrary videos without a browser"
url="https://alpine.voidcruiser.nl" url="https://gitlab.com/EternalWanderer/arbit"
arch="noarch" arch="noarch"
license="GPL-3.0" license="GPL-3.0"
depends="mpv yt-dlp pipe-viewer" depends="mpv yt-dlp pipe-viewer"
@ -23,5 +23,5 @@ package() {
install -Dm 644 zsh.completion "$pkgdir"/usr/share/zsh/site-functions/_$pkgname install -Dm 644 zsh.completion "$pkgdir"/usr/share/zsh/site-functions/_$pkgname
} }
sha512sums=" sha512sums="
8f59c38d32d6f7ab1b1eece9e8e83eb09ec047ea2435fcce362d1b9528f6b5f54df7d13167f7004259494a35f48c14a934afde1eca7b973bb0b0d77831a57a7e arbit-1.0.tar.gz 3bfb46e8ec224d8a8b05a9efa74852a027dd2b89af2f31fab15109f073eaf87c2aca37038f523969a6ea8913c731b7f3574c4dd01e2419863254a6fd2253d33d arbit-1.2.tar.gz
" "

View file

@ -1,6 +1,6 @@
NAME = arbit NAME = arbit
PREFIX = /usr/local PREFIX = /usr/local
VERSION = 1.0 VERSION = 1.2
DIRNAME= $(NAME)-$(VERSION) DIRNAME= $(NAME)-$(VERSION)
MANPAGE = $(NAME).1 MANPAGE = $(NAME).1
MANPREFIX = $(PREFIX)/share/man MANPREFIX = $(PREFIX)/share/man

41
arbit
View file

@ -4,7 +4,6 @@
videoDir="${XDG_VIDEOS_DIR:-$HOME/Videos}" videoDir="${XDG_VIDEOS_DIR:-$HOME/Videos}"
downloadDir="${ARBITDIR:-$videoDir/YouTube}" downloadDir="${ARBITDIR:-$videoDir/YouTube}"
clipboardContent="$(xclip -o)"
[ -d $downloadDir ] || mkdir -p downloadDir [ -d $downloadDir ] || mkdir -p downloadDir
@ -16,7 +15,12 @@ die(){
exit 1 exit 1
} }
getClip(){
clipboardContent="$(xclip -o)"
}
mpvClip(){ mpvClip(){
getClip
if $(echo "${clipboardContent}" | grep -qE 'youtube|youtu.be'); then if $(echo "${clipboardContent}" | grep -qE 'youtube|youtu.be'); then
notify-send "Arbit" "Opening clipboard content with 'pipe-viewer'..." notify-send "Arbit" "Opening clipboard content with 'pipe-viewer'..."
pipe-viewer --player=mpv "${clipboardContent}" || die "Failed to parse URL" pipe-viewer --player=mpv "${clipboardContent}" || die "Failed to parse URL"
@ -27,24 +31,54 @@ mpvClip(){
} }
clipboardQuery(){ clipboardQuery(){
getClip
notify-send "Arbit" "Searching YouTube with:\n\n${clipboardContent}" notify-send "Arbit" "Searching YouTube with:\n\n${clipboardContent}"
pipe-viewer --player=mpv "${clipboardContent}" pipe-viewer --player=mpv "${clipboardContent}"
} }
downloadClipUrl(){ downloadClipUrl(){
getClip
notify-send "Arbit" "Downloading video to ${downloadDir}" notify-send "Arbit" "Downloading video to ${downloadDir}"
yt-dlp -o "${downloadDir}/%(title)s - %(uploader)s.%(ext)s" ${clipboardContent} \ yt-dlp -o "${downloadDir}/%(title)s - %(uploader)s.%(ext)s" ${clipboardContent} \
&& notify-send "Arbit" "Finished downloading video." \ && notify-send "Arbit" "Finished downloading video." \
|| die "Failed to download file" || die "Failed to download file"
} }
search(){
pipe-viewer --player=mpv "$(echo "$*" | sed 's/search //')"
}
viewUrl(){
url="$(echo $*|sed 's/url //')"
if $(echo "${url}" | grep -qE 'youtube|youtu.be'); then
notify-send "Arbit" "Opening clipboard content with 'pipe-viewer'..."
pipe-viewer --player=mpv "${url}" || die "Failed to parse URL"
else
notify-send "Arbit" "Opening clipboard content with 'mpv'..."
mpv --force-window "${url}" || die "Failed to parse URL"
fi
}
download(){
url="$(echo $*|sed 's/url //')"
notify-send "Arbit" "Downloading video to ${downloadDir}"
yt-dlp -o "${downloadDir}/%(title)s - %(uploader)s.%(ext)s" ${url} \
&& notify-send "Arbit" "Finished downloading video." \
|| die "Failed to download file"
}
usage(){ usage(){
cat >&2 <<EOF cat >&2 <<EOF
Usage: $(basename $0) <clipboard-url|clipboard-content|download-url> Usage: $(basename $0) <clipboard-url|clipboard-content|download-url|url|download>
clipboard-url: open the contents of clipboard in either 'pipe-viewer' or 'mpv' clipboard-url: open the contents of clipboard in either 'pipe-viewer' or 'mpv'
clipboard-content: open pipe-viewer with clipboard content as search query clipboard-content: open pipe-viewer with clipboard content as search query
download-url: open 'yt-dlp' with clipboard content and save the result to download-url: open 'yt-dlp' with clipboard content and save the result to
${downloadDir} ${downloadDir}
search: use any other given arguments as search query
url: open a given URL in pipe-viewer or mpv
download: open a given URL using 'yt-dlp' and save the result to
${downloadDir}
EOF EOF
} }
@ -52,5 +86,8 @@ case $1 in
clipboard-url) mpvClip;; clipboard-url) mpvClip;;
clipboard-content) clipboardQuery;; clipboard-content) clipboardQuery;;
download-url) downloadClipUrl;; download-url) downloadClipUrl;;
search) search "$*";;
url)viewUrl $*;;
download)download $*;;
*) usage;; *) usage;;
esac esac

View file

@ -30,7 +30,18 @@ This can be changed by setting the *$ARBITDIR* environment variable.
Open *pipe-viewer(1)* with the contents of the clipboard as search query. Open *pipe-viewer(1)* with the contents of the clipboard as search query.
*download-url* *download-url*
open *yt-dlp(1)* with the contents of the clipboard to download the Open *yt-dlp(1)* with the contents of the clipboard to download the
resulting file.
*search* _<search-query>_
Query YouTube using *pipe-viewer(1)*
*url*
Open a given URL either in *pipe-viewer(1)* or directly in
*mpv(1)*.
*download* _<url>_
Open *yt-dlp(1)* with the contents of the given URL to download the
resulting file. resulting file.
# SEE ALSO # SEE ALSO

View file

@ -1,6 +1,6 @@
#compdef arbit _arbit #compdef arbit _arbit
_arguments -C \ _arguments -C \
"1: :(clipboard-url clipboard-content download-url)" \ "1: :(clipboard-url clipboard-content download-url search url download)" \
"*::args:->args" "*::args:->args"
_arguments : $arguments _arguments : $arguments