Descargar un archivo de Internet

21

Introducción

Sí, es tan simple como eso. Descargar cualquier archivo de internet!

Reglas

Debe usar la API de su idioma.

Debe enviar el archivo que descargó a STDOUT, la consola, un archivo, etc.

La entrada debe estar vacía o la URL que desea descargar, pero la URL debe contar para contar los bytes.

¡Buena suerte!

John Hathwood
fuente

Respuestas:

14

Bash, 21 17 11 9 7 bytes

curl ai
programador 5000
fuente
1
curl¿No es una herramienta que ya existe? :)
Abel Tom
1
@AbelTom esta es "la API de tu idioma"
programmer5000
77
curl aino es necesario http: //
opatut
1
@SIGSEGV: Porque eso no sale a stdout .
Lightness compite con Monica
2
¿Esto no funciona para mí? ¿Qué se aisupone que es? Da curl: (6) Could not resolve host: aiaquí.
Rɪᴋᴇʀ
13

Röda , 29 bytes

{saveResource"http://ai","a"}

Esta es una función anónima que crea un archivo que acontiene el código HTML de http://ai.

fergusq
fuente
1
Ahora para convencerlos de que ejecuten un servidor FTP ...
user253751
1
¿Cómo es válida esa url?
Iulian Onofrei
1
@IulianOnofrei ¿Por qué no sería válido? Tiene un protocolo, un nombre de host y ningún puerto, ruta o cadena de consulta, pero todos son opcionales. ¿Estás preguntando por qué ai es un nombre de host válido?
user253751
1
@IulianOnofrei ai es un TLD. Por lo general, los TLD no resuelven las direcciones que alojan sitios web, pero este aparentemente sí.
user253751
44
Para aquellos que, como yo, la URL no se resuelve, probablemente puedan verla usando la dirección IP directamente: 209.59.119.34
Engineer Toast
6

MATL, 8 bytes

'v.ht'Xi

La URL proporcionada a Xi( urlread) se antepone http://si aún no lo está. Además, la salida de urlreadcontiene el contenido de la respuesta y esto se imprime implícitamente cuando el programa sale.

Desafortunadamente, esto no funciona para los compiladores en línea, ya que la carga de datos desde una URL arbitraria no está permitida en modo en línea, así que aquí hay un GIF. ingrese la descripción de la imagen aquí

Suever
fuente
5

Golpetazo, 45 43 bytes

exec 3<>/dev/tcp/ai/80;echo GET />&3;cat<&3

abre un zócalo tcp con un sitio ai en el descriptor de archivo 3, emite un get y captura el resultado. tal vez se pueda jugar más al golf.

marcom
fuente
1
Puede quitar las comillas dobles "alrededor GET /.
Trauma digital
¡Asombroso! Esto es muy bueno, incluso si no es el más corto.
John Hathwood
4

Mathematica 18 Bytes

URLDownload@"v.ht"
Kelly Lowder
fuente
Creo que FetchURLfunciona
ngenisis
Cree URLFetchque quiere decir que requiere una versión de Mathematica antes del 11.
Ian Miller
URLFetch todavía funciona en la versión actual, pero en algún momento probablemente estará en desuso, y solía haber un FetchURL en Utilities URLTools reference.wolfram.com/language/ref/URLFetch.html
Kelly Lowder
4

PowerShell, 7 bytes

Como todos estamos usando www.ai...

irm ai.

usos Invoke-RestMethod: imprime el resultado en StdOut

respuesta alternativa, guarda en el archivo llamado 'a' en el directorio de ejecución, usando Invoke-WebRequesty -OutFileparam.

iwr ai. -OutF a
colsw
fuente
Voy a hacer un nitpick que irmno se descargará any file, como se solicitó en la pregunta, porque si el servidor devuelve json o xml, se convertirá en un PSObject. Y irm ai.no funciona para mí, dice que el nombre no se puede resolver ... Lo recibo "$(irm g.cn)"como una sugerencia.
TessellatingHeckler
buen punto con respecto a irm@John Hathwood: ¿esto aún se ajusta al desafío o necesita ser cambiado? no estoy claro sobre 'cualquier archivo': genera una copia 'analizada' de cualquier json o xml, todos los demás archivos se devuelven sin formato.
colsw
@TessellatingHeckler ¿qué versión de PS estás usando? ¿Tienes algo corriendo nslookup ai.o nslookup www.ai 8.8.8.8?
colsw
Sí, funciona consultando contra DNS de Google, es un servidor DNS local de Windows que no puede resolverlo. OKAY. PSv4 también, pero eso no está involucrado, lo mismo en un indicador de cmd.
TessellatingHeckler
@TessellatingHeckler siempre es algo simple aha, esperaré a que el autor del desafío confirme si lo anterior está bien, pero lo más probable es que la iwrrespuesta de 15 bytes sea ​​la correcta.
colsw
4

