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:

 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

  • ¿Hay alguna manera de forzar la rotation del panel en sentido horario en iTerm2 con las teclas de método abreviado?
  • SSH con key de contraseña no funciona
  • AppleScript: cómo abrir el terminal a pantalla completa y ejecutar commands
  • ¿Cuál es la experiencia de command-line más similar a OSX o Darwin disponible (sin comprar una Mac costosa o transportar las máquinas de producción a casa)?
  • XQuartz no está comenzando desde dentro de tmux
  • ¿Cómo evito que se ejecute un service en particular?
  • Uso de tmux y pbpaste, pbcopy y launchctl
  • ¿Cómo hago un command de acceso directo en la terminal?
  • 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).