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!

Jawaban:



13

Röda , 29 byte

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

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


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


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.


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"

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

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

Selamat datang di PPCG!
Martin Ender

Terima kasih! Saya kadang-kadang mengintai tetapi saya perlu bersenang-senang hari ini c:
Ceshion


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)

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.



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

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.


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.


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

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


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


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

0

Permintaan Python +, 55 53 50 byte

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

-2 byte dengan menukar URL -3 byte berkat ovs


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.


0

Bash + wget, 7 byte

wget ai

Unduh halaman di http: // ai


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)


0

Perl, 41 byte

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

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


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

0

MATLAB, 20 byte

urlread('http://ai')

Tidak ada yang mewah di sini ...


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..
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.