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!

Antworten:



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.


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


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.


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

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

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

Willkommen bei PPCG!
Martin Ender

Vielen Dank! Ich lauere gelegentlich, aber ich brauchte heute etwas Spaß c:
Ceshion


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)

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.



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

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.


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.


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

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


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


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

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


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.


0

Bash + wget, 7 bytes

wget ai

Downloads the page at http://ai


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)


0

Perl, 41 bytes

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

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


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

0

MATLAB, 20 Bytes

urlread('http://ai')

Nichts Besonderes hier ...


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..
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.