Baixe um arquivo da Internet

21

Introdução

Sim, é tão simples assim. Baixe qualquer arquivo da internet!

Regras

Você deve usar a API do seu idioma.

Você deve enviar o arquivo baixado para o STDOUT, o console, um arquivo etc.

A entrada deve estar vazia ou o URL que você deseja baixar, mas o URL deve contar para a contagem de bytes.

Boa sorte!

John Hathwood
fonte

Respostas:

14

Bash, 21 17 11 9 7 bytes

curl ai
programmer5000
fonte
11
curlnão é uma ferramenta que já existe? :)
Abel Tom
11
@AbelTom este é "de seu idioma API"
programmer5000
7
curl ainão há necessidade de http: //
opatut
11
@SIGSEGV: Porque isso não gera saída para stdout .
Lightness Races com Monica
2
Isso não funciona para mim? O que aideveria ser? Dá curl: (6) Could not resolve host: aiaqui.
Rɪᴋᴇʀ
13

Röda , 29 bytes

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

Esta é uma função anônima que cria um arquivo que acontém o código HTML de http://ai.

fergusq
fonte
11
Agora, para convencê-los a executar um servidor FTP ...
user253751
11
Como esse URL é válido?
Iulian Onofrei
11
@IulianOnofrei Por que não seria válido? Possui um protocolo, um nome de host e nenhuma porta, caminho ou sequência de consulta, mas todos são opcionais. Você está perguntando por que ai é um nome de host válido?
User253751 11/1117
11
@IulianOnofrei ai é um TLD. Geralmente, os TLDs não resolvem os endereços que hospedam sites, mas esse aparentemente parece.
User253751 11/1117
4
Para aqueles que, como eu, o URL não resolve, provavelmente é possível visualizá-lo usando o endereço IP diretamente: 209.59.119.34
Engineer Toast
6

MATL, 8 bytes

'v.ht'Xi

O URL fornecido para Xi( urlread) é anexado com http://o já existente. Além disso, a saída de urlreadcontém o conteúdo da resposta e isso é implicitamente impresso quando o programa é encerrado.

Infelizmente, isso não funciona para os compiladores online, pois o carregamento de dados de um URL arbitrário não é permitido no modo online, então aqui está um GIF. insira a descrição da imagem aqui

Suever
fonte
5

Bater, 45 43 bytes

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

abre um soquete tcp com o site ai no descritor de arquivo 3, emite um get e obtém o resultado. talvez possa ser jogado ainda mais.

marcosm
fonte
11
Você pode remover as aspas duplas "ao redor GET /.
Digital Trauma
Surpreendente! Isso é muito bom, mesmo que não seja o mais curto.
John Hathwood
4

Mathematica 18 Bytes

URLDownload@"v.ht"
Kelly Lowder
fonte
Acho FetchURLobras
ngenisis
Acha que significa URLFetchque requer uma versão Mathematica antes 11.
Ian Miller
O URLFetch ainda funciona na versão atual, mas em algum momento provavelmente será totalmente reprovado, e costumava haver um FetchURL nos utilitários URLTools reference.wolfram.com/language/ref/URLFetch.html
Kelly Lowder
4

PowerShell, 7 bytes

Desde que todos nós estamos usando www.ai...

irm ai.

usos Invoke-RestMethod- imprime o resultado em StdOut

resposta alternativa, salva no arquivo chamado 'a' no diretório run, usando Invoke-WebRequeste -OutFileparam.

iwr ai. -OutF a
colsw
fonte
Vou nitpick que irmnão será baixado any file, conforme solicitado na pergunta, porque se o servidor retornar json ou xml, ele será transformado em um PSObject. E irm ai.não funciona para mim - diz que o nome não pode ser resolvido ... recebo "$(irm g.cn)"como sugestão.
TessellatingHeckler
ponto positivo sobre irm- @ John Hathwood - isso ainda se encaixa no desafio ou precisa ser mudado? Eu sou um pouco claro sobre 'qualquer arquivo' - ele gera uma cópia 'analisada' de qualquer json ou xml, todos os outros arquivos são retornados brutos.
Colsw
@TessellatingHeckler que versão do PS você está usando? você está executando alguma coisa nslookup ai.ou nslookup www.ai 8.8.8.8?
colsw
Sim, funciona consultando o DNS do Google, é um servidor DNS local do Windows que não pode resolvê-lo. ESTÁ BEM. PSv4 também, mas isso não está envolvido, o mesmo em um prompt de cmd.
TessellatingHeckler
@TessellatingHeckler sempre algo simples aha, vou esperar o autor do desafio confirmar se o exposto está ok, mas provavelmente a iwrresposta de 15 bytes será a correta.
colsw
4

C #, 96 93 bytes

async()=>Console.Write(await new System.Net.Http.HttpClient().GetStringAsync("http://3.ly"));
Ceshion
fonte
Bem-vindo ao PPCG!
Martin Ender
Obrigado! I se escondem ocasionalmente, mas eu precisava de um pouco de diversão hoje c:
Ceshion
3

PHP, 22 bytes

Se allow_url_include=1estiver no seu arquivo ini:

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

JS (ES6), 38 36 31 29 bytes

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

Dependendo do consenso da promessa, (41 bytes)

fetch`//ai`.then(x=>x.text()).then(alert)
programmer5000
fonte
5
Até chegarmos a um consenso sobre promessas, eu diria que você precisará alertdisso.
Shaggy
@ Shaygy Acho que a comunidade concorda que esse caminho é bom, veja voto conta com sua resposta e minha meta q.
Programmer5000 #
11
10 votos por consenso? (Pergunta genuína que, quantos votos que precisamos para que accaptable considerados?)
Shaggy
Devolve textuma promessa ou ...then(x=>alert(x.text()))funciona?
User253751
11
@ Shagy é aceitável agora. O consenso é de +5 e proporção de 2: 1 de até votos negativos.
Rɪᴋᴇʀ
2

R, 24 bytes

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

imprime a saída para o console no formato R usual - vetor de strings, um elemento por linha do site.

Giuseppe
fonte
2

Mathematica, 13 bytes

URLFetch@"ai"
alefalpha
fonte
2

Python 2, 55 49 47 bytes

Não é mais curto, mas eu realmente pensei que poderia ir mais longe.

from urllib import*
urlopen('http://ai').read
totalmente humano
fonte
2
Eu acho que from urllib import*\nurlopen('http://g.co').readé uma submissão válida como a segunda linha é uma função sem nome (apenas como uma função lambda sem nome)
OVS
@ovs Huh, obrigado!
totallyhuman
Você precisa remover os colchetes à direita. Seria um trecho de
código
IOError: [Errno socket error] [Errno 8] nodename nor servname provided, or not known
Iulian Onofrei
11
@IulianOnofrei Você está usando o TIO? O código executado no TIO não tem acesso à Internet.
totallyhuman
1

Comando Vim Ex, 14 bytes

e http://3.ly/

Abre o URL como um novo buffer. Netrw sofre seriamente de um formato de URL restritivo.

Brian McCutchon
fonte
1

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

Onde o arquivo contém:

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

Eu professo ignorância sobre como devo pontuar isso. O arquivo tem 31 bytes e contém a URL que eu quero, o -vvalor do sinalizador decide se eu recebo o arquivo que desejo ou uma resposta de erro.

JoshRagem
fonte
nc ai 80<<<GET\ /funciona para mim para 18B
Kevin
Vi outras pessoas usando isso, mas isso não resolve na minha máquina. Talvez eu consiga encontrar um servidor mais permissivo, mas este precisa do Hostvalor. Talvez eu possa remover os últimos dois \r\ndísticos
JoshRagem
Estranho, minha máquina não iria resolver aipara curlou wget, mas não para nc. tente ai.(ponto à direita) ou 3.ly. É uma página de erro, mas ainda está dentro dos limites do desafio.
11557 Kevin
Hmm, se a página de erro é aceitável, então eu poderia enviar um corpo de apenas \n. Vou tentar mais algumas coisas quando eu chegar em casa
JoshRagem
1

Raquete, 71 bytes

(require net/url)(port->string(get-pure-port(string->url"http://ai")))
rnso
fonte
Não vejo muitas respostas de raquete por aqui.
David Conrad
0

HTML, 24 bytes

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

Tecnicamente, isso falha ao renderizar o resultado ...

Jared Chmielecki
fonte
2
Isso não é STDOUT para HTML? 15 bytes:<embed src=//ai
Shaggy
0

Vim, 2 + 12 = 14 bytes

gf

Espera o URL http://3.ly/como entrada. gfabre o arquivo atual sob o cursor. Graças ao netrw, isso funciona bem para URLs. Encontrei isso agora mesmo, tentando lembrar o comando para abrir URLs no seu navegador (achei, é gx).

Brian McCutchon
fonte
0

PowerShell, 62 bytes

PowerShell 5

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

66 bytes para versões mais antigas do PowerShell

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

Solicitações Python +, 55 53 50 bytes

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

-2 bytes alternando URLs -3 bytes graças a ovs

HyperNeutrino
fonte
Os URLs encurtados geralmente não são permitidos?
Shaggy
3
Realmente, isso é requisições Python +, já que requisições (infelizmente) não estão na biblioteca padrão.
L3viathan
from request import*é 2 bytes mais curto
ovs 10/10
@ Shaggy Hum ... Welp ... praticamente todas as outras respostas usaram um rasgo. Mas mudei de URL para torná-lo ainda mais curto porque aparentemente http://aié uma URL completa válido ..
HyperNeutrino
0

AHK , 31 bytes

URLDownloadToFile,http://g.co,g

Há um built-in, por isso não é muito emocionante. Tente moda, porém, a função é bastante longa.

Engenheiro Toast
fonte
0

Bash + wget, 7 bytes

wget ai

Faça o download da página em http: // ai

dkudriavtsev
fonte
Recebo "Resolvendo ai ... falhou: nome do nó nem nome do serviço fornecido ou desconhecido." com isso, porém wget ai.(com um ponto à direita) funciona.
Kevin
@ Kevin Trabalha no meu sistema. Parece que você está no FreeBSD ou no macOS.
Dkudriavtsev
Sim, macOS Sierra
Kevin
@ Kevin Estou no Linux. Tente uma VM.
Dkudriavtsev
Estranho que ele não iria funcionar no MacOS, uma vez que deve ser o mesmo código (modulo algumas bandeiras do compilador específico do sistema operacional, que eu não esperaria para mudar isso) e nslookup, dige nctodos acham bem. Oh bem, não é a primeira diferença que eu já vi, e não vale a pena instalar um vm para.
Kevin
0

Ruby, 27 + 10 = 37 bytes

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

+10 bytes para -ropen-urisinalizador (para exigir biblioteca de uri aberta)

dkudriavtsev
fonte
0

Perl, 41 bytes

$ perl -MLWP::UserAgent -e 'getstore($url)'
Chankey Pathak
fonte
Olá, seja bem-vindo ao Programing Puzzle & Code-golf, prazer em conhecer novos jogadores de Perl. Você não tem permissão para supor que o URL esteja dentro de uma variável (não é possível encontrar um link de referência sobre essa parte, desculpe). Além disso, você não precisa contar perl -e''dentro do seu bytecount. Sobre como contar flags & co, consulte esta postagem . Vejo você por aí, espero!
Dada
0

Pitão , 4 + 11 = 15 bytes

jk'z

Com URL http://v.htcomo entrada. Pega uma string de URL como entrada, baixa o arquivo e imprime seu conteúdo.

Explicação:

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

Observe que não podemos usar a função spara concatenar a lista devido a problemas de tipos de bytes.

Trapaças leves, 2 + 11 = 13 bytes (exibe a lista das linhas no arquivo em vez de uma única sequência para o arquivo inteiro):

'z

Você precisará instalar o Pyth em sua máquina para testá-lo (o intérprete on-line não executa operações inseguras).

Jim
fonte
Bem-vindo ao PPCG! Muito bom, mas "o URL deve contar para contagem de bytes".
Jonathan Allan
0

C #, 76 bytes

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

MATLAB, 20 bytes

urlread('http://ai')

Nada extravagante aqui ...

DimP
fonte
0

Kdb +, 34 15 bytes

KDB +> = 3.4

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

a partir daqui .

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..
rua
fonte