C #, 96 93 bytes

async()=>Console.Write(await new System.Net.Http.HttpClient().GetStringAsync("http://3.ly"));
Ceshion
fuente
Bienvenido a PPCG!
Martin Ender
¡Gracias! Me acecho de vez en cuando pero necesitaba algo de diversión hoy c:
Ceshion
3

PHP, 22 bytes

Si allow_url_include=1está en su archivo ini:

<?=include"http://ai";   
Jared Chmielecki
fuente
3

JS (ES6), 38 36 31 29 bytes

fetch`//ai`.then(x=>x.text())

Dependiendo del consenso de la promesa, (41 bytes)

fetch`//ai`.then(x=>x.text()).then(alert)
programador 5000
fuente
55
Hasta que lleguemos a un consenso sobre las promesas, diría que necesitarás alertesto.
Shaggy
@ Shaggy Creo que la comunidad está de acuerdo en que de esta manera está bien, ver el voto cuenta con su respuesta y mi meta q.
programador
1
¿10 votos hacen un consenso? (Pregunta genuina que; ¿cuántos votos necesitamos para que se considere aceptable?)
Shaggy
¿ textDevuelve una promesa o ...then(x=>alert(x.text()))funciona?
user253751
1
@ Shaggy es aceptable ahora. El consenso es una relación de +5 y 2: 1 de hasta votos a favor.
Rɪᴋᴇʀ
2

R, 24 bytes

readLines('http://g.co')

imprime la salida a la consola en el formato R habitual: vector de cadenas, un elemento por línea del sitio.

Giuseppe
fuente
2

Mathematica, 13 bytes

URLFetch@"ai"
alephalpha
fuente
2

Python 2, 55 49 47 bytes

No más corto, pero realmente pensé que podría ir más allá.

from urllib import*
urlopen('http://ai').read
totalmente humano
fuente
2
Creo que from urllib import*\nurlopen('http://g.co').reades una presentación válida ya que la segunda línea es una función sin nombre (al igual que una función lambda sin nombre)
2017
@ovs Huh, gracias!
Totalmente humano
Debe quitar los corchetes finales. Sería un fragmento lugar a menudo una función de otra manera
ovs
IOError: [Errno socket error] [Errno 8] nodename nor servname provided, or not known
Iulian Onofrei
1
@IulianOnofrei ¿Estás usando TIO? El código ejecutado en TIO no tiene acceso a Internet.
Totalmente humano
1

Comando Vim Ex, 14 bytes

e http://3.ly/

Abre la URL como un nuevo búfer. Netrw sufre gravemente de un formato de URL restrictivo.

Brian McCutchon
fuente
1

nc -v v.ht 80 <archivo - 31 bytes

Donde el archivo contiene:

GET / HTTP/1.1\r\n
Host: v.ht\r\n
\r\n

Profeso ignorancia sobre cómo debería calificar esto. El archivo tiene 31 bytes y contiene la URL que quiero, el -vvalor del marcador decide si obtengo el archivo que quiero o si aparece una respuesta de error.

JoshRagem
fuente
nc ai 80<<<GET\ /funciona para mí para 18B
Kevin
Vi a otras personas usar eso, pero no se resuelve en mi máquina. Es posible que pueda encontrar un servidor más permisivo, pero este necesita el Hostvalor. \r\n
Tal
Impar, mi máquina no resolvería aipara curlo wgetpero lo hace para nc. intente ai.(punto final), o 3.ly. Es una página de error, pero todavía está dentro de los límites del desafío.
Kevin
Hmm, si la página de error es aceptable, podría enviar un cuerpo de solo \n. Intentaré algunas cosas más cuando llegue a casa
JoshRagem
1

Raqueta, 71 bytes

(require net/url)(port->string(get-pure-port(string->url"http://ai")))
rnso
fuente
No veo demasiadas respuestas Racket por aquí.
David Conrad
0

HTML, 24 bytes

<iframe src="http://ai">

Esto técnicamente falla ya que genera el resultado ...

Jared Chmielecki
fuente
2
¿No es STDOUT para HTML? 15 bytes:<embed src=//ai
Shaggy
0

Vim, 2 + 12 = 14 bytes

gf

Espera la URL http://3.ly/como entrada. gfabre el archivo actual debajo del cursor. Gracias a netrw, esto funciona bien para las URL. Encontré esto justo ahora mientras intentaba recordar el comando para abrir URL en su navegador (lo encontré, es gx).

Brian McCutchon
fuente
0

PowerShell, 62 bytes

PowerShell 5

-join[char[]][net.webclient]::new().downloaddata('http://ai.')

66 bytes para versiones más antiguas de PowerShell

-join[char[]](new-object net.webclient).downloaddata('http://ai.')
Andrei Odegov
fuente
0

Python + solicitudes, 55 53 50 bytes

from requests import*
print(get('http://ai').text)

-2 bytes cambiando URL -3 bytes gracias a ovs

Hiperneutrino
fuente
¿Por lo general, no se rechazan las URL acortadas?
Shaggy
3
Realmente, esas son solicitudes de Python +, ya que las solicitudes (lamentablemente) no están en la biblioteca estándar.
L3viathan
from request import*es 2 bytes más corto
ovs
@Shaggy Um ... Welp ... casi todas las otras respuestas usaron una rasgadura. Pero cambié mi URL para hacerlo aún más corto porque aparentemente http://aies una URL completa válida ...
HyperNeutrino
0

AHK , 31 bytes

URLDownloadToFile,http://g.co,g

Hay una función incorporada, por lo que no es muy emocionante. Sin embargo, intenta modelar, la función es bastante larga.

Tostadas de ingeniero
fuente
0

Bash + wget, 7 bytes

wget ai

Descarga la página en http: // ai

dkudriavtsev
fuente
Aparece el mensaje "Resolviendo ai ... falló: nombre de servidor ni nombre de servidor proporcionados, o no se conocen". con esto, sin embargo wget ai.(con un punto final) funciona.
Kevin
@ Kevin funciona en mi sistema. Parece que estás en FreeBSD o macOS.
dkudriavtsev
Sí, macOS Sierra
Kevin
@ Kevin Estoy en Linux. Prueba una VM.
dkudriavtsev
Extraño que no funcionaría en MacOS, ya que debe ser el mismo código (dadas algunas opciones del compilador-os específica, que yo no esperaría para cambiar esto) y nslookup, digy nctodos se encuentran bien. Oh, bueno, no es la primera diferencia que he visto, y no vale la pena instalar un VM.
Kevin
0

Rubí, 27 + 10 = 37 bytes

puts open('http://ai').read

+10 bytes para el -ropen-uriindicador (para requerir la biblioteca open-uri)

dkudriavtsev
fuente
0

Perl, 41 bytes

$ perl -MLWP::UserAgent -e 'getstore($url)'
Chankey Pathak
fuente
Hola, bienvenido a Programing Puzzle & Code-golf, me alegro de ver nuevos golfistas de Perl. No está permitido suponer que la url está dentro de una variable (no puedo encontrar un enlace de referencia sobre esa parte, lo siento). Además, no tiene que contar perl -e''dentro de su bytecount. Sobre cómo contar flags & co, mira esta publicación . Nos vemos, espero!
Dada
0

Pyth , 4 + 11 = 15 bytes

jk'z

Con URL http://v.htcomo entrada. Toma una cadena de URL como entrada, descarga el archivo e imprime su contenido.

Explicación:

jk'z
   z    Get the input string (URL)
  '     Download the file from the URL, return a list of lines
jk      Join the list on k which is the empty string

Tenga en cuenta que no podemos usar la función spara concatenar la lista debido a problemas con los tipos de bytes.

Ligeramente trampa, 2 + 11 = 13 bytes (muestra la lista de líneas en el archivo en lugar de una sola cadena para todo el archivo):

'z

Deberá instalar Pyth en su máquina para probarlo (el intérprete en línea no ejecuta operaciones inseguras).

Jim
fuente
Bienvenido a PPCG! Bastante bien, pero "la url debe contar para contar los bytes".
Jonathan Allan
0

C #, 76 bytes

Console.WriteLine(new System.Net.WebClient().DownloadString("http://3.ly"));
Ark-kun
fuente
0

MATLAB, 20 bytes

urlread('http://ai')

Nada lujoso aquí ...

DimP
fuente
0

Kdb +, 34 15 bytes

KDB +> = 3.4

 q).Q.hg`http://ai

desde aquí .

KDB + <3.4

q)`:http://ai"GET / HTTP/1.0",4#"\n"
"HTTP/1.1 200 OK\r\nDate: Thu, 11 May 2017 21:45:01 GMT\r\nServer: Apache/1.3..
callejero
fuente