Quiero crear un programa con Automator y youtube-dl

-3

Quiero crear una aplicación con Automator en macOS Sierra (MacBook Pro 2012) que recupere las URL de todas las páginas abiertas en Google Chrome y las agregue a una función que he creado basada en youtube-dl.

La función llamada go:

function go {
    youtube-dl "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9" "$10" "$11" "$12" "$13" "$14" "$15" "$16" "$17"
}

Las URL de las páginas deben reemplazar las variables $ 1 $ 2 .....

    
pregunta simoowolf 14.06.2017 - 01:32

1 respuesta

2

El AppleScript ejemplo código , que se muestra a continuación, hace lo siguiente:

  • Si Google Chrome se está ejecutando, crea una lista de cada pestaña de cada ventana .
  • Busca "YouTube" en el título de cada pestaña de cada ventana en la lista .
  • Si el título de una pestaña contiene "YouTube", agrega el URL de esa pestaña a una lista de URLs .
  • Si la lista de URLs no está vacía, cambia el directorio a la carpeta de Descargas y luego descarga el video de cada URL en la lista de URLs , una a la vez.
  • Si la lista de URLs no está vacía, muestra una notificación cuando comienza la descarga, y nuevamente cuando termina.
on run
    tell application "Google Chrome"
        if running then
            set theseURLs to {}
            set theSearchString to "YouTube"
            set theWindowList to every window
            repeat with thisWindow in theWindowList
                set theTabList to every tab of thisWindow
                repeat with thisTab in theTabList
                    if theSearchString is in (title of thisTab as string) then
                        set end of theseURLs to (URL of thisTab as string)
                    end if
                end repeat
            end repeat
        else
            tell current application
                display notification "Google Chrome is not open!"
                return
            end tell
        end if
    end tell
    tell current application
        if theseURLs is not {} then
            display notification "Downloading YouTube Video..."
            repeat with thisURL in theseURLs
                do shell script "cd \"$HOME/Downloads\"; ./youtube-dl -q --no-warnings " & quoted form of thisURL
            end repeat
            display notification "YouTube Video Downloading Finished."
        end if
    end tell
end run

Este AppleScript código se puede utilizar en una AppleScript o Ejecutar AppleScript action en un Automator application .

Nota: El ejemplo anterior código no emplea todas las formas posibles de manejo de errores y solo pretende mostrar una de las muchas formas en que para lograr un objetivo, como descargar un video YouTube de cada YouTube pestaña en Google Chrome , con youtube-dl . La responsabilidad recae siempre sobre el Usuario para agregar / usar el manejo de errores según sea necesario / deseado. Esto incluiría el uso de try sentencias y on error controladores según sea apropiado. Aunque, como está codificado actualmente, debería funcionar bien sin ese nivel de manejo de errores .

Si este código de ejemplo no es aceptable en lugar de su go function , puede modificar el código según sea necesario / desea realizar el objetivo final de descargar todos los videos YouTube de cada pestaña de cada ventana en Google Chrome que tienen "YouTube" en el título ( que ya hace este código ).

El PATH pasado a un comando do shell script es /usr/bin:/bin:/usr/sbin:/sbin , y si youtube-dl no está en ese PATH , entonces incluya la ruta de acceso completa al ejecutable . Tal como está codificado en el ejemplo código , lo tengo en mi carpeta Descargas y como primero cambio de directorio , todo lo que tenía que hacer es Prefacio con: ./

También está codificado, ya que busca "YouTube" en el título de cada pestaña , si la URL no tiene la forma de , p.ej https://www.youtube.com/watch?v= , descargará todos los videos en esa página YouTube . En otras palabras, si está en la forma de, por ejemplo. https://www.youtube.com/results?search_query= , entonces hará mucha descarga desde esa página.

Si eso es un problema, cambie las siguientes líneas de código como se muestra:

  • Cambio: set theSearchString to "YouTube"

  • Para: set theSearchString to "youtube.com/watch"

  • Cambio: if theSearchString is in (title of thisTab as string) then

  • Para: if theSearchString is in (URL of thisTab as string) then

Entonces solo se agregan URLs en esa forma de URL a la lista de URLs para ser descargado.

    
respondido por el user3439894 14.06.2017 - 03:54

Lea otras preguntas en las etiquetas