[Bash/AppleScript] Télécharger vos musiques Youtube en 1 clic (Mac)

Télécharger vos musiques Youtube en 1 clic (Mac) [Bash/AppleScript] - Shell/Batch - Programmation

Marsh Posté le 28-09-2016 à 12:26:35    

Salut,
 
Le script python youtube-dl dispo ici https://rg3.github.io/youtube-dl/ permet de chopper directement une vidéo depuis Youtube à l'aide du lien.
 
J'ai écrit un script Bash pour automatiser ça, histoire de pouvoir télécharger la vidéo en 1 clic. Dans Automator je récupère l'URL de la fenêtre Safari en avant, avec un bloc "Obtenir la page Web actuelle de Safari" puis j'ai un "Exécuter un script Shell" configuré "comme argument" avec ce code:
 

Code :
  1. # Obtient url du block au dessus et stock dans "f"
  2.     for f in "$@"
  3.     do
  4.    
  5.     # Execute la commande youtube-dl pour télécharger l'url $f en "best audio quality" puis convertit au format .m4a avec ffprobe (télécharger audio seul plus rapide que la vidéo)
  6.         /usr/local/bin/youtube-dl -f bestaudio --audio-quality 0 -x --audio-format m4a -o '/Users/user/Music/%(title)s.%(ext)s' "$f"
  7.    
  8.     # Obtient le nom de la vidéo Youtube avec l'argument youtube-dl "-e" et le stock dans la variable "title"
  9.      title=$(/usr/local/bin/youtube-dl -e "$f" );
  10.    
  11.     # Attend fin de la commande (youtube-dl peut être long à retourner)
  12.      sleep 3
  13.    
  14.     # Display la notification avec AppleScript en utilisant "osascript -e"
  15.      /usr/bin/osascript -e 'display notification \"$title\" with title "Music Downloaded"'
  16.     done


Et là je rencontre deux problèmes :  
     - J'ai bien l'impression que le -f de youtube-dl pour choisir la meilleure qualité audio et le -x pour convertir en m4a ne fonctionnent pas ensemble. Mais je n'ai pas trouvé de doc à ce sujet.
     - Et je n'arrive pas à faire apparaitre la notification, mon hypothèse est que la variable Bash `$title` ne marche pas avec une commande AppleScript :

Code :
  1. # Display notification with AppleScript using "osascript -e"
  2.     /usr/bin/osascript -e 'display notification \"$title\" with title "Music Downloaded"'


 
Merci de votre aide!


Message édité par BlueYedOne le 28-09-2016 à 12:30:26

---------------
Quand le sage montre la lune, le con regarde le doigt.
Reply

Marsh Posté le 28-09-2016 à 12:26:35   

Reply

Marsh Posté le 22-10-2016 à 19:18:55    

En bash tu dois initialiser tes variables avant de les utiliser.

Reply

Marsh Posté le 23-10-2016 à 09:27:45    

Citation :

En bash tu dois initialiser tes variables avant de les utiliser.

ah, bon, et depuis quand ?
 

Citation :

je n'arrive pas à faire apparaitre la notification


c'est un problème de développement qui n'est pas effectué entre les apostrophes :

Code :
  1. $ var="> bla bla <"
  2. $ echo 'tralala \"$var\" lalère'
  3. tralala \"$var\" lalère
  4. $ echo "tralala $var lalère"
  5. tralala > bla bla < lalère
  6. $ echo "tralala \"$var\" lalère" # ici, la protection des guillemets a du sens
  7. tralala "> bla bla <" lalère

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed