J'ai besoin d'intimité. Non pas parce que mes actions sont douteuses, mais parce que votre jugement et vos intentions le sont.
À faire et faire tourner.
!!! ATTENTION !!! une erreur dans mon affichage fait que je suis obligé de mettre une espace :
address
et }
dans l'url youtube de la fonction ydlmp3
{
et 1:-
et 2:-
dans les attributions de variables.Pensez à les supprimer pour que ça fonctionne.
Edit : python2 n'étant plus maintenu, il faut utiliser python3 et ses outils dérivés (pip3 notamment)
#!/bin/bash
set -e -u -o pipefail
IFS=$'\n\t'
on_error() { echo "Error on or near line $1; exiting with status $2"; exit "$2"; }
trap 'on_error ${LINENO} $?' ERR
confirm()
{
read -r -p "${ 1 } [y/N] " response
case "$response" in
[yY][eE][sS]|[yY])
true
;;
*)
false
;;
esac
}
updateYoutubedl() {
#sudo curl -L https ://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl
#sudo chmod a+rx /usr/local/bin/youtube-dl
sudo -H pip3 install --upgrade youtube_dl
}
# Usage `ydlmp3 8WZEPtN8_f0 "Kina Grannis/New"` for record in "Musique/Kina Grannis/New" or
# `ydlmp3 8WZEPtN8_f0` for record in "Musique"
ydlmp3() {
readonly origin=$(pwd)
#default value is an empty string (because of ":-" notation)
local address=${ 1:-}
local dirname=${ 2:-}
cd ~/Musique/
if [ ! -z "${dirname}" ];
then
if [ ! -d "${dirname}" ];
then mkdir "${dirname}/"
fi
cd "${dirname}/"
fi
if confirm "Do you want to update ?"; then
updateYoutubedl
fi
echo "File will be recorded in \"$(pwd)\" folder"
youtube-dl --extract-audio --audio-format mp3 https ://www.youtube.com/watch?v="${address }"
cd "${origin}"
}
# Usage `ydlmovies 8WZEPtN8_f0 "dir"` for record in "~/Téléchargements/dir" or
# `ydlmovies 8WZEPtN8_f0` for record in "~/Téléchargements/"
ydlmovies() {
readonly origin=$(pwd)
local dirname=${ 1:-}
if [ ! -z "${dirname}" ];
then
cd ~/Téléchargements/
if [ ! -d "${dirname}" ];
then mkdir "${dirname}/"
fi
cd "${dirname}/"
else
cd ~/Téléchargements/
fi
if confirm "Do you want to update ?"; then
updateYoutubedl
fi
youtube-dl --batch-file "~/urls"
cd "${origin}"
if [ -f ~/urls ]; then
if confirm "Do you want to delete urls ?"; then
cat /dev/null > ~/urls
fi
fi
}
# Usage `ydlmp3list`
ydlmp3list() {
readonly origin=$(pwd)
local dirname=${ 1:-}
cd ~/Musique/
if [ ! -z "${dirname}" ];
then
if [ ! -d "${dirname}" ];
then mkdir "${dirname}/"
fi
cd "${dirname}/"
fi
if confirm "Do you want to update ?"; then
updateYoutubedl
fi
echo "File will be recorded in \"$(pwd)\" folder"
youtube-dl --extract-audio --audio-format mp3 --batch-file "~/urls"
cd "${origin}"
if [ -f ~/urls ]; then
if confirm "Do you want to delete urls ?"; then
cat /dev/null > ~/urls
fi
fi
}
Je place cela dans le fichier .bashrc
(ou .bash_ytdl
si dans le fichier .bashrc
j'ai mis le code suivant :
# Youtube-dl functions.
# You may want to put all your additions into a separate file like
# ~/.bash_ytdl, instead of adding them here directly.
if [ -f ~/.bash_ytdl ]; then
. ~/.bash_ytdl
fi
)
Pour les scripts ydlmovies
et ydlmp3list
, il faut avoir enregistré les urls des fichiers que l'on souhaite télécharger, dans un fichier urls
dans le dossier Home
(une ligne par url).