
En muchos desafíos de procesamiento de imágenes , la publicación contiene imágenes, que deben guardarse en un archivo para poder resolver el problema. Esta es una tarea manual especialmente tediosa. Nosotros, los programadores, no deberíamos tener que ser sometidos a tal trabajo pesado. Su tarea es descargar automáticamente todas las imágenes contenidas en una pregunta de Code Golf.SE.
Reglas
- Su programa puede conectarse a cualquier parte de
stackexchange.com, pero no puede conectarse a ningún otro dominio, excepto las ubicaciones de las imágenes (es decir, no se moleste con un acortador de URL). - Un entero N se da como entrada, en la línea de comando o stdin.
- Se garantiza que la URL es un enlace válido a una pregunta de Code Golf.
http://codegolf.stackexchange.com/questions/N - Cada imagen que se muestra en el cuerpo de la pregunta N debe guardarse en un archivo en la computadora local. Cualquiera de las siguientes ubicaciones es aceptable:
- El directorio actual
- Una entrada de directorio por el usuario
- Su programa no debe guardar archivos que no sean las imágenes en el cuerpo de la pregunta (por ejemplo, avatares de usuario o imágenes contenidas en las respuestas).
- Las imágenes deben guardarse con la misma extensión de archivo que la original.
Este es un código de golf : escriba el programa más corto que pueda.
Criterio de validez para respuestas
Hay varios casos límite posibles con múltiples imágenes del mismo nombre, texto con el mismo nombre que elementos HTML, etc. Una respuesta se invalidará solo si se puede demostrar que falla en alguna revisión de una pregunta publicada antes del 10 de enero de 2015 .

Respuestas:
Mathematica,
211210 bytesSin golf:
Es bastante sencillo. He configurado un filtro para la API de StackExchange, que solo devuelve el cuerpo de una pregunta. El código recupera la información de la pregunta con ese filtro y la analiza como JSON. Selecciono el elemento correcto (el cuerpo) y lo uso
ImportStringpara analizar el HTML y filtrar todas las URL de las imágenes.FileNameTake@#~Export~Import@#luego descarga cada una de las imágenes y la almacena en el directorio de trabajo actual con el mismo nombre de archivo que el de la URL.Puede encontrar el directorio de trabajo actual con
Directory[].En principio, hay una versión mucho más corta, porque en
ImportStringrealidad puede descargar todos los archivos de inmediato, en lugar de solo darme las URL. Pero luego pierdo información sobre el tipo de archivo original (ya que se convierten enImageobjetos tras la descarga), por lo que solo puedo guardarlos como el mismo tipo (PNG, por ejemplo).fuente
Javascript -
149161 bytescon espacios en blanco
el script debe ejecutarse desde el sitio stackexchange para funcionar.
Se establecerá de forma predeterminada en la página actual si no se especifica ningún número de pregunta en la solicitudfuente
$('[src*="imgur"]',d), creo. Me gusta que esto se pueda ejecutar en la consola: gratificación instantánea.questionspuede acortarseq, pero debe incluir lacodegolf.stackexchange.comparte en lugar de depender de estar en esa página. @Josiah es posible incluir imágenes de otros dominios en las publicaciones.#question .post-text imgse puede acortar a.post-text:first imgo.post-text:eq(0) img.Python 2 - 241 bytes
Bastante sencillo, probablemente se pueda jugar más al golf. Busco en el sitio todas las ocurrencias
img src=entre la primera apariciónpost-texty la/divinmediatamente posterior. Cada url de imagen se lee y se guarda en el directorio de trabajo.fuente
[-9:]) de la url de la imagen, que debe mantener su nombre de 5 caracteres y.pngao.jpgetc. Cortará los bytes del nombre de archivo si la extensión tiene más de 3 caracteres .forbucle sea una línea.for p re.findall(...):f=open(...);f.write(...)Mathematica, 195
Esto exporta imágenes de la misma manera que Martin hizo en su solución de Mathematica, lea su respuesta para obtener más información al respecto. Este enfoque es muy diferente al suyo, en lugar de analizar el resultado de la API, analizo la página HTML directamente. O, mejor dicho, analizo el XML simbólico que Mathematica puede generar a partir de HTML.
fuente
Python 2 -
398342334 bytesEl programa descarga la página SE, extrae la parte de publicación (el elemento div post-texto), encuentra las URL que terminan en una extensión de imagen y las descarga. Las imágenes se guardan como
img<n>.<ext>en el directorio actual.Este programa también descargará imágenes que se proporcionan como un enlace, no solo imágenes incrustadas. Al dar a cada imagen un nombre de archivo único, también se evitan los conflictos de nombres.
fuente
questionsconq(en la URL).Bash - 86 bytes
Nada wget no solucionará.
-npevita que wget ingrese directorios superiores (Imgs de usuario)-Asolo toma archivos con la extensión que coincide con la lista presentada.-res una descarga recursiva-levita que wget vaya demasiado profundo.$1es la pregunta para agarrar.fuente
questionsconqen la URL.Nodo.js,
251247 bytesSe utiliza
requestpara hacer HTTPGETsycheeriopara analizar el HTML. Las colisiones de nombres se resuelven anteponiendo el índice de la imagen actual al nombre base de la URL del archivo. Las imágenes se guardan en el mismo directorio que el archivo actual.fuente
Lua, 200 bytes
Acepta el número como argumento de línea de comando.
Asume que cualquier
src=atributo será para unaimgetiqueta ya que estas son las únicas etiquetas consrcatributos que permite el intercambio de pila (¿verdad?).También tenga en cuenta el
.. .... Estoy particularmente orgulloso de eso.fuente