Scarica un file da Internet


21

introduzione

Sì, è così semplice. Scarica qualsiasi file da Internet!

Regole

Devi usare l'API della tua lingua.

È necessario emettere il file scaricato su STDOUT, la console, un file, ecc.

L'input deve essere vuoto o l'URL che si desidera scaricare, ma l'URL deve contare per il conteggio dei byte.

In bocca al lupo!

Risposte:



13

Röda , 29 byte

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

Questa è una funzione anonima che crea un file acontenente il codice HTML di http://ai.


1
Ora per convincerli a eseguire un server FTP ...
user253751,

1
Come è valido quell'URL?
Iulian Onofrei,

1
@IulianOnofrei Perché non dovrebbe essere valido? Ha un protocollo, un nome host e nessuna porta, percorso o stringa di query, ma quelli sono tutti facoltativi. Stai chiedendo perché ai è un nome host valido?
user253751,

1
@IulianOnofrei ai è un TLD. Di solito i TLD non risolvono gli indirizzi verso i siti Web host, ma questo sembra farlo.
user253751,

4
Per coloro che - come me - l'URL non si risolvono, è possibile visualizzarlo probabilmente utilizzando direttamente l'indirizzo IP: 209.59.119.34
Engineer Toast,

6

MATL, 8 byte

'v.ht'Xi

L'URL fornito a Xi( urlread) è anteposto http://se non lo è già. Inoltre l'output di urlreadcontiene il contenuto della risposta e questo viene implicitamente stampato all'uscita dal programma.

Sfortunatamente questo non funziona per i compilatori online poiché il caricamento di dati da un URL arbitrario non è consentito in modalità online, quindi ecco una GIF. inserisci qui la descrizione dell'immagine


5

bash, 45 43 byte

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

apre un socket tcp con il sito ai sul descrittore di file 3, genera un get e gatta il risultato. forse può essere ulteriormente giocato a golf.


1
Puoi rimuovere le doppie virgolette in "giro GET /.
Digital Trauma,

Sorprendente! Questo è molto buono, anche se non è il più corto.
John Hathwood,


4

PowerShell, 7 byte

Dal momento che stiamo usando tutti www.ai...

irm ai.

usa Invoke-RestMethod- stampa il risultato su StdOut

risposta alternativa, salva nel file denominato "a" nella directory di esecuzione, usando Invoke-WebRequeste -OutFileparam.

iwr ai. -OutF a

Sto andando a nitpick che irmnon verrà scaricato any file, come richiesto nella domanda, perché se il server restituisce json o xml, verrà invece trasformato in un oggetto PSO. E irm ai.non funziona per me - dice che il nome non può essere risolto ... Ho ricevuto "$(irm g.cn)"un suggerimento.
Tessellating Heckler,

buon punto per quanto riguarda irm- @ John Hathwood - questo si adatta ancora alla sfida o deve essere cambiato? sono un po 'poco chiaro su "qualsiasi file" - genera una copia "analizzata" di qualsiasi json o xml, tutti gli altri file vengono restituiti grezzi.
Colsw,

@TessellatingHeckler quale versione di PS stai usando? hai qualcosa in esecuzione nslookup ai.o nslookup www.ai 8.8.8.8?
Colsw,

Sì, funziona interrogando su Google DNS, è un server DNS Windows locale che non può risolverlo. OK. Anche PSv4, ma non è coinvolto, lo stesso a un prompt cmd.
Tessellating Heckler,

@TessellatingHeckler sempre qualcosa di semplice aha, aspetterò che l'autore della sfida confermi se quanto sopra è ok, ma molto probabilmente la iwrrisposta a 15 byte sarà quella corretta.
Colsw,

4

C #, 96 93 byte

async()=>Console.Write(await new System.Net.Http.HttpClient().GetStringAsync("http://3.ly"));

Benvenuti in PPCG!
Martin Ender,

Grazie! Di tanto in tanto mi nascondo, ma oggi avevo bisogno di un po 'di divertimento c:
Ceshion,


3

JS (ES6), 38 36 31 29 byte

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

A seconda del consenso promesso, (41 byte)

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

5
Fino a quando non raggiungeremo un consenso sulle promesse, direi che dovrai farlo alert.
Shaggy,

@Shaggy Penso che la community sia d'accordo che in questo modo sia OK, vedi il voto conta sulla tua risposta e sul mio meta q.
programmatore

1
10 voti danno un consenso? (Domanda autentica: quanti voti sono necessari per essere considerati accessibili?)
Shaggy,

Fa texttornare una promessa o fa ...then(x=>alert(x.text()))il lavoro?
user253751,

1
@Shaggy è accettabile ora. Il consenso è +5 e rapporto 2: 1 fino a downvotes.
Rɪᴋᴇʀ

2

R, 24 byte

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

stampa l'output su console nel solito formato R - vettore di stringhe, un elemento per riga del sito.



2

Python 2, 55 49 47 byte

Non più breve, ma pensavo davvero di poter andare oltre.

from urllib import*
urlopen('http://ai').read

2
Penso che from urllib import*\nurlopen('http://g.co').readsia un valido contributo dato che la seconda riga è una funzione senza nome (proprio come una funzione lambda senza nome)
ovs,

@ovs Huh, grazie!
totalmente umano

È necessario rimuovere le parentesi graffe. Sarebbe uno snippet anziché una funzione altrimenti
ovs

IOError: [Errno socket error] [Errno 8] nodename nor servname provided, or not known
Iulian Onofrei,

1
@IulianOnofrei Stai usando TIO? Il codice eseguito in TIO non ha accesso a Internet.
totalmente umano

1

Comando Vim Ex, 14 byte

e http://3.ly/

Apre l'URL come nuovo buffer. Netrw soffre seriamente di un formato URL restrittivo.


1

nc -v v.ht 80 <file - 31 byte

Dove il file contiene:

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

Professo ignoranza su come dovrei segnare questo. Il file è di 31 byte e contiene l'URL che desidero, il -vvalore del flag decide se ottengo il file desiderato o una risposta di errore.


nc ai 80<<<GET\ /funziona per me per il 18B
Kevin,

Ho visto altre persone usarlo ma non si risolve sulla mia macchina. Potrei essere in grado di trovare un server più permissivo ma questo ha bisogno del Hostvalore. Posso forse rimuovere gli ultimi due \r\ndistici
JoshRagem,

Strano, la mia macchina non si sarebbe risolta aiper curlo wgetma per nc. provare ai.(punto finale) o 3.ly. È una pagina di errore, ma è ancora nei limiti della sfida.
Kevin,

Hmm, se la pagina di errore è accettabile, allora potrei inviare un corpo di giusto \n. Proverò qualche altra cosa quando torno a casa
JoshRagem,

1

Racchetta, 71 byte

(require net/url)(port->string(get-pure-port(string->url"http://ai")))

Non vedi troppe risposte sulla racchetta da queste parti.
David Conrad,

0

HTML, 24 byte

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

Questo tecnicamente fallisce in quanto rende il risultato ...


2
Non è STDOUT per HTML? 15 byte:<embed src=//ai
Shaggy,

0

Vim, 2 + 12 = 14 byte

gf

Si aspetta l'URL http://3.ly/come input. gfapre il file corrente sotto il cursore. Grazie a netrw, questo funziona bene per gli URL. L'ho trovato proprio ora mentre cercavo di ricordare il comando per aprire gli URL nel tuo browser (l'ho trovato, è gx).


0

PowerShell, 62 byte

PowerShell 5

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

66 byte per versioni più vecchie di PowerShell

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

0

Richieste Python +, 55 53 50 byte

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

-2 byte cambiando URL -3 byte grazie a ovs


Di solito gli URL abbreviati non sono vietati?
Shaggy,

3
In realtà, si tratta di richieste Python +, poiché le richieste non sono (purtroppo) nella libreria standard.
L3viathan,

from request import*è più breve di 2 byte
ovs

@Shaggy Um ... Welp ... praticamente ogni altra risposta utilizzava un rip. Ma ho cambiato il mio URL per renderlo ancora più breve perché apparentemente http://aiè un URL completo valido ..
HyperNeutrino,

0

AHK , 31 byte

URLDownloadToFile,http://g.co,g

C'è un built-in quindi non è molto eccitante. Prova a modellare, tuttavia, la funzione è piuttosto lunga.


0

Bash + wget, 7 byte

wget ai

Scarica la pagina all'indirizzo http: // ai


Viene visualizzato il messaggio "Risoluzione ai ... non riuscita: nome nodo o nome servizio fornito o non noto." con questo, però wget ai.(con un punto finale) funziona.
Kevin,

@Kevin Funziona sul mio sistema. Sembra che tu sia su FreeBSD o macOS.
dkudriavtsev,

Sì, macOS Sierra
Kevin,

@Kevin Sono su Linux. Prova una VM.
dkudriavtsev,

Strano che non avrebbe funzionato su MacOS, dal momento che dovrebbe essere lo stesso codice (Modulo alcuni flag di compilazione specifiche per os, che non ci si aspetterebbe di cambiare questo) e nslookup, dige nctutto trovarlo bene. Vabbè, non è la prima differenza che ho visto e non vale la pena installare un vm per.
Kevin,

0

Rubino, 27 + 10 = 37 byte

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

+10 byte per -ropen-uriflag (per richiedere la libreria open-uri)


0

Perl, 41 byte

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

Ciao, benvenuto su Programing Puzzle & Code-golf, bello vedere nuovi golfisti Perl in giro. Non puoi supporre che l'URL sia all'interno di una variabile (non riesci a trovare un link di riferimento su quella parte, mi dispiace). Inoltre, non devi contare perl -e''nel tuo bytecount. Informazioni su come contare flags & co, vedi questo post . Ci vediamo in giro, spero!
Dada,

0

Pyth , 4 + 11 = 15 byte

jk'z

Con URL http://v.htcome input. Accetta una stringa URL come input, scarica il file e stampa il suo contenuto.

Spiegazione:

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

Si noti che non è possibile utilizzare la funzione sper concatenare l'elenco a causa di problemi relativi ai tipi di byte.

Leggermente barare, 2 + 11 = 13 byte (visualizza l'elenco delle righe nel file anziché una singola stringa per l'intero file):

'z

Dovrai installare Pyth sul tuo computer per testarlo (l'interprete online non esegue operazioni non sicure).


Benvenuti in PPCG! Abbastanza buono, ma "l'URL deve contare per il conteggio dei byte".
Jonathan Allan,

0

C #, 76 byte

Console.WriteLine(new System.Net.WebClient().DownloadString("http://3.ly"));

0

MATLAB, 20 byte

urlread('http://ai')

Niente di speciale qui ...


0

Kdb +, 34 15 byte

KDB +> = 3.4

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

da qui .

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..
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.