İnternetten bir dosya indirin


21

Giriş

Evet, bu kadar basit. İnternetten herhangi bir dosyayı indirin!

kurallar

Dilinizin API'sini kullanmanız gerekir.

İndirdiğiniz dosyayı STDOUT'a, konsola, bir dosyaya vb. Çıkarmalısınız.

Girdi boş olmalı veya indirmek istediğiniz URL adresi olmalı, ancak URL bayt saymaya kadar sayılmalıdır.

İyi şanslar!

Yanıtlar:



13

Röda , 29 bayt

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

Bu, aHTML kodunu içeren bir dosya oluşturan anonim bir işlevdir http://ai.


1
Şimdi onları bir FTP sunucusu çalıştırmaya ikna etmek için ...
user253751

1
Bu URL nasıl geçerli?
Iulian Onofrei

1
@IulianOnofrei Neden geçerli değil? Bir protokol, bir ana bilgisayar adı ve hiçbir bağlantı noktası, yol veya sorgu dizesi yok, ancak hepsi isteğe bağlı. AI'nın neden geçerli bir ana bilgisayar adı olduğunu mu soruyorsunuz?
user253751

1
@IulianOnofrei ai olan TLD. Genellikle TLD'ler, web sitelerini barındıran adreslere çözümlenmez, ancak bu açıkça görünmektedir.
user253751


6

MATL, 8 bayt

'v.ht'Xi

Xi( urlread) Adresine verilen URL http://, önceden değilse, önceden hazırlandı. Ek olarak, çıktısı urlreadyanıtın içeriğini içerir ve program çıkıldığında bu örtük olarak yazdırılır.

Maalesef bu, çevrimiçi derleyiciler için işe yaramaz çünkü çevrimiçi modda isteğe bağlı bir URL'den veri yüklenmesine izin verilmez, bu nedenle işte bir GIF. görüntü tanımını buraya girin


5

Bash, 45 43 bayt

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

Dosya tanımlayıcı 3'te ai sitesi bulunan bir tcp soketi açar, bir sonuç verir ve sonucu yakalar. belki daha da golf olabilir.


1
"Etraftaki çift ​​tırnak işareti kaldırabilirsiniz GET /.
Dijital Travma

Şaşırtıcı! Bu çok iyi, en kısa olmasa bile.
John Hathwood


4

PowerShell, 7 Bayt

Hepimiz kullandığımızdan beri www.ai...

irm ai.

kullanımlar Invoke-RestMethod- sonucu StdOut'a yazdırır

alternatif cevap, kullanma Invoke-WebRequestve -OutFileparam işlevini çalıştırma dizininde 'a' adlı dosyaya kaydeder .

iwr ai. -OutF a

O nitpick gidiyorum irmkarşıdan olmaz any filesözkonusu istendiği gibi sunucu döndürür json veya xml eğer, bunun yerine bir PSObject dönüştü olacak, çünkü. Ve irm ai.benim için çalışmıyor - adının çözülemediğini söylüyor ... "$(irm g.cn)"Bir öneri olarak alıyorum .
TessellatingHeckler 11:17

ile ilgili iyi bir nokta irm- @John Hathwood - bu hala mücadeleye uygun mu yoksa değiştirilmesi mi gerekiyor? Ben 'herhangi bir dosya' konusunda biraz net değilim - herhangi bir json veya xml 'ayrıştırılmış' bir kopyasını çıkarır, diğer tüm dosyalar ham döndürülür.
colsw

@TessellatingHeckler PS'nin hangi sürümünü kullanıyorsunuz? Çalışan bir şey alırım nslookup ai.ya nslookup www.ai 8.8.8.8?
colsw

Evet, Google DNS’e karşı sorgulama yapıyor, onu çözemeyen yerel bir Windows DNS sunucusu. TAMAM. PSv4 de, ancak bu bir cmd komut isteminde aynı değildir.
TessellatingHeckler 11:17

