dp3/_dr1p.sh
2022-02-06 17:46:00 -06:00

151 lines
14 KiB
Bash

#!/usr/bin/env bash
################################################################################################################# SOF
echo -e '\033[0;31m'" .:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. "
echo -e '\033[0;31m'" /mMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNd- "
echo -e '\033[0;31m'"-MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN."
echo -e '\033[0;31m'"/MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMmNMMMMMMMMMMMmMMMMMMMMMMMMMMMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMh:NMMMMMMMMMMoyMMMMMMMMMMMMMMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMm -NMMMMMMMMMs.NMMMMMMMMMMMMMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMy -hmmmmmNNm- sMMMMMMMMMMMMMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMmdyo+:. ......... .NMMMymMMMMMMMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMmy+-.. -hNm-+MMMMMMMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMms:. ... /MMMMMMMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMh/. /MMMMMMMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMMMMMMMMMMMMMMMMmMMMMMMMMMMMmhN:. /MMMMMMMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMMMMMMMMMMMMMMMM+sNMMMMMMMMMN-h: .-+syyys/- -NMMMMMMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMMMMMMMMMMMMMMMMs +NMMMMMMMhm--d. :. -sdNMMMMMNNmy. :ydMMMMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMMMMMMMMMMMMMMMM+ :yhyyyhhso. os yhshNMMMMMMMh+:-:. :s- .NMMMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMMMMMMMMMMMMMmho. . .yo.h:sMMMMMMMMMMNd+. -NNs- yMMMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMMMMMMMMMMNh/. :++.-MMMMMMMMMMMMMm+. :ymds. -NMMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMMMMMMMMmo- .MMMMMMMMMMMMMMMdo. ..-. yMMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMMMMMMmo. .NMMMMMMMMMMMMMMMMNy/.. .mMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMMMMNs. hMMMMMMMMMMMMMMMMMMMNho-. :NMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMMMm: ./syyyo- -hmNMMMMMMMMMMMMMMMMMMMMmho:.. /NMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMMd. .smMMMNNNms. . .+MMMMMMMMMMMMMMMMMMMMMMMMNdy/ ..yMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMd. /mMMMMMy/:--. so. .mMMMMMMMMMMMMMMMMMMMMMMMNdo--:+sdNMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMN- /NMMMMMMMMdo. oMm+. /MMMMMMMMMMMMMMMMdNMMMMMMNNNMMmMMMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMo -NMMMMMMMMMMdso-. /hmm+ sMMMMMMMMMMMMMMMs-mMMMMMMMMMM:dMMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMN. sMMMMMMMMMMMo .os/..... .dMMMMMMMMMMMMMMs -NMMMMMMMMM-:MMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMd mMMMMMMMMMMM/ .:os+-. .dMMMMMMMMMMMNm. -soosyhdms .mMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMs mMMMMMMMMMMM: .hNhs/.. .dMMMMNmhs+:-. +MMMNoMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMy hMMMMMMMMMMM: oMMMMMNdyo/. .mNh+-. +mNy.mMMMMMMMMM-"
echo -e '\033[0;31m'"/MMd +MMMMMMMMMMM/ :MMMMMMMMNs...:ohh/. . mMMMMMMMMM-"
echo -e '\033[0;31m'"/MMN. .mMMMMMMMMMMo .NMMMMMMNhhdNMMh: mMMMMMMMMM-"
echo -e '\033[0;31m'"/MMM+ /MMMMMMMMMMh yMMMMMMMMMMMN+ .NMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMm. +MMMMMMMMMN. .NMMMMMMMMMN- :sdmNNNdy+. dMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMo +MMMMMMMMM+ +MMMMMMMMM/ -dMMMMMMNmmNN/ .sdMMMMMMM-"
echo -e '\033[0;31m'"/MMMMN: :mMMMMMMMm. oMMMMMMMh .mMMMMMMMms- .. /o. .mMMMMMM-"
echo -e '\033[0;31m'"/MMMMMm. .yMMMMMMMo oMMMMMM/ sMMMMMMMMMMMh: :NNo. sMMMMMM-"
echo -e '\033[0;31m'"/MMMMMMm. -hMMMMMN: /NMMMM. dMMMMMMMMMMMMMh- :hmNy. .NMMMMM-"
echo -e '\033[0;31m'"/MMMMMMMm- -yNMMMm. .yMMM. dMMMMMMMMMMMMMMNh:. .... yMMMMM-"
echo -e '\033[0;31m'"/MMMMMMMMN+ .+hNMd. :hM: dMMMMMMMMMMMMMMMMNmo- .NMMMM-"
echo -e '\033[0;31m'"/MMMMMMMMMMh- ./ss. .:: sMMMMMMMMMMMMMMMMMMMNms/. /MMMM-"
echo -e '\033[0;31m'"/MMMMMMMMMMMNo. . :MMMMMMMMMMMMMMMMMMMMMMMNdo:.. oMMM-"
echo -e '\033[0;31m'"/MMMMMMMMMMMMMmo. .mMMMMMMMMMMMMMMMMMMMMMMMMMMNmh: .dMM-"
echo -e '\033[0;31m'"/MMMMMMMMMMMMMMMNy:. +MMMMMMMMMMMMMMMMMMMMMMMMMMNh+::/+sdNMMM-"
echo -e '\033[0;31m'"/MMMMMMMMMMMMMMMMMNdo- .dMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMMMMMMMMMMMMMMMMMNd+-. -NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"-NMMMMMMMMMMMMMMMMMMMMMMNdo:. /NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd."
echo -e '\033[0;31m'" -ymNNNNNNNNNNNNNNNNNNNNNNNNdo-. +NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNmy. "
echo -e '\033[0;31m'" ............................ .-................................ "
echo -e '\033[0;31m'" ...... ......... .............. .......... ...... "
#####################################################################################################################
usage () {
echo -e "\nusage: ./$0 name_of_playlist genre cover.jpg url_batch.log"
echo -e "\nname_of_playlist example: \n\ndankmix"
echo -e "\genre example: \n\ntechno\nrap\nblackmetal"
echo -e "\ncover.jpg example: \n\n/path/to/my/album.cover.art.jpg"
echo -e "\nurl_batch.log example:"
echo -e "\n$ cat url_batch.log"
echo -e "https://www.youtube.com/watch?v=-OMLnGtIzug"
echo -e "https://www.youtube.com/watch?v=TBn2H7AydJg"
echo -e "https://www.youtube.com/watch?v=p0b0iQrZ1iU"
}
#####################################################################################################################
sleep 3
#####################################################################################################################
echo -e "[ PREREQUISITES CHECK ]"
#####################################################################################################################
which tmux >> /dev/null 2>&1
[ $? -eq 0 ] && echo "tmux exists" || echo "tmux missing" exit
#####################################################################################################################
which parallel >> /dev/null 2>&1
[ $? -eq 0 ] && echo "parallel exists" || echo "parallel missing" exit
#####################################################################################################################
which jq >> /dev/null 2>&1
[ $? -eq 0 ] && echo "jq exists" || echo "jq missing" exit
#####################################################################################################################
which elinks >> /dev/null 2>&1
[ $? -eq 0 ] && echo "elinks exists" || echo "elinks missing" exit
#####################################################################################################################
which youtube-dl >> /dev/null 2>&1
[ $? -eq 0 ] && echo "youtube-dl exists" || echo "youtube-dl missing" exit
#####################################################################################################################
which ffmpeg >> /dev/null 2>&1
[ $? -eq 0 ] && echo "ffmpeg exists" || echo "ffmepg missing" exit
#####################################################################################################################
echo -e "\n[ PREREQUISITES OK ]"
#####################################################################################################################
if [ $# -lt 4 ]; then echo -e "\n[ ERROR: NO ARGUMENTS SUPPLIED ]"; usage; exit; fi
#####################################################################################################################
[ ! -f "$3" ] && echo -e '\n[ ERROR: cover.jpg does not exist ] - invalid: $3' && usage && exit
#####################################################################################################################
[ ! -f "$4" ] && echo -e '\n[ ERROR: batch_url.log does not exist ]' && usage && exit
#####################################################################################################################
[ -d "$1" ] || mkdir "$1"
cp "$4" "$1/url_batch.log"; cd "$1"
#####################################################################################################################
echo -e "\n[ PROCESSING: WAIT A FEW SECONDS ] \n"
#####################################################################################################################
cat "url_batch.log"|grep "youtu.\|YOUTU.\|youtube.\|YOUTUBE." 2>&1>/dev/null
[ $? -eq 0 ] && cat "url_batch.log"|grep "youtu.\|YOUTU.\|youtube.\|YOUTUBE." > "youtube_url_batch.log"
cat "url_batch.log"|grep "soundcloud.\|SOUNDCLOUD." 2>&1>/dev/null
[ $? -eq 0 ] && cat "url_batch.log"|grep "soundcloud.\|SOUNDCLOUD." > "soundcloud_url_batch.log"
cat "url_batch.log"|grep "bandcamp.\|BANDCAMP." 2>&1>/dev/null
[ $? -eq 0 ] && cat "url_batch.log"|grep "bandcamp.\|BANDCAMP." > "bandcamp_url_batch.log"
#####################################################################################################################
if [ -f "youtube_url_batch.log" ]; then
[ ! -d "rips_youtube" ] && mkdir "rips_youtube"
mv "youtube_url_batch.log" "rips_youtube/youtube_url_batch.log"
echo 'cd rips_youtube; touch youtube_downloaded.log; clear; echo "progress window - youtube - [ sleeping 7 seconds ]"; sleep 7; while :; do clear; if [ $(ls -al|grep part|wc -l) -eq 0 ]; then exit; fi; echo -e "progress window - youtube - `cat youtube_downloaded.log|wc -l`/`cat youtube_url_batch.log|wc -l` files downloaded - `ls -al *|grep -v "log\|mp3"|wc -l` files actively downloading"; ls -al|grep part; sleep 0.3; done' > youtube_progress.sh
tmux \
new-session "cd rips_youtube; clear; echo 'download window'; parallel -j 10 youtube-dl -f bestaudio -i --download-archive youtube_downloaded.log --no-post-overwrites -ciw --extract-audio --audio-format mp3 --audio-quality 0 < youtube_url_batch.log; exit; read" \; \
split-window "bash youtube_progress.sh; exit; read" \; \
select-layout even-vertical
cd rips_youtube
ls *.mp3|xargs -I{} -d"\n" mv {} youtube_{}
mv *.{mp3,log} .. && cd ..
rm -Rf rips_youtube && rm -f youtube_progress.sh
fi
#####################################################################################################################
if [ -f "soundcloud_url_batch.log" ]; then
[ ! -d "rips_soundcloud" ] && mkdir "rips_soundcloud"
mv "soundcloud_url_batch.log" "rips_soundcloud/soundcloud_url_batch.log"
echo 'cd rips_soundcloud; touch soundcloud_downloaded.log; clear; echo "progress window - soundcloud - [ sleeping 7 seconds ]"; sleep 7; while :; do clear; if [ $(ls -al|grep part|wc -l) -eq 0 ]; then exit; fi; echo -e "progress window - soundcloud - `cat soundcloud_downloaded.log|wc -l`/`cat soundcloud_url_batch.log|wc -l` files downloaded - `ls -al *|grep -v "log\|mp3"|wc -l` files actively downloading"; ls -al|grep part; sleep 0.3; done' > soundcloud_progress.sh
tmux \
new-session "cd rips_soundcloud; clear; echo 'download window'; parallel -j 10 youtube-dl -f bestaudio -i --download-archive soundcloud_downloaded.log --no-post-overwrites -ciw -o '%\(uploader\)s-%\(title\)s-%\(id\)s.%\(ext\)s' --extract-audio --audio-format mp3 --audio-quality 0 < soundcloud_url_batch.log; exit; read" \; \
split-window "bash soundcloud_progress.sh; exit; read" \; \
select-layout even-vertical
cd rips_soundcloud
ls *.mp3|xargs -I{} -d"\n" mv {} soundcloud_{}
mv *.{mp3,log} .. && cd ..
rm -Rf rips_soundcloud && rm -f soundcloud_progress.sh
fi
#####################################################################################################################
if [ -f "bandcamp_url_batch.log" ]; then
[ ! -d "rips_bandcamp" ] && mkdir "rips_bandcamp"
mv "bandcamp_url_batch.log" "rips_bandcamp/bandcamp_url_batch.log"
echo 'cd rips_bandcamp; touch bandcamp_downloaded.log; clear; echo "progress window - bandcamp - [ sleeping 7 seconds ]"; sleep 7; while :; do clear; if [ $(ls -al|grep part|wc -l) -eq 0 ]; then exit; fi; echo -e "progress window - bandcamp - `cat bandcamp_downloaded.log|wc -l`/`cat bandcamp_url_batch.log|wc -l` files downloaded - `ls -al *|grep -v "log\|mp3"|wc -l` files actively downloading"; ls -al|grep part; sleep 0.3; done' > bandcamp_progress.sh
tmux \
new-session "cd rips_bandcamp; clear; echo 'download window'; parallel -j 10 youtube-dl -f bestaudio -i --download-archive bandcamp_downloaded.log --no-post-overwrites -ciw --extract-audio --audio-format mp3 --audio-quality 0 < bandcamp_url_batch.log; exit; read" \; \
split-window "bash bandcamp_progress.sh; exit; read" \; \
select-layout even-vertical
cd rips_bandcamp
ls *.mp3|xargs -I{} -d"\n" mv {} bandcamp_{}
mv *.{mp3,log} .. && cd ..
rm -Rf rips_bandcamp && rm -f bandcamp_progress.sh
fi
#####################################################################################################################
cd .. && python3 _dp3.py "$1" "$2" "$3"
################################################################################################################## EOF