1 votos

Automatizador: Guardar imágenes de una lista de URLs en un archivo de texto

Tengo un archivo de texto con una lista de URLs de imágenes de un sitio web. Me gustaría descargarlas en una carpeta llamada Arte en mi ordenador.

He intentado Obtener el contenido del documento de TextEdit y luego Extraer URLs de un texto Pero entonces no entiendo cómo analizar cada URL y guardar la imagen antes de pasar a la siguiente URL.

¿Cómo puedo descargar por lotes varias imágenes desde sus URL?

0 votos

No es una solución de Automator, pero esto xargs y curl basada en la línea de comandos debería funcionar: stackoverflow.com/questions/9865866/

3voto

wch1zpink Puntos 11

Supongamos por un segundo que las URL de tus imágenes están en un archivo de texto ubicado en tu escritorio... "Lista de imágenes.txt"

Supongamos que cada URL de imagen en ese archivo está en una línea separada

Supongamos que la carpeta "Art" se encuentra en su escritorio (carpeta para las imágenes descargadas)

enter image description here

Este código AppleScript es todo lo que necesitas

set theList to (path to desktop as text) & "Image list.txt"
set artFolder to (path to desktop as text) & "Art"
set artFolder to quoted form of POSIX path of artFolder

set theImages to read alias theList as list using delimiter linefeed -- get the lines of a file as a list

repeat with i from 1 to count of theImages
    set thisItem to item i of theImages
    do shell script "cd " & artFolder & "; " & "curl -O " & quoted form of thisItem
end repeat

En realidad, aquí hay una solución aún mejor. Guarde el siguiente código AppleScript en script Editor.app como una aplicación. Ahora tendrá dos opciones.

Al hacer doble clic en la aplicación en el Finder, se abrirá un cuadro de diálogo en el que se le pedirá que elija el archivo de texto que contiene las direcciones URL de las imágenes y, a continuación, se procederá a su descarga.

O

Puedes arrastrar el archivo de texto que contiene las URL de las imágenes directamente al icono de la aplicación, en el Finder, que entonces procesará y descargará las imágenes de ese archivo de texto. (AKA Droplet)

on open theFiles
    --  Handle the case where the script is launched by dropping
    -- a .txt file, containing image URLs,  directly onto this app's icon
    set artFolder to (path to desktop as text) & "Art"
    set artFolder to quoted form of POSIX path of artFolder

    set theImages to read alias theFiles as list using delimiter linefeed

    repeat with i from 1 to count of theImages
        set thisItem to item i of theImages
        do shell script "cd " & artFolder & "; " & "curl -O " & quoted form of thisItem
    end repeat
end open

on run
    --  Handle the case where the script is launched without any dropped files
    set theList to (choose file with prompt ¬
        "Choose Your Text File Containing Image URLs" of type {"txt"} ¬
        default location (path to desktop) ¬
        invisibles false ¬
        without multiple selections allowed) as text

    set artFolder to (path to desktop as text) & "Art"
    set artFolder to quoted form of POSIX path of artFolder

    set theImages to read alias theList as list using delimiter linefeed

    repeat with i from 1 to count of theImages
        set thisItem to item i of theImages
        do shell script "cd " & artFolder & "; " & "curl -O " & quoted form of thisItem
    end repeat
end run

Aquí hay una imagen de la gota en acción...

enter image description here

1 votos

Tu respuesta es mucho más formal que la mía, pero me gusta utilizar la creatividad para conseguir mis objetivos. De todos modos, te felicito por ser tan educado.

0 votos

Elegante. Funciona de maravilla.

0 votos

He probado tu script de arriba, y me da este error: curl: (3) [globbing] unmatched brace in column 1 . No estoy seguro de lo que significa. ¿Cómo puedo solucionarlo? Para simplificar, he creado una carpeta en mi escritorio llamada Art y un archivo llamado Image list.txt con una URL por línea. Gracias de antemano.

-1voto

HUSTEN Puntos 118

Asumo que tienes un archivo de texto con una URL por línea. Esto es importante para el siguiente flujo de trabajo. También estoy asumiendo que usted tiene URLs jpg/png puros, que enlazan directamente a las imágenes y no páginas de URL de html con imágenes dentro.

Me referiré a Safari porque es muy probable que el navegador esté instalado en su sistema, pero otros navegadores deberían funcionar de la misma manera.

1 - Abra Safari y vaya a las preferencias, general, y establezca su valor por defecto Ubicación de la descarga de archivos a su ARTE carpeta:

enter image description here

2 - Abra Automator, cree un nuevo flujo de trabajo y arrastre una acción Ejecutar AppleScript:

enter image description here

3 - Pegue el siguiente código:

on run
    set the clipboard to {}
    tell application "TextEdit" to activate
    tell application "System Events"
        key code 126 using command down -- go to the start of the doc (command+up)
        delay 0.1
        key code 124 using {command down, shift down} -- select the first line (commmand+shift+right arrow)
        delay 0.1
        key code 8 using command down -- copy URL (command+C)
        delay 0.1
    end tell
    repeat while (the clipboard) is not "EXIT"
        tell application "Safari" to activate
        tell application "System Events"
            key code 37 using command down -- Open Location (Command+L)
            delay 0.1
            key code 9 using command down -- paste URL (Command+V)
            delay 0.1
            key code 36 -- enter
            delay 3 -- three seconds to begin loading the image, adjust if necessary
            key code 1 using command down -- Save (command+S)
            delay 0.1
            key code 36 -- enter
            repeat while exists window "Save" of application process "Safari"
                delay 0.5 -- wait the save to end
            end repeat
        end tell
        tell application "TextEdit" to activate -- back to textEdit
        tell application "System Events"
            key code 125 -- go to next line
            delay 0.1
            key code 123 using command down -- go to the start of the line (command + left key)
            delay 0.1
            key code 124 using {command down, shift down} -- select the line (commmand+shift+right arrow)
            delay 0.1
            key code 8 using command down -- copy URL (Command+C)
            delay 0.1
        end tell
    end repeat
end run

enter image description here

4 - Poner un "EXIT" en la última línea del documento para que el programa salga cuando el trabajo esté terminado:

enter image description here

5 - Ejecutar el flujo de trabajo

Lo he probado y funciona bien.

1 votos

¡Aparte del hecho de que este tipo particular de codificación es extremadamente susceptible de romperse mientras se ejecuta, el UI Scripting en general sólo debe ser utilizado como último recurso cuando no existe una manera mejor o más adecuada! El problema con su solución es que tiene que ser un proceso modal, es decir una vez iniciado, el usuario no debe tocar nada más en el sistema hasta que termine, no se permite la multitarea . A diferencia de un simple bash script (que es lo que realmente debería ser) o de la respuesta de wch1zpink, ¡podría/debería ejecutarse como un proceso en segundo plano, permitiendo la multitarea mientras se descargan las imágenes!

1 votos

Mientras que esto puede haber funcionado para usted en sus pruebas limitadas, puedo asegurar que fácilmente se rompe con una larga lista de archivos.

0 votos

@user3439894 Estoy de acuerdo. Sin embargo, proporcioné una solución decente en poco tiempo. Se trata de una tarea puntual, no de una aplicación.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X