dotfiles/.zsh_functions/download.zsh

111 lines
2.4 KiB
Bash

if ! typeset -f ytr >/dev/null; then
export PATH="$PATH:$HOME/.local/bin:$HOME/bin"
# ── 2. Load .env files from ~/.environment.d/ ───────────────────
# Automatically export all variables defined while sourcing .env files
setopt allexport
for file in ~/.environment.d/*.env(.N); do
source "$file"
done
unset file
unsetopt allexport
# Load a function that allows us to import other function definitions from
# the ZSH_FUNC_PATH without providing their exact location
source "$DOTFILES_DIR/.zsh_functions/autosource.sh"
# Load the rest of the zsh configs in ~/.zshrc.d/
setopt allexport
for file in ~/.zshrc.d/*.zsh(.N); do
source "$file"
done
source ~/.zsh_functions/youtube.zsh
fi
mdl () {
cwd=$(pwd)
share_on_nas="$NAS_IP/media"
path_on_nas="Music/__INBOX"
jelly_wait=150
check_smb_mount() {
mount | grep -q "$mount_point"
}
mount_point="$HOME/NAS/Music"
if [ ! -d "$mount_point" ]; then
echo "Creating mount point directory..."
mkdir -p "$mount_point"
fi
if ! check_smb_mount; then
echo "Mounting SMB share..."
/sbin/mount_smbfs "smb://janolehuebner:$(pass sudo-lana)@$share_on_nas" "$mount_point"
fi
if ! check_smb_mount; then
echo "Failed to mount SMB share. Exiting."
exit 1
fi
# Move to target directory
cd "$mount_point/$path_on_nas"
echo "SMB share mounted successfully."
if [[ "$*" == *"tidal.com"* ]]; then
echo "TIDAL DETECTED"
tidal-dl -l $*
else
echo "Using qobuz-dl via uvx at: $(which uvx)"
echo "QOBUZ URL: $*"
uvx qobuz-dl dl $*
fi
echo "Unmounting SMB share..."
sleep 1
/sbin/umount -f "$mount_point"
cd $cwd
if declare -f jelly_rescan > /dev/null; then
echo "Waiting $jelly_wait secs before triggering automatic library scan..."
sleep $jelly_wait
jelly_rescan
echo "done"
fi
}
d () {
local url="${1:-$(pbpaste)}"
local used_clipboard=0
if [[ -z "$url" ]]; then
echo "No URL provided and clipboard is empty."
return 1
fi
# Check if URL came from clipboard
if [[ -z "$1" ]]; then
echo "started via clipboard"
used_clipboard=1
fi
case "$url" in
(*youtube*|*youtu.be*)
echo "Detected YouTube URL: $url"
ytr "$url"
;;
(*qobuz*)
echo "Detected Qobuz URL: $url"
mdl "$url"
if [[ $used_clipboard -eq 1 ]]; then
osascript -e "display dialog \"Done with Qobuz: $url\" buttons {\"OK\"}"
fi
;;
(*)
echo "Unknown URL: $url"
;;
esac
}