151 lines
14 KiB
Bash
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 |