Pobierz plik z Internetu

21

Wprowadzenie

Tak, to takie proste. Pobierz dowolny plik z Internetu!

Zasady

Musisz użyć interfejsu API swojego języka.

Musisz wydrukować pobrany plik do STDOUT, konsoli, pliku itp.

Dane wejściowe powinny być puste lub adres URL, który chcesz pobrać, ale adres URL musi się liczyć do liczby bajtów.

Powodzenia!

John Hathwood
źródło

Odpowiedzi:

14

Bash, 21 17 11 9 7 bajtów

curl ai
programmer5000
źródło
1
curlnie jest narzędziem, które już istnieje? :)
Abel Tom
1
@AbelTom jest to „interfejs API Twojego języka”
programista
7
curl ainie trzeba http: //
opatut
1
@SIGSEGV: Bo to nie wyjście do stdout .
Lekkość ściga się z Moniką
2
To mi nie działa? Co aipowinno być Daje curl: (6) Could not resolve host: aitutaj.
Rɪᴋᴇʀ
13

Röda , 29 bajtów

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

Jest to anonimowa funkcja, która tworzy plik azawierający kod HTML http://ai.

fergusq
źródło
1
Teraz, aby przekonać ich do uruchomienia serwera FTP ...
user253751
1
Jak ważny jest ten adres URL?
Iulian Onofrei
1
@IulianOnofrei Dlaczego to nie byłoby ważne? Ma protokół, nazwę hosta i nie zawiera portu, ścieżki ani ciągu zapytania, ale wszystkie są opcjonalne. Czy pytasz, dlaczego ai jest prawidłową nazwą hosta?
user253751
1
@IulianOnofrei ai jest TLD. Zwykle TLD nie rozwiązują adresów hostujących witryny, ale najwyraźniej tak jest.
user253751
4
Dla tych, którzy - podobnie jak ja - nie rozwiązuje adresu URL, prawdopodobnie możesz go wyświetlić, używając adresu IP bezpośrednio: 209.59.119.34
Toast inżynierski
6

MATL, 8 bajtów

'v.ht'Xi

Adres URL podany do Xi( urlread) jest dodawany przed, http://jeśli jeszcze nie jest. Dodatkowo dane wyjściowe urlreadzawierają treść odpowiedzi, która jest domyślnie drukowana po wyjściu z programu.

Niestety nie działa to w przypadku kompilatorów online, ponieważ ładowanie danych z dowolnego adresu URL jest zabronione w trybie online, więc oto GIF. wprowadź opis zdjęcia tutaj

Suever
źródło
5

Grzmotnąć, 45 43 bajty

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

otwiera gniazdo tcp z witryną AI na deskryptorze pliku 3, wydaje polecenie get i koty wynik. być może można dalej grać w golfa.

marcosm
źródło
1
Możesz usunąć podwójne cudzysłowy "wokół GET /.
Cyfrowa trauma
Niesamowity! To jest bardzo dobre, nawet jeśli nie jest najkrótsze.
John Hathwood,
4

Mathematica 18 bajtów

URLDownload@"v.ht"
Kelly Lowder
źródło
Myślę, że FetchURLdziała
ngenisis
Myślę, że masz na myśli, URLFetchktóra wymaga wersji Mathematica przed 11.
Ian Miller
URLFetch nadal działa w bieżącej wersji, ale w pewnym momencie prawdopodobnie będzie całkowicie przestarzały, a kiedyś był FetchURL w Utilities URLTools reference.wolfram.com/language/ref/URLFetch.html
Kelly Lowder
4

PowerShell, 7 bajtów

Ponieważ wszyscy używamy www.ai...

irm ai.

uses Invoke-RestMethod- drukuje wynik do StdOut

alternatywna odpowiedź, zapisuje do pliku o nazwie „a” w katalogu uruchamiania, używając Invoke-WebRequesti -OutFileparam.

iwr ai. -OutF a
colsw
źródło
Idę do nitpick, irmktóry nie pobierze any file, zgodnie z żądaniem w pytaniu, ponieważ jeśli serwer zwróci json lub xml, zamiast tego zostanie zamieniony na obiekt PSObject. I irm ai.nie działa dla mnie - mówi, że imienia nie można rozwiązać ... Dostaję "$(irm g.cn)"jako sugestię.
TessellatingHeckler
dobra uwaga dotycząca irm- @John Hathwood - czy to nadal odpowiada wyzwaniu, czy wymaga zmiany? jestem trochę niejasny w kwestii „dowolnego pliku” - wyświetla „przeanalizowaną” kopię dowolnego pliku json lub xml, wszystkie inne pliki są zwracane na surowo.
colsw
@TessellatingHeckler jakiej wersji PS używasz? masz coś uruchomionego nslookup ai.lub nslookup www.ai 8.8.8.8?
colsw
Tak, działa sprawdzanie zapytań przeciwko Google DNS, jest to lokalny serwer DNS systemu Windows, który nie może go rozwiązać. DOBRZE. PSv4 również, ale to nie jest zaangażowane, to samo po poleceniu cmd.
TessellatingHeckler
@TessellatingHeckler zawsze coś prostego aha, poczekam, aż autor wyzwania potwierdzi, czy powyższe jest w porządku, ale najprawdopodobniej 15-bajtowa iwrodpowiedź będzie poprawna.
colsw
4

C #, 96 93 bajtów

async()=>Console.Write(await new System.Net.Http.HttpClient().GetStringAsync("http://3.ly"));
Ceshion
źródło
Witamy w PPCG!
Martin Ender
Dzięki! Czaję się od czasu do czasu, ale potrzebowałem dziś trochę zabawy c:
Ceshion
3

PHP, 22 bajty

Jeśli allow_url_include=1jest w twoim pliku ini:

<?=include"http://ai";   
Jared Chmielecki
źródło
3

JS (ES6), 38 36 31 29 bajtów

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

W zależności od konsensusu obietnicy (41 bajtów)

fetch`//ai`.then(x=>x.text()).then(alert)
programmer5000
źródło
5
Dopóki nie osiągniemy konsensusu w sprawie obietnic, powiedziałbym, że będziesz tego potrzebować alert.
Kudłaty
@Shaggy Wydaje mi się, że społeczność zgadza się, że w ten sposób jest OK. Zobacz głosowanie zależy od twojej odpowiedzi i mojego meta q.
programista
1
Czy 10 głosów stanowi konsensus? (Prawdziwe pytanie; ile głosów potrzebujemy, aby uznać za przystosowalne?)
Kudłaty
Zwraca textobietnicę czy ...then(x=>alert(x.text()))działa?
user253751
1
@Shaggy jest teraz do przyjęcia. Konsensus wynosi +5 i stosunek 2: 1 do głosów negatywnych.
Rɪᴋᴇʀ
2

R, 24 bajty

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

wypisuje dane wyjściowe na konsolę w zwykłym formacie R - wektor ciągów, jeden element na wiersz witryny.

Giuseppe
źródło
2

Mathematica, 13 bajtów

URLFetch@"ai"
alephalpha
źródło
2

Python 2, 55 49 47 bajtów

Nie krótszy, ale naprawdę pomyślałem, że mogę pójść dalej.

from urllib import*
urlopen('http://ai').read
całkowicie ludzki
źródło
2
Myślę, że from urllib import*\nurlopen('http://g.co').readjest to poprawne przesłanie, ponieważ druga linia to funkcja bez nazwy (podobnie jak nienazwana funkcja lambda)
2017
@ovs Huh, dzięki!
całkowicieludzki
Musisz usunąć nawiasy końcowe. W innym przypadku byłby to fragment
kodu
IOError: [Errno socket error] [Errno 8] nodename nor servname provided, or not known
Iulian Onofrei
1
@IulianOnofrei Czy korzystasz z TIO? Kod uruchamiany w TIO nie ma dostępu do Internetu.
całkowicie ludzki,
1

Komenda Vim Ex, 14 bajtów

e http://3.ly/

Otwiera adres URL jako nowy bufor. Netrw poważnie cierpi z powodu restrykcyjnego formatu adresu URL.

Brian McCutchon
źródło
1

nc -v v.ht 80 <plik - 31 bajtów

Gdzie plik zawiera:

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

Wyznaję niewiedzę o tym, jak powinienem to zdobyć. Plik ma 31 bajtów i zawiera adres URL, którego chcę, -vwartość flagi decyduje, czy otrzymam żądany plik, czy odpowiedź na błąd.

JoshRagem
źródło
nc ai 80<<<GET\ /pracuje dla mnie dla 18B
Kevin
Widziałem inne osoby, które tego używają, ale to nie działa na moim komputerze. Być może uda mi się znaleźć bardziej liberalny serwer, ale ten potrzebuje Hostwartości. Mogę usunąć dwa ostatnie \r\nkuplety
JoshRagem
Dziwne, moja maszyna nie rozwiąże aiza curlalbo wgetale nie dla nc. try ai.(kropka końcowa) lub 3.ly. Jest to strona błędu, ale nadal mieści się w granicach wyzwania.
Kevin
Hmm, jeśli strona błędu jest akceptowalna, mógłbym wysłać treść just \n. Spróbuję więcej rzeczy, kiedy wrócę do domu
JoshRagem
1

Rakieta, 71 bajtów

(require net/url)(port->string(get-pure-port(string->url"http://ai")))
rnso
źródło
Nie widzę tu zbyt wielu odpowiedzi na rakiety.
David Conrad
0

HTML, 24 bajty

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

To technicznie zawodzi, ponieważ renderuje wynik ...

Jared Chmielecki
źródło
2
Czy to nie jest STDOUT dla HTML? 15 bajtów:<embed src=//ai
Kudłaty
0

Vim, 2 + 12 = 14 bajtów

gf

Oczekuje adresu URL http://3.ly/jako danych wejściowych. gfotwiera bieżący plik pod kursorem. Dzięki netrw działa to dobrze w przypadku adresów URL. Znalazłem to właśnie teraz, próbując zapamiętać polecenie otwierania adresów URL w przeglądarce (znalazłem, to jest gx).

Brian McCutchon
źródło
0

PowerShell, 62 bajty

PowerShell 5

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

66 bajtów dla starszych wersji PowerShell

-join[char[]](new-object net.webclient).downloaddata('http://ai.')
Andrei Odegov
źródło
0

Python + żądania, 55 53 50 bajtów

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

-2 bajty poprzez przełączanie adresów URL -3 bajty dzięki ovs

HyperNeutrino
źródło
Czy skrócone adresy URL zwykle nie są niedozwolone?
Kudłaty
3
Naprawdę, to są żądania Python +, ponieważ żądania (niestety) nie znajdują się w standardowej bibliotece.
L3viathan
from request import*jest o 2 bajty krótszy
ovs
@Shaggy Um ... Welp ... właściwie każda inna odpowiedź używała jednego zgrania. Ale zmieniłem adres URL, aby był jeszcze krótszy, ponieważ najwyraźniej http://aijest to prawidłowy pełny adres URL.
HyperNeutrino
0

AHK , 31 bajtów

URLDownloadToFile,http://g.co,g

Jest wbudowany, więc nie jest zbyt ekscytujący. Spróbuj jednak mody, funkcja jest dość długa.

Inżynier Toast
źródło
0

Bash + wget, 7 bajtów

wget ai

Pobiera stronę z http: // ai

dkudriavtsev
źródło
Pojawia się komunikat „Rozwiązanie ai ... nie powiodło się: podana jest nazwa węzła lub nazwa serwera lub nieznana”. z tym jednak wget ai.(z kropką) działa.
Kevin
@ Kevin Działa w moim systemie. Wygląda na to, że korzystasz z FreeBSD lub macOS.
dkudriavtsev
Tak, macOS Sierra
Kevin
@Kevin Jestem w systemie Linux. Wypróbuj maszynę wirtualną.
dkudriavtsev
Dziwne, że nie będą pracować na MacOS, ponieważ powinien on być taki sam kod (modulo pewne specyficzne os flagi kompilatora, które nie spodziewałbym się to zmienić) i nslookup, digi ncwszyscy uważają, że jest w porządku. No cóż, nie pierwsza różnica, jaką widziałem, i nie warto instalować vm.
Kevin
0

Rubinowy, 27 + 10 = 37 bajtów

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

+10 bajtów dla -ropen-uriflagi (wymaga biblioteki open-uri)

dkudriavtsev
źródło
0

Perl, 41 bajtów

$ perl -MLWP::UserAgent -e 'getstore($url)'
Chankey Pathak
źródło
Cześć, witamy w Programowaniu Puzzle i Code-golfa, miło widzieć nowych golfistów Perla. Nie możesz zakładać, że adres URL znajduje się w zmiennej (przepraszam, nie możesz znaleźć linku referencyjnego na temat tej części). Co więcej, nie musisz liczyć perl -e''w swoim bytecount. O tym, jak liczyć flagi i co, zobacz ten post . Do zobaczenia mam nadzieję!
Dada
0

Pyth , 4 + 11 = 15 bajtów

jk'z

Z adresem URL http://v.htjako wejściem. Pobiera ciąg adresu URL jako dane wejściowe, pobiera plik i drukuje jego zawartość.

Wyjaśnienie:

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

Zauważ, że nie możemy użyć funkcji sdo konkatenacji listy z powodu problemów z typami bajtów.

Nieznaczne oszustwo, 2 + 11 = 13 bajtów (wyświetla listę linii w pliku zamiast jednego ciągu dla całego pliku):

'z

Będziesz musiał zainstalować Pyth na swoim komputerze, aby go przetestować (interpreter online nie wykonuje niebezpiecznych operacji).

Jim
źródło
Witamy w PPCG! Całkiem dobrze, ale „adres URL musi się liczyć do liczby bajtów”.
Jonathan Allan
0

C #, 76 bajtów

Console.WriteLine(new System.Net.WebClient().DownloadString("http://3.ly"));
Ark-kun
źródło
0

MATLAB, 20 bajtów

urlread('http://ai')

Nic szczególnego tutaj ...

DimP
źródło
0

Kdb +, 34 15 bajtów

KDB +> = 3,4

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

od tutaj .

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
źródło