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!

Odpowiedzi:



13

Röda , 29 bajtów

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

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


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


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.


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

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

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

Witamy w PPCG!
Martin Ender

Dzięki! Czaję się od czasu do czasu, ale potrzebowałem dziś trochę zabawy c:
Ceshion


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)

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.



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

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.


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.


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

Nie widzę tu zbyt wielu odpowiedzi na rakiety.
David Conrad

0

HTML, 24 bajty

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

To technicznie zawodzi, ponieważ renderuje wynik ...


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


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

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


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.


0

Bash + wget, 7 bajtów

wget ai

Pobiera stronę z http: // ai


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)


0

Perl, 41 bajtów

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

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


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

0

MATLAB, 20 bajtów

urlread('http://ai')

Nic szczególnego tutaj ...


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..
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.