Laden Sie eine Datei aus dem Internet herunter

21

Einführung

Ja, so einfach ist das. Laden Sie eine beliebige Datei aus dem Internet herunter!

Regeln

Sie müssen die API Ihrer Sprache verwenden.

Sie müssen die auf STDOUT heruntergeladene Datei, die Konsole, eine Datei usw. ausgeben.

Die Eingabe sollte leer sein oder die URL, die Sie herunterladen möchten, aber die URL muss bis zur Byteanzahl zählen.

Viel Glück!

John Hathwood
quelle

Antworten:

14

Bash, 21 17 11 9 7 Bytes

curl ai
programmer5000
quelle
1
curlist nicht ein werkzeug, das es schon gibt? :)
Abel Tom
1
@ BelTom Dies ist "API Ihrer Sprache"
programmer5000
7
curl aikeine Notwendigkeit für http: //
opatut
1
@SIGSEGV: Weil das nicht auf stdout ausgegeben wird .
Leichtigkeit Rennen mit Monica
2
Das funktioniert bei mir nicht? Was aisoll sein? Gibt curl: (6) Could not resolve host: aihier.
Rɪᴋᴇʀ
13

Röda , 29 Bytes

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

Dies ist eine anonyme Funktion, die eine Datei amit dem HTML-Code von erstellt http://ai.

fergusq
quelle
1
Nun, um sie davon zu überzeugen, einen FTP-Server zu betreiben ...
user253751
1
Wie ist diese URL gültig?
Iulian Onofrei
1
@IulianOnofrei Warum wäre es nicht gültig? Es verfügt über ein Protokoll, einen Hostnamen und keinen Port, Pfad oder Abfragezeichenfolge. Diese Angaben sind jedoch optional. Fragen Sie, warum ai ein gültiger Hostname ist?
user253751
1
@IulianOnofrei ai ist eine TLD. Normalerweise werden TLDs nicht in Adressen aufgelöst, die Websites hosten, dies scheint jedoch der Fall zu sein.
user253751
4
Für diejenigen, die - wie ich - die URL nicht auflösen, können Sie sie wahrscheinlich über die IP-Adresse direkt anzeigen
Engineer Toast
6

MATL, 8 Bytes

'v.ht'Xi

Der URL, der an Xi( urlread) übergeben wird, wird vorangestellt, http://sofern dies noch nicht geschehen ist. Zusätzlich urlreadenthält die Ausgabe von den Inhalt der Antwort und wird implizit gedruckt, wenn das Programm beendet wird.

Leider funktioniert dies bei den Online-Compilern nicht, da das Laden von Daten von einer beliebigen URL im Online-Modus nicht zulässig ist. Hier ist also ein GIF. enter image description here

Suever
quelle
5

Bash, 45 43 Bytes

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

Öffnet einen TCP-Socket mit einer i-Site in Dateideskriptor 3, gibt ein get aus und zeigt das Ergebnis an. vielleicht kann weiter golfen werden.

marcosm
quelle
1
Sie können die doppelten Anführungszeichen entfernen "um GET /.
Digitales Trauma
Tolle! Das ist sehr gut, auch wenn es nicht das kürzeste ist.
John Hathwood
4

Mathematica 18 Bytes

URLDownload@"v.ht"
Kelly Lowder
quelle
Ich denke, FetchURLfunktioniert
Genisis
Denken Sie, Sie meinen, URLFetchdas erfordert eine Mathematica-Version vor dem 11.
Ian Miller
URLFetch funktioniert immer noch in der aktuellen Version, wird jedoch wahrscheinlich irgendwann vollständig veraltet sein und es gab eine FetchURL in Utilities URLTools reference.wolfram.com/language/ref/URLFetch.html
Kelly Lowder
4

PowerShell, 7 Bytes

Da wir alle verwenden www.ai...

irm ai.

uses Invoke-RestMethod- druckt das Ergebnis nach StdOut

Alternative Antwort: Speichert die Datei mit dem Namen 'a' im Ausführungsverzeichnis mit Invoke-WebRequestund -OutFileparam.

iwr ai. -OutF a
colsw
quelle
Ich gehe zu Nitpick, irmder nicht heruntergeladen werden kann any file, wie in der Frage angefordert, denn wenn der Server json oder xml zurückgibt, wird er stattdessen in ein PSObject umgewandelt. Und irm ai.funktioniert bei mir nicht - es heißt, Name kann nicht aufgelöst werden ... Ich bekomme "$(irm g.cn)"als Vorschlag.
TessellatingHeckler
Guter Punkt in Bezug auf irm- @ John Hathwood - passt dies noch zu der Herausforderung oder muss es geändert werden? Ich bin ein wenig unklar über "jede Datei" - es gibt eine "geparste" Kopie von Json oder XML aus, alle anderen Dateien werden roh zurückgegeben.
colsw
@TessellatingHeckler Welche PS-Version verwendest du? Bringst du irgendetwas zum Laufen nslookup ai.oder nslookup www.ai 8.8.8.8?
colsw
Ja, es funktioniert beim Abfragen von Google DNS. Es handelt sich um einen lokalen Windows-DNS-Server, der das Problem nicht lösen kann. OKAY. PSv4 auch, aber das ist nicht involviert, genau wie bei einer cmd-Eingabeaufforderung.
TessellatingHeckler
@TessellatingHeckler immer etwas einfaches aha, ich werde warten, bis der Herausforderungsautor bestätigt, ob das oben genannte in Ordnung ist, aber höchstwahrscheinlich wird die 15-Byte- iwrAntwort die richtige sein.
colsw
4

C # 96 93 Bytes

async()=>Console.Write(await new System.Net.Http.HttpClient().GetStringAsync("http://3.ly"));
Ceshion
quelle
Willkommen bei PPCG!
Martin Ender
Vielen Dank! Ich lauere gelegentlich, aber ich brauchte heute etwas Spaß c:
Ceshion
3

PHP, 22 Bytes

Wenn allow_url_include=1ist in Ihrer INI-Datei:

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

JS (ES6), 38 36 31 29 Bytes

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

Abhängig vom Versprechen Konsens (41 Bytes)

fetch`//ai`.then(x=>x.text()).then(alert)
programmer5000
quelle
5
Bis wir zu einem Konsens über Versprechen kommen, würde ich sagen, dass Sie das brauchen werden alert.
Shaggy
@ Shaggy Ich denke, die Community ist sich einig, dass dieser Weg in Ordnung ist. Die Stimmenanzahl hängt von Ihrer Antwort und meinem Meta-Q ab.
programmer5000
1
Finden 10 Stimmen einen Konsens? (Echte Frage das; wie viele Stimmen brauchen wir, damit es als anpassbar angesehen wird?)
Shaggy
Gibt es textein Versprechen zurück oder funktioniert es ...then(x=>alert(x.text()))?
user253751
1
@ Shaggy ist jetzt akzeptabel. Der Konsens liegt bei +5 und 2: 1 im Verhältnis von up zu downvotes.
Rɪᴋᴇʀ
2

R, 24 Bytes

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

druckt die Ausgabe im üblichen R-Format auf die Konsole - Vektor von Zeichenfolgen, ein Element pro Zeile der Site.

Giuseppe
quelle
2

Mathematica, 13 Bytes

URLFetch@"ai"
Alephalpha
quelle
2

Python 2, 55 49 47 Bytes

Nicht kürzer, aber ich dachte wirklich, ich könnte noch weiter gehen.

from urllib import*
urlopen('http://ai').read
total menschlich
quelle
2
Ich denke, es from urllib import*\nurlopen('http://g.co').readist eine gültige Übermittlung, da die zweite Zeile eine unbenannte Funktion ist (genau wie eine unbenannte Lambda-Funktion)
Ovs
@ovs Huh, danke!
Totalhuman
Sie müssen die hinteren Klammern entfernen. Es wäre ein Schnipsel anstelle einer anderen Funktion
ovs
IOError: [Errno socket error] [Errno 8] nodename nor servname provided, or not known
Iulian Onofrei
1
@IulianOnofrei Verwenden Sie TIO? In TIO ausgeführter Code hat keinen Zugang zum Internet.
totalhuman
1

Vim-Ex-Befehl, 14 Byte

e http://3.ly/

Öffnet die URL als neuen Puffer. Netrw leidet ernsthaft unter einem restriktiven URL-Format.

Brian McCutchon
quelle
1

nc -v v.ht 80 <Datei - 31 Byte

Wo Datei enthält:

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

Ich weiß nicht, wie ich das bewerten soll. Die Datei ist 31 Byte groß und enthält die gewünschte URL. Der -vFlag-Wert entscheidet, ob ich die gewünschte Datei erhalte oder eine Fehlerantwort.

JoshRagem
quelle
nc ai 80<<<GET\ /arbeitet für mich für 18B
Kevin
Ich habe andere Leute gesehen, die das benutzt haben, aber es lässt sich auf meinem Computer nicht beheben. Ich könnte in der Lage sein, einen freizügigeren Server zu finden, aber dieser benötigt den HostWert. Ich kann vielleicht die letzten beiden \r\nCouplets entfernen
JoshRagem
Seltsamerweise würde meine Maschine nicht aifür curloder wgetaber für lösen nc. try ai.(abschließender Punkt) oder 3.ly. Es ist eine Fehlerseite, aber das liegt immer noch im Rahmen der Herausforderung.
Kevin
Hmm, wenn die Fehlerseite akzeptabel ist dann könnte ich einfach einen Body von schicken \n. Ich werde noch ein paar Sachen probieren, wenn ich nach Hause
komme
1

