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!

Respostas:



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.


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


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.


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

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

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"));

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";   

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)

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.



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

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.


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.


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")))

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


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).


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.')

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


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.


0

Bash + wget, 7 bytes

wget ai

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


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)


0

Perl, 41 bytes

$ perl -MLWP::UserAgent -e 'getstore($url)'

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).


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"));

0

MATLAB, 20 bytes

urlread('http://ai')

Nada extravagante aqui ...


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..
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.