@TessellatingHeckler her zaman basit bir şey aha, meydan yazarı için yukarıdakilerin uygun olup olmadığını onaylamasını bekleyeceğim, ancak büyük olasılıkla 15 baytlık iwrcevap doğru olacaktır.
colsw


3

PHP, 22 bayt

Eğer allow_url_include=1sizin ini dosyasında geçerli:

<?=include"http://ai";   

3

JS (ES6), 38 36 31 29 bayt

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

Söz birliğine bağlı olarak, (41 bayt)

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

5
Sözler konusunda uzlaşmaya varıncaya kadar, buna ihtiyacın olacağını söyleyebilirim alert.
Shaggy

@Shaggy Topluluğun bu yolun iyi olduğunu kabul ettiğini düşünüyorum, cevabın ve benim q sayfamın oy sayımına bakın.
programcı5000

1
Bir oy birliğinin yapacağı 10 oy mu? (Asıl soru; kabul edilemez sayılması için kaç oy gerekir?)
Shaggy

Mu textbir söz iade veya does ...then(x=>alert(x.text()))işi?
user253751

1
@Shaggy şimdi kabul edilebilir. Konsensüs +5 ve 2: 1 oranına kadar düşük oy oranıdır.
Rɪᴋᴇʀ

2

R, 24 bayt

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

Çıkışı her zamanki R biçiminde - dizgelerin vektörü, sitenin her satırı için bir öğe olan konsola yazdırır.



2

Python 2, 55 49 47 bayt

Daha kısa değil ama daha ileri gidebilirim diye düşündüm.

from urllib import*
urlopen('http://ai').read

2
from urllib import*\nurlopen('http://g.co').readİkinci satır adsız bir fonksiyon olduğu için geçerli bir başvuru olduğunu düşünüyorum (adsız bir lambda fonksiyonu gibi)
ovs

@ovs Huh, teşekkürler!
tamamen insanlık

Çekme dirseklerini çıkarmanız gerekir. Bu sık sık bir işlev aksi yerine pasajı olurdu
ovs

IOError: [Errno socket error] [Errno 8] nodename nor servname provided, or not known
Iulian Onofrei

1
@IulianOnofrei TIO kullanıyor musunuz? TIO'da çalışan kod internete erişemiyor.
tamamen insanlık

1

Vim Ex komutu, 14 bayt

e http://3.ly/

URL'yi yeni bir tampon olarak açar. Netrw, kısıtlayıcı bir URL biçiminden ciddi şekilde zarar görüyor.


1

nc -v v.ht 80 <dosya - 31 bayt

Dosyanın bulunduğu yer:

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

Bunu nasıl puanlamam gerektiğine dair cehaletten bahsediyorum. Dosya 31 bayttır ve istediğim URL'yi içerir, istediğim -vdosyayı veya bir hata yanıtını alırsam bayrak değeri karar verir.


nc ai 80<<<GET\ /18B'de benim için çalışıyor
Kevin

Bunu kullanan diğer insanları gördüm ama makinemde çözülmedi. Daha izin verici bir sunucu bulabilirim, ancak bunun Hostdeğere ihtiyacı var . Belki son iki kaldırabilirsiniz \r\nbeyitlerin
JoshRagem

Tek, benim makine gidermek olmaz aiiçin curlya wgetama için yapar nc. deneyin ai.(sondaki nokta) veya 3.ly. Bu bir hata sayfası, ancak yine de mücadelenin sınırları dahilinde.
Kevin

Hmm, eğer hata sayfası kabul edilebilirse, sadece bir beden gönderebilirim \n. Eve döndüğümde biraz daha şey deneyeceğim
JoshRagem

1

Raket, 71 bayt

(require net/url)(port->string(get-pure-port(string->url"http://ai")))

Buralarda çok fazla Raket cevapları görmeyin.
David Conrad

0

HTML, 24 bayt

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

Bu teknik olarak sonuç verirken başarısız olur ...


2
HTML için STDOUT değil mi? 15 bayt:<embed src=//ai
Shaggy

0

Vim, 2 + 12 = 14 bayt

gf

URL'yi http://3.ly/girdi olarak bekler . gfimlecin altındaki geçerli dosyayı açar. Netrw sayesinde, bu URL'ler için iyi çalışır. Bunu tarayıcınızda URL’leri açma komutunu hatırlamaya çalışırken şimdi buldum (bu bulundu gx).


0

PowerShell, 62 bayt

PowerShell 5

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

PowerShell'in daha eski sürümleri için 66 byte

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

0

Python + istekleri, 55 53 50 bayt

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

URL'leri değiştirerek -2 bayt ovs sayesinde -3 bayt


Kısaltılmış URL’ler genellikle izin verilmez mi?
Shaggy

3
Gerçekten, bu Python + istekleridir, çünkü talepler (ne yazık ki) standart kütüphanede değildir.
L3viathan

from request import*2 bayt daha kısa
ovs

@Shaggy Um ... Welp ... hemen hemen her cevapta bir rip kullanılmış. Fakat http://ai
URL'mi

0

AHK , 31 bayt

URLDownloadToFile,http://g.co,g

Bir yerleşik var bu yüzden çok heyecan verici değil. Yine de modayı deneyin, fonksiyon oldukça uzun.


0

Bash + wget, 7 bayt

wget ai

Sayfayı http: // ai'den indirir.


"AI çözümlenemedi ... başarısız oldu: nodename veya servname sağlanmadı veya bilinmiyor." Bununla birlikte, wget ai.(sonunda bir nokta ile) çalışır.
Kevin

@Kevin Sistemimde çalışıyor. FreeBSD veya macOS üzerindesiniz.
dkudriavtsev

Evet, macOS Sierra
Kevin

@Kevin Linux'tayım. Bir VM'yi deneyin.
dkudriavtsev

Garip o MacOS üzerinde çalışma olmaz aynı kodu olmalıdır çünkü ve (bunu değiştirmek istemem bazı os özgü derleyici bayrakları, modulo) o nslookup, digve nctüm güzel buluyorum. Oh evet, gördüğüm ilk fark değil ve bunun için bir vm kurmaya değmez.
Kevin

0

Ruby, 27 + 10 = 37 bayt

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

-ropen-uriBayrak için +10 bayt (açık-uri kütüphanesi gerektirir)


0

Perl, 41 bayt

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

Merhaba, etrafında yeni Perl golfçüler görmek güzel Programlama Yapboz ve Kod golf hoş geldiniz. URL'nin bir değişken içinde olduğunu varsaymanıza izin verilmiyor (bu bölümle ilgili bir referans bağlantısı bulamıyorum, üzgünüm). Ayrıca, perl -e''bayt sayınızın içinde saymanız gerekmez. Bayrakları ve ortak sayımı hakkında, bu yazıya bakın . Görüşürüz umarım!
Dada

0

Pyth , 4 + 11 = 15 bayt

jk'z

URL ile http://v.htGiriş olarak . Bir URL dizesini girdi olarak alır, dosyayı indirir ve içeriğini yazdırır.

Açıklama:

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

İşlevi kullanamayacağımızı unutmayın. sBayt türü sorunları nedeniyle listeyi birleştirme .

Hafifçe aldatma, 2 + 11 = 13 bayt (tüm dosya için tek bir dize yerine dosyadaki satırların listesini görüntüler):

'z

Test etmek için Pyth'i makinenize yüklemeniz gerekecektir (çevrimiçi tercüman güvensiz işlem yapmaz).


PPCG'ye Hoşgeldiniz! Oldukça iyi, ama "url bayt saymaya sayılmalıdır".
Jonathan Allan

0

C #, 76 bayt

Console.WriteLine(new System.Net.WebClient().DownloadString("http://3.ly"));

0

MATLAB, 20 bayt

urlread('http://ai')

Burada süslü bir şey yok ...


0

Kdb +, 34 15 bayt

KDB +> = 3.4

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

dan burada .

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..
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.