Schläger, 71 Bytes

(require net/url)(port->string(get-pure-port(string->url"http://ai")))
rnso
quelle
Sehen Sie hier nicht zu viele Racket-Antworten.
David Conrad
0

HTML, 24 Bytes

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

Dies schlägt technisch fehl, da es das Ergebnis wiedergibt ...

Jared Chmielecki
quelle
2
Ist das nicht STDOUT für HTML? 15 Bytes:<embed src=//ai
Shaggy
0

Vim, 2 + 12 = 14 Bytes

gf

Erwartet die URL http://3.ly/als Eingabe. gföffnet die aktuelle Datei unter dem Cursor. Dank netrw funktioniert dies problemlos für URLs. Ich habe dies gerade gefunden, als ich versuchte, mich an den Befehl zum Öffnen von URLs in Ihrem Browser zu erinnern (ich habe es gefunden, es ist gx).

Brian McCutchon
quelle
0

PowerShell, 62 Byte

PowerShell 5

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

66 Byte für ältere Versionen von PowerShell

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

Python + -Anforderungen, 55 53 50 Bytes

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

-2 Bytes durch Umschalten von URLs -3 Bytes dank ovs

HyperNeutrino
quelle
Werden verkürzte URLs normalerweise nicht zugelassen?
Shaggy
3
Wirklich, das sind Python + -Anfragen, da Anfragen (leider) nicht in der Standardbibliothek enthalten sind.
L3viathan
from request import*ist 2 Bytes kürzer
ovs
@Shaggy Um... Welp... pretty much every other answer used one rip. But I changed my URL to make it even shorter because apparently http://ai is a valid full URL..
HyperNeutrino
0

AHK, 31 bytes

URLDownloadToFile,http://g.co,g

There's a built-in so it's not very exciting. Try to fashion, though, the function is fairly long.

Engineer Toast
quelle
0

Bash + wget, 7 bytes

wget ai

Downloads the page at http://ai

dkudriavtsev
quelle
I get "Resolving ai... failed: nodename nor servname provided, or not known." with this, though wget ai. (with a trailing dot) works.
Kevin
@Kevin Works on my system. Sounds like you're on FreeBSD or macOS.
dkudriavtsev
Yes, macOS Sierra
Kevin
@Kevin I'm on Linux. Try a VM.
dkudriavtsev
Odd that it wouldn't work on macOS, since it should be the same code (modulo some os-specific compiler flags, which I wouldn't expect to change this) and nslookup, dig, and nc all find it fine. Oh well, not the first difference I've seen, and not worth installing a vm for.
Kevin
0

Ruby, 27 + 10 = 37 bytes

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

+10 bytes for -ropen-uri flag (to require open-uri library)

dkudriavtsev
quelle
0

Perl, 41 bytes

$ perl -MLWP::UserAgent -e 'getstore($url)'
Chankey Pathak
quelle
Hallo, willkommen bei Programing Puzzle & Code-Golf, schön, neue Perl-Golfer zu sehen. Es ist Ihnen nicht gestattet anzunehmen, dass sich die URL in einer Variablen befindet (Sie können leider keinen Referenzlink zu diesem Teil finden). Außerdem müssen Sie nicht perl -e''in Ihrem bytecount mitzählen. Informationen zum Zählen von Flaggen & Co. finden Sie in diesem Beitrag . Ich hoffe, wir sehen uns!
Dada
0

Pyth , 4 + 11 = 15 Bytes

jk'z

Mit URL http://v.htals Eingabe. Nimmt eine URL-Zeichenfolge als Eingabe, lädt die Datei herunter und druckt ihren Inhalt.

Erläuterung:

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

Beachten Sie, dass wir die Funktion szum Verketten der Liste aufgrund von Problemen mit den Bytetypen nicht verwenden können .

Leichtes Betrügen, 2 + 11 = 13 Byte (zeigt die Liste der Zeilen in der Datei anstelle einer einzelnen Zeichenfolge für die gesamte Datei an):

'z

Sie müssen Pyth auf Ihrem Computer installieren, um es zu testen (der Online-Interpreter führt keine unsicheren Vorgänge aus).

Jim
quelle
Willkommen bei PPCG! Ziemlich gut, aber "die URL muss bis zur Byteanzahl zählen".
Jonathan Allan
0

76 Bytes

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

MATLAB, 20 Bytes

urlread('http://ai')

Nichts Besonderes hier ...

DimP
quelle
0

Kdb +, 34 15 Bytes

KDB +> = 3.4

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

von hier aus .

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