#!/bin/sh

# script for downloading videos/audios and/or extract part from it..

# defining shell colors for distinction
c_red="\033[1;31m"
c_green="\033[1;32m"
c_yellow="\033[1;33m"
c_blue="\033[1;34m"
c_magenta="\033[1;35m"
c_cyan="\033[1;36m"
c_reset="\033[0m"

#function to download full video/audio
full(){
	[ -z "$2" ] &&
	yt-dlp -o "$HOME/Videos/%(title)s.%(ext)s" "$1" || 
	yt-dlp -f 'ba' -x --audio-format mp3 "$1" -o "$HOME/Music/%(title)s.%(ext)s"
}

# function to download part of a video/audio..
part(){
	video=$1
	printf "${c_magenta}Enter Start Point(hh:mm:ss)or(mm:ss)${c_reset}:"
	read start
	printf "${c_yellow}Enter End Point(hh:mm:ss)or(mm:ss):${c_cyan}"
	read end
	[ -z "$2" ] &&
	ffmpeg -i $(yt-dlp -f b --get-url "$video") -ss $start -to $end "$HOME/Videos/$(date +%s).mp4" || 
	ffmpeg -i $(yt-dlp -f 'ba' --get-url "$video") -ss $start -t $end -map a -q:a 0 "$HOME/Music/$(date +%s).mp3"
}

#program starts from here..
x=$(xclip -out clipboard)
printf "${c_blue}Youtube link :${c_magenta}$x\n" 
printf "${c_yellow}Download>>\n${c_blue}[a]udio only\n${c_magenta}[f]part of Audio only\n${c_green}[v]ideo\n${c_cyan}[p]art of video\n${c_red}[q]uit"
printf "\n${c_reset}Enter choice:${c_green}"
read choice
case $choice in
	a)
		full "$x" "1" && notify-send "Audio saved to Music Directory" || notify-send -u critical "Error!!! Audio not Downloaded";;
	f)
		part "$x" "1" && notify-send "Audio saved to Music Directory" || notify-send -u critical "Error!!! Audio not Downloaded";;
	v)
		full "$x" && notify-send "Video saved to Videos Directory" || notify-send -u critical "Error!!! Video not Downloaded";;
	p)
		part "$x" && notify-send "Video saved to Videos Directory" || notify-send -u critical "Error!!! Video not Downloaded";;
	q)
		break;;
esac
