Envolviendo youtube-dl en el autómata a través de AppleScript

Espero hacer una aplicación de automatizador que solicite la input del usuario (es decir, url de youtube) y la descargue usando youtube-dl (ya instalada a través de Homebrew). Después de esto, bash usar el command youtube-dl URL_HERE -e que youtube-dl URL_HERE -e el título del video. Espero hacer una notificación que diga "TITLE_VIDEO descargado correctamente" después de que se descargue correctamente (si se descarga correctamente). Estoy usando el command "Run Applescript" del automatizador.

Esto es todo lo que he conseguido hasta ahora:

  • Applescript / Automator: pasa variables entre ellos
  • ¿Cómo crear un service que pone el text seleccionado entre comillas?
  • Compartir varios files en iCloud usando events del sistema en Applescript: ¿cómo interceptar una opción?
  • ¿Automatizar la terminal mobile?
  • Cambiar la resolución de LG UltraFine a través de AppleScript
  • actualizar el repository de git con script de apple
  •  display dialog "What is the youtube URL you want to download?" default answer "" set answer to text returned of result tell application "Terminal" activate do script with command "youtube-dl -f 140 " & answer end tell display notification "Successfully downloaded " & TITLE_HERE sound name "Blow" 

    Soy nuevo en applescript, por lo que solo las funciones básicas / que se pueden explicar fácilmente.

    Lo que estoy pensando es hacer el command de terminal youtube-dl URL_HERE -e que devolverá el título del video (TITLE), y establecerlo en una variable y luego pasar esa variable para display notification

  • Acceso a búsquedas guardadas Línea de command
  • ¿es posible renombrar por lotes desde una list, usando un file bat como rename filename.txt newfilename.txt?
  • ¿Para get páginas man más nuevas en OSX?
  • hdiutil convert no funciona y no me dice por qué
  • ¿Cómo usar ImageMagick para recortar el espacio vacío en files png?
  • Intentando instalar Windows 10 a principios de 2008 MBP sin usar el Asistente BootCamp
  • 2 Solutions collect form web for “Envolviendo youtube-dl en el autómata a través de AppleScript”

    Bien, una interfaz de usuario simple como esa podría ser muy útil en muchas situaciones.

    Prueba esto:

     display dialog "URL to fetch?" default answer "" set theUrl to (text returned of result) --> get file do shell script "cd /tmp/; /usr/local/bin/youtube-dl " & theUrl --> get title set theTitle to do shell script "/usr/local/bin/youtube-dl -e " & theUrl display notification "Fetched " & theTitle sound name "Blow" delay 1 --> avoid quit before notice 

    Lamentablemente, el script youtube-dl en realidad no descargó el video cuando se usaba el distintivo -e (y se produjo un error al intentar usar la opción –exec CMD).

    Terminó ejecutando el command dos veces; Primero descargue a / tmp, luego obtenga el título.

    También podría usar el id de process (pid) para seguir el progreso, etc. 🙂

     command 2>/dev/null & pid=$! 

    Actualización: no pude get el resultado de ciertos commands a través de AppleScript, como 'nettop'. Probablemente haya maneras de arreglarlo. Aquí está mi bash descuidado de implementar una comprobación pid … 🙂

     set question to display dialog "URL to fetch?" default answer "" buttons {"Cancel", "Open in Browser", "Download"} default button 3 set pageURL to (text returned of result) if pageURL is "" then return "No URL" set choice to (button returned of question) if choice is "Download" then try set pid to do shell script "cd /tmp/; /usr/local/bin/youtube-dl --newline " & pageURL & " > /tmp/vidstatus 2>&1 & echo $!" delay 1 repeat while ((do shell script "kill -0 " & pid) is "") -- check if pid is still responding display dialog "Status: " & (do shell script "tail -n1 /tmp/vidstatus") -- display last line of output end repeat on error display dialog "Download complete!" -- eh, success, hopefully :) end try else if choice is "Open in Browser" then try set videoURL to do shell script "/usr/local/bin/youtube-dl -g " & pageURL open location videoURL -- browser can stream and save file on error display dialog "Download aborted!" end try end if 

    Debe verificar el valor de retorno del script de shell. Consulte la documentation de Apple en do shell en la sección Cómo get una respuesta.

    ¿Cómo informa el script de shell los errores?

    Todos los commands de shell devuelven un estado integer cuando terminan: cero significa éxito; cualquier otra cosa significa fracaso. Si el script sale con un estado distinto de cero, el script del shell arroja un error de AppleScript con el estado como el número de error.

     set success to do shell script "cd /tmp/; /usr/local/bin/youtube-dl " & theUrl 

    Entonces puede verificar la variable de success .

     if success is equal to 0 

    Probablemente también pueda usar try and on error para verificar si la descarga funcionó.

     try do shell script "cd /tmp/; /usr/local/bin/youtube-dl " & theUrl on error -- show error message end try 
    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).