97 lines
2.2 KiB
Bash
Executable File
97 lines
2.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
#############################################################
|
|
# Author: Taryel Hlontsi, 2022
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <https://www.gnu.org/licenses/>
|
|
#############################################################
|
|
|
|
|
|
DIR=$HOME
|
|
|
|
not_set() {
|
|
count=$(grep -Pcx "$1" "$2")
|
|
code=$?
|
|
if (( $code > 0 )) || (( $count == 0 )); then
|
|
true
|
|
else
|
|
false
|
|
fi
|
|
}
|
|
|
|
which youtube-dl
|
|
|
|
if (($? > 0)); then
|
|
sudo apt update
|
|
sudo apt install -y python3-pip
|
|
sudo apt install -y ffmpeg
|
|
fi
|
|
|
|
pip install youtube-dl --upgrade --user
|
|
|
|
SCRIPT="${DIR}/.local/bin/get-mp3.sh"
|
|
ALIAS="alias get-mp3='${SCRIPT}'"
|
|
|
|
if test -f ~/.bash_aliases; then
|
|
if not_set "${ALIAS}" "${DIR}/.bash_aliases"; then
|
|
echo $ALIAS >> "${DIR}/.bash_aliases"
|
|
fi
|
|
else
|
|
echo $ALIAS > "${DIR}/.bash_aliases"
|
|
fi
|
|
|
|
source "${DIR}/.bashrc"
|
|
|
|
cat <<'EOF' > ${SCRIPT}
|
|
#!/bin/bash
|
|
|
|
if [[ ! ${1+x} ]]; then
|
|
echo 'Provide a web link to the media file as an argument!'
|
|
exit -1
|
|
else
|
|
URL=$(echo $1 | sed "s/\?list=.*//i")
|
|
echo "Link: ${URL}"
|
|
fi
|
|
|
|
youtube-dl --list-formats $URL
|
|
|
|
read -t 10 -p 'Select the format number from above [251]: ' FORMAT
|
|
echo $FORMAT
|
|
|
|
if test -z "$FORMAT"; then
|
|
FORMAT=251
|
|
else
|
|
if [[ ! $FORMAT =~ ^[0-9]+$ ]]; then
|
|
echo 'Specified format must be a number!'
|
|
exit -1
|
|
fi
|
|
fi
|
|
echo "Format to be used: ${FORMAT}"
|
|
|
|
youtube-dl --format $FORMAT \
|
|
--no-call-home \
|
|
--console-title \
|
|
--ignore-config \
|
|
--buffer-size 16K \
|
|
--no-resize-buffer \
|
|
--extract-audio \
|
|
--audio-quality 0 \
|
|
--audio-format mp3 \
|
|
-o "~/Music/%(title)s.%(ext)s" \
|
|
"${URL}"
|
|
EOF
|
|
|
|
chmod u+x $SCRIPT
|
|
|
|
echo "to use it run 'get-mp3' command followed by a URL link (in a new terminal session)"
|