Unduh file dari Internet

21

pengantar

Ya, sesederhana itu. Unduh file apa pun dari internet!

Aturan

Anda harus menggunakan API bahasa Anda.

Anda harus menampilkan file yang Anda unduh ke STDOUT, konsol, file, dll.

Masukan harus kosong, atau URL yang ingin Anda unduh, tetapi url harus dihitung ke jumlah byte ..

Semoga berhasil!

John Hathwood
sumber

Jawaban:

14

Bash, 21 17 11 9 7 byte

curl ai
programmer5000
sumber
1
curlbukan alat yang sudah ada? :)
Abel Tom
1
@AbelTom ini adalah "API bahasa Anda"
programmer5000
7
curl aitidak perlu untuk http: //
opatut
1
@SIGSEGV: Karena itu tidak menghasilkan stdout .
Lightness Races with Monica
2
Ini tidak berhasil untuk saya? Apa yang aiseharusnya? Diberikan di curl: (6) Could not resolve host: aisini.
Rɪᴋᴇʀ
13

Röda , 29 byte

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

Ini adalah fungsi anonim yang membuat file yang aberisi kode HTML http://ai.

fergusq
sumber
1
Sekarang untuk meyakinkan mereka untuk menjalankan server FTP ...
user253751
1
Bagaimana url itu valid?
Iulian Onofrei
1
@IulianOnofrei Mengapa itu tidak valid? Ini memiliki protokol, nama host, dan tidak ada port, path atau string kueri tetapi semuanya opsional. Apakah Anda bertanya mengapa ai adalah nama host yang valid?
user253751
1
@IulianOnofrei ai adalah TLD. Biasanya TLD tidak menyelesaikan ke alamat yang meng-host situs web, tetapi yang ini tampaknya.
user253751
4
Bagi mereka yang - seperti saya - URL tidak menyelesaikan, Anda mungkin dapat melihatnya dengan menggunakan alamat IP secara langsung: 209.59.119.34
Toast Engineer
6

MATL, 8 byte

'v.ht'Xi

URL yang disediakan untuk Xi( urlread) diawali dengan http://jika belum. Selain itu, output urlreadberisi isi respons dan ini dicetak secara implisit ketika program keluar.

Sayangnya ini tidak berfungsi untuk kompiler online karena memuat data dari URL sewenang-wenang tidak diperbolehkan dalam mode online, jadi inilah GIF. masukkan deskripsi gambar di sini

Suever
sumber
5

Pesta, 45 43 byte

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

membuka soket tcp dengan situs ai pada file deskriptor 3, mengeluarkan get, dan menampilkan hasilnya. mungkin bisa bermain golf lebih lanjut.

marcosm
sumber
1
Anda dapat menghapus tanda kutip ganda di "sekitar GET /.
Trauma Digital
Luar biasa! Ini sangat baik, bahkan jika itu bukan yang terpendek.
John Hathwood
4

Mathematica 18 Bytes

URLDownload@"v.ht"
Kelly Lowder
sumber
Saya pikir FetchURLberhasil
ngenisis
Pikirkan maksud Anda URLFetchyang memerlukan versi Mathematica sebelum 11.
Ian Miller
URLFetch masih berfungsi dalam versi saat ini tetapi pada beberapa titik mungkin akan sepenuhnya ditinggalkan, dan memang ada yang digunakan untuk menjadi FetchURL dalam URLTools referensi
Kelly Lowder
4

PowerShell, 7 Bytes

Karena kita semua menggunakan www.ai...

irm ai.

menggunakan Invoke-RestMethod- mencetak hasilnya ke StdOut

alternatif jawaban, simpan ke file bernama 'a' di direktori run, menggunakan Invoke-WebRequestdan -OutFileparam.

iwr ai. -OutF a
colsw
sumber
Saya akan melakukan nitpick yang irmtidak akan diunduh any file, seperti yang diminta dalam pertanyaan, karena jika server mengembalikan json atau xml, itu akan berubah menjadi PSObject sebagai gantinya. Dan irm ai.tidak berfungsi untuk saya - katanya nama tidak bisa diselesaikan ... Saya dapat "$(irm g.cn)"saran.
TessellatingHeckler
Poin bagus mengenai irm- @John Hathwood - apakah ini masih sesuai dengan tantangan atau perlu diubah? Saya sedikit tidak jelas tentang 'file apa saja' - ini menghasilkan salinan 'parsed' dari json atau xml, semua file lainnya dikembalikan mentah.
colsw
@TessellatingHeckler versi PS apa yang Anda gunakan? apakah Anda menjalankan sesuatu nslookup ai.atau nslookup www.ai 8.8.8.8?
colsw
Ya, itu berfungsi query terhadap Google DNS, ini adalah server DNS Windows lokal yang tidak dapat menyelesaikannya. BAIK. PSv4 juga, tapi itu tidak terlibat, sama dengan prompt cmd.
TessellatingHeckler
@TessellatingHeckler selalu sesuatu yang sederhana aha, saya akan menunggu penulis tantangan untuk mengonfirmasi apakah di atas ok, tetapi kemungkinan besar jawaban 15-byte iwrakan menjadi jawaban yang benar.
colsw
4

C #, 96 93 byte

async()=>Console.Write(await new System.Net.Http.HttpClient().GetStringAsync("http://3.ly"));
Ceshion
sumber
Selamat datang di PPCG!
Martin Ender
Terima kasih! Saya kadang-kadang mengintai tetapi saya perlu bersenang-senang hari ini c:
Ceshion
3

PHP, 22 byte

Jika allow_url_include=1ada dalam file ini Anda:

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

JS (ES6), 38 36 31 29 byte

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

Tergantung pada konsensus janji, (41 byte)

fetch`//ai`.then(x=>x.text()).then(alert)
programmer5000
sumber
5
Sampai kita mencapai konsensus tentang Janji, saya akan mengatakan Anda perlu alertini.
Shaggy
@Shaggy Saya pikir komunitas setuju bahwa cara ini OK, lihat penghitungan suara pada jawaban Anda dan meta q saya.
programmer5000
1
Apakah 10 suara menghasilkan konsensus? (Pertanyaan asli itu; berapa banyak suara yang kita perlukan untuk dianggap dapat diterima?)
Shaggy
Apakah textmengembalikan janji atau ...then(x=>alert(x.text()))berhasil?
user253751
1
@ Shaggy sekarang bisa diterima. Konsensus adalah +5 dan rasio 2: 1 dari downvotes.
Rɪᴋᴇʀ
2

R, 24 byte

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

mencetak output ke konsol dalam format R biasa - vektor string, satu elemen per baris situs.

Giuseppe
sumber
2

Mathematica, 13 byte

URLFetch@"ai"
alephalpha
sumber
2

Python 2, 55 49 47 byte

Tidak lebih pendek tetapi saya benar-benar berpikir saya bisa melangkah lebih jauh.

from urllib import*
urlopen('http://ai').read
benar-benar manusiawi
sumber
2
Saya pikir from urllib import*\nurlopen('http://g.co').readini adalah pengajuan yang valid karena baris kedua adalah fungsi yang tidak disebutkan namanya (seperti fungsi lambda yang tidak disebutkan namanya)
Ovs
@ovs Huh, terima kasih!
Sepenuhnya manusiawi
Anda harus menghapus tanda kurung trailing. Itu akan menjadi potongan bukannya fungsi jika tidak
ovs
IOError: [Errno socket error] [Errno 8] nodename nor servname provided, or not known
Iulian Onofrei
1
@IulianOnofrei Apakah Anda menggunakan TIO? Kode berjalan di TIO tidak memiliki akses ke internet.
totallyhuman
1

Perintah Vim Ex, 14 byte

e http://3.ly/

Buka URL sebagai buffer baru. Netrw secara serius menderita format URL yang ketat.

Brian McCutchon
sumber
1

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

Di mana file berisi:

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

Saya mengaku tidak tahu bagaimana saya harus menilai ini. File ini 31 byte dan berisi URL yang saya inginkan, nilai -vflag memutuskan apakah saya mendapatkan file yang saya inginkan atau respons kesalahan.

JoshRagem
sumber
nc ai 80<<<GET\ /bekerja untuk saya untuk 18B
Kevin
Saya melihat orang lain menggunakan itu tetapi tidak menyelesaikan pada mesin saya. Saya mungkin dapat menemukan server yang lebih permisif tetapi yang ini membutuhkan Hostnilai. Saya mungkin dapat menghapus dua \r\nbait terakhir
JoshRagem
Aneh, mesin saya tidak akan menyelesaikan aiuntuk curlatau wgettetapi tidak untuk nc. coba ai.(trailing dot), atau 3.ly. Itu adalah halaman kesalahan, tapi itu masih dalam batas tantangan.
Kevin
Hmm, jika halaman kesalahannya dapat diterima maka saya bisa mengirim badan yang adil \n. Saya akan mencoba beberapa hal lagi ketika saya tiba di rumah
JoshRagem
1

Racket, 71 byte

(require net/url)(port->string(get-pure-port(string->url"http://ai")))
juga
sumber
Jangan melihat terlalu banyak jawaban Racket di sekitar sini.
David Conrad
0

HTML, 24 byte

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

Ini secara teknis gagal karena membuat hasilnya ...

Jared Chmielecki
sumber
2
Apakah itu bukan STDOUT untuk HTML? 15 byte:<embed src=//ai
Shaggy
0

Vim, 2 + 12 = 14 byte

gf

Harapkan URL http://3.ly/sebagai input. gfmembuka file saat ini di bawah kursor. Berkat netrw, ini berfungsi dengan baik untuk URL. Saya menemukan ini barusan ketika mencoba mengingat perintah untuk membuka URL di peramban Anda (menemukannya, ini gx).

Brian McCutchon
sumber
0

PowerShell, 62 byte

PowerShell 5

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

66 byte untuk versi PowerShell yang lebih lama

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

Permintaan Python +, 55 53 50 byte

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

-2 byte dengan menukar URL -3 byte berkat ovs

HyperNeutrino
sumber
Bukankah URL yang diperpendek biasanya tidak diizinkan?
Shaggy
3
Sungguh, itu permintaan Python +, karena permintaan (sayangnya) tidak ada di perpustakaan standar.
L3viathan
from request import*lebih pendek 2 byte
ovs
@ Shaggy Um ... Welp ... hampir semua jawaban lainnya menggunakan satu rip. Tapi saya mengubah URL saya untuk membuatnya lebih pendek karena ternyata itu http://aiadalah URL lengkap yang valid ..
HyperNeutrino
0

AHK , 31 byte

URLDownloadToFile,http://g.co,g

Ada built-in sehingga tidak terlalu menarik. Namun, cobalah berbusana, fungsinya cukup panjang.

Toast insinyur
sumber
0

Bash + wget, 7 byte

wget ai

Unduh halaman di http: // ai

dkudriavtsev
sumber
Saya mendapatkan "Penyelesaian semua ... gagal: nama panggilan atau servname tidak disediakan, atau tidak dikenal." dengan ini, meskipun wget ai.(dengan titik trailing) berfungsi.
Kevin
@Kevin Bekerja di sistem saya. Sepertinya Anda menggunakan FreeBSD atau macOS.
dkudriavtsev
Ya, macOS Sierra
Kevin
@Kevin saya di Linux. Coba VM.
dkudriavtsev
Aneh bahwa itu tidak akan bekerja pada MacOS, karena harus kode yang sama (modulo beberapa bendera compiler os-spesifik, yang saya tidak berharap untuk mengubah ini) dan nslookup, dig, dan ncsemua merasa baik-baik saja. Oh well, bukan perbedaan pertama yang saya lihat, dan tidak layak menginstal vm untuk.
Kevin
0

Ruby, 27 + 10 = 37 byte

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

+10 byte untuk -ropen-uriflag (membutuhkan perpustakaan open-uri)

dkudriavtsev
sumber
0

Perl, 41 byte

$ perl -MLWP::UserAgent -e 'getstore($url)'
Chankey Pathak
sumber
Hai, selamat datang di Programing Puzzle & Code-golf, senang melihat pegolf baru Perl. Anda tidak boleh menganggap bahwa url ada di dalam variabel (Anda tidak dapat menemukan tautan referensi tentang bagian itu, maaf). Selain itu, Anda tidak perlu menghitung perl -e''di dalam bytecount Anda. Tentang cara menghitung flag & co, lihat posting ini . Sampai jumpa di sekitar saya harap!
Dada
0

Pyth , 4 + 11 = 15 byte

jk'z

Dengan URL http://v.htsebagai input. Mengambil string URL sebagai input, mengunduh file, dan mencetak kontennya.

Penjelasan:

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

Perhatikan bahwa kami tidak dapat menggunakan fungsi suntuk menggabungkan daftar karena masalah tipe byte.

Kecurangan sedikit, 2 + 11 = 13 byte (ini menampilkan daftar baris dalam file, bukan string tunggal untuk seluruh file):

'z

Anda perlu menginstal Pyth pada mesin Anda untuk mengujinya (juru bahasa online tidak melakukan operasi yang tidak aman).

Jim
sumber
Selamat datang di PPCG! Cukup bagus, tetapi "url harus dihitung menjadi byte byte".
Jonathan Allan
0

C #, 76 byte

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

MATLAB, 20 byte

urlread('http://ai')

Tidak ada yang mewah di sini ...

DimP
sumber
0

Kdb +, 34 15 byte

KDB +> = 3.4

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

dari sini .

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
sumber