인터넷에서 파일 다운로드


21

소개

예, 그렇게 간단합니다. 인터넷에서 파일을 다운로드하십시오!

규칙

언어의 API를 사용해야합니다.

STDOUT, 콘솔, 파일 등에 다운로드 한 파일을 출력해야합니다.

입력 내용이 비어 있거나 다운로드하려는 URL이어야하지만 URL은 바이트 수로 계산되어야합니다.

행운을 빕니다!

답변:


14

배쉬, 21 17 11 9 7 바이트

curl ai

1
curl이미 존재하는 도구가 아닙니까? :)
Abel Tom 17 년

1
@AbelTom 이것은 "귀하의 언어 API"입니다
programmer5000

7
curl aihttp : // 필요 없음
opatut

1
@SIGSEGV : stdout으로 출력되지 않기 때문 입니다.
Monica와의 가벼움 경주

2
이것은 나를 위해 작동하지 않습니까? 무엇이 ai있어야합니까? curl: (6) Could not resolve host: ai여기에 제공 합니다.
Rɪᴋᴇʀ

13

로다 , 29 바이트

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

a의 HTML 코드를 포함 하는 파일을 생성하는 익명 함수 입니다 http://ai.


1
이제 그들이 FTP 서버를 운영하도록 설득하기 위해 ...
user253751

1
해당 URL은 어떻게 유효합니까?
Iulian Onofrei

1
@IulianOnofrei 왜 유효하지 않습니까? 프로토콜, 호스트 이름이 있으며 포트, 경로 또는 쿼리 문자열이 없지만 모두 선택 사항입니다. ai가 유효한 호스트 이름 인 이유를 묻고 있습니까?
user253751

1
@IulianOnofrei ai TLD입니다. 일반적으로 TLD는 웹 사이트를 호스팅하는 주소로 해결되지 않지만 분명히 그렇게합니다.
user253751

4
나처럼 -URL이
Engineer Toast

6

MATL, 8 바이트

'v.ht'Xi

Xi( urlread)에 제공된 URL http://이 아직없는 경우 앞에 붙습니다 . 또한 출력 urlread에는 응답 내용 이 포함되며 프로그램이 종료 될 때 암시 적으로 인쇄됩니다.

불행히도 온라인 모드에서는 임의의 URL에서 데이터를로드 할 수 없으므로 GIF는 작동하지 않으므로 온라인 컴파일러에서는 작동하지 않습니다. enter image description here


5

세게 때리다, 45 43 바이트

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

파일 디스크립터 3에서 ai 사이트와 함께 tcp 소켓을 열고 get을 발행하고 결과를 표시합니다. 아마 더 골프를 칠 수 있습니다.


1
당신은 따옴표를 제거 할 수 있습니다 "주위 GET /.
Digital Trauma

놀랄 만한! 가장 짧지 않더라도 매우 좋습니다.
John Hathwood


4

PowerShell, 7 바이트

우리 모두를 사용하고 있기 때문에 www.ai...

irm ai.

사용 Invoke-RestMethod- 표준 출력으로 결과를 출력

대체 답변, Invoke-WebRequest-OutFileparam을 사용하여 실행 디렉토리의 'a'라는 파일에 저장합니다 .

iwr ai. -OutF a

서버가 json 또는 xml을 반환하면 대신 PSObject로 변환되므로 질문에 요청 된대로 irm다운로드하지 않는 nitpick을 any file사용합니다. 그리고 irm ai.나를 위해 작동하지 않습니다-이름을 확인할 수 없다고 말합니다 ... 나는 "$(irm g.cn)"제안으로 얻습니다 .
TessellatingHeckler

irm@ 존 해스 우드 (John Hathwood) 에 관한 좋은 지적 -이것이 여전히 도전에 맞거나 변경이 필요한가? 나는 '모든 파일'에 대해 조금 불분명합니다-json 또는 xml의 '파싱 된'복사본을 출력하고 다른 모든 파일은 원시로 반환됩니다.
colsw

@TessellatingHeckler 어떤 버전의 PS를 사용하고 있습니까? 당신은 무엇을 실행 합니까 nslookup ai.또는 nslookup www.ai 8.8.8.8?
colsw

그렇습니다 .Google DNS에 대해 쿼리 작업을 수행하며 해결할 수없는 로컬 Windows DNS 서버입니다. 승인. PSv4도 마찬가지이지만 cmd 프롬프트에서도 마찬가지입니다.
TessellatingHeckler

@TessellatingHeckler는 항상 간단한 aha입니다. 위의 저자가 위의 내용이 정상인지 확인하기를 기다릴 것입니다. 그러나 15 바이트 iwr답변이 올바른 것입니다.
colsw

4

C #, 96 93 바이트

async()=>Console.Write(await new System.Net.Http.HttpClient().GetStringAsync("http://3.ly"));

PPCG에 오신 것을 환영합니다!
마틴 엔더 17시

감사! 나는 가끔 숨어 있지만 오늘 재미가 필요 c :
Ceshion


3

JS (ES6), 38 36 31 29 바이트

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

약속 합의에 따라 (41 바이트)

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

5
약속에 대한 합의에 도달 할 때까지이 작업이 필요하다고 말씀 드리겠습니다 alert.
Shaggy

@Shaggy 나는 커뮤니티가 이런 식으로 괜찮다고 동의한다고 생각합니다. 귀하의 답변과 내 메타 질문에 대한 투표 수를 참조하십시오.
programmer5000

1
합의가 10 표를합니까? (정확한 질문입니다; 우리는이를 적용 가능한 것으로 간주하기 위해 얼마나 많은 표가 필요합니까?)
Shaggy

text약속을 반환 합니까 아니면 ...then(x=>alert(x.text()))작동합니까?
user253751

1
@Shaggy 지금은 허용됩니다. 컨센서스는 +5 및 2 : 1 비율의 최대 다운 보트입니다.
Rɪᴋᴇʀ

2

R, 24 바이트

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

사이트의 라인 당 하나의 요소 인 문자열 벡터 인 일반적인 R 형식으로 콘솔에 출력을 인쇄합니다.



2

파이썬 2, 55 49 47 바이트

짧지는 않지만 나는 더 나아갈 수 있다고 생각했습니다.

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

2
from urllib import*\nurlopen('http://g.co').read두 번째 줄은 명명되지 않은 람다 함수와 같은 명명되지 않은 함수이므로 유효한 제출 이라고 생각 합니다.
ovs

@ovs 허, 감사합니다!
완전히 인간적인

후행 괄호를 제거해야합니다. 그것은이 자주 기능 그렇지 않으면 대신 니펫을 것
OVS

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

1
@IulianOnofrei TIO를 사용하고 있습니까? TIO에서 실행되는 코드는 인터넷에 액세스 할 수 없습니다.
완전히 인간적인

1

Vim Ex 명령, 14 바이트

e http://3.ly/

URL을 새 버퍼로 엽니 다. Netrw는 제한적인 URL 형식으로 인해 심각한 문제를 겪고 있습니다.


1

nc -v v.ht 80 <파일-31 바이트

파일에 다음이 포함되어 있습니다.

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

나는 이것을 어떻게 평가해야하는지 무지한다고 공언한다. 파일은 31 바이트이며 원하는 URL을 포함하며 -v플래그 값은 원하는 파일을 가져올 지 또는 오류 응답을 얻을지 결정합니다.


nc ai 80<<<GET\ / works for me for 18B
Kevin

I saw other people using that but it doesn't resolve on my machine. I might be able to find a more permissive server but this one needs the Host value. I can maybe remove the last two \r\n couplets
JoshRagem

Odd, my machine wouldn't resolve ai for curl or wget but does for nc. try ai. (trailing dot), or 3.ly. It's an error page, but that's still within the bounds of the challenge.
Kevin

Hmm, if the error page is acceptable then I could send a body of just \n. I'll try some more stuff when I get home
JoshRagem

1

Racket, 71 bytes

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

Don't see too many Racket answers around here.
David Conrad

0

HTML, 24 bytes

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

This technically fails as it renders the result...


2
Is that not STDOUT for HTML? 15 bytes: <embed src=//ai
Shaggy

0

Vim, 2 + 12 = 14 bytes

gf

Expects the URL http://3.ly/ as input. gf opens the current file under the cursor. Thanks to netrw, this works fine for URLs. I found this just now while trying to remember the command to open URLs in your browser (found it, it's gx).


0

PowerShell, 62 bytes

PowerShell 5

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

66 bytes for more older versions of PowerShell

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

0

Python + requests, 55 53 50 bytes

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

-2 bytes by switching URLs -3 bytes thanks to ovs


Aren't shortened URLs usually disallowed?
Shaggy

3
Really, that's Python + requests, since requests is (sadly) not in the standard library.
L3viathan

from request import* is 2 bytes shorter
ovs

@Shaggy Um... Welp... pretty much every other answer used one rip. But I changed my URL to make it even shorter because apparently http://ai is a valid full URL..
HyperNeutrino

0

AHK, 31 bytes

URLDownloadToFile,http://g.co,g

There's a built-in so it's not very exciting. Try to fashion, though, the function is fairly long.


0

Bash + wget, 7 bytes

wget ai

Downloads the page at http://ai


I get "Resolving ai... failed: nodename nor servname provided, or not known." with this, though wget ai. (with a trailing dot) works.
Kevin

@Kevin Works on my system. Sounds like you're on FreeBSD or macOS.
dkudriavtsev

Yes, macOS Sierra
Kevin

@Kevin I'm on Linux. Try a VM.
dkudriavtsev

Odd that it wouldn't work on macOS, since it should be the same code (modulo some os-specific compiler flags, which I wouldn't expect to change this) and nslookup, dig, and nc all find it fine. Oh well, not the first difference I've seen, and not worth installing a vm for.
Kevin

0

Ruby, 27 + 10 = 37 bytes

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

+10 bytes for -ropen-uri flag (to require open-uri library)


0

Perl, 41 bytes

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

Hi, welcome on Programing Puzzle & Code-golf, nice to see new Perl golfers around. You are not allowed to suppose that the url is inside a variable (can't find you a reference link about that part, sorry). Furthermore, you don't have to count perl -e'' inside your bytecount. About how to count flags & co, see this post. See you around I hope!
Dada

0

Pyth, 4 + 11 = 15 bytes

jk'z

With URL http://v.ht as input. Takes an URL string as input, downloads the file, and prints its content.

Explanation:

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

Note that we cannot use the function s for concatenating the list because of bytes types issues.

Slightly cheating, 2 + 11 = 13 bytes (it displays the list of the lines in the file instead of a single string for the whole file):

'z

You will need to install Pyth on your machine to test it (the online interpreter does not execute unsafe operations).


Welcome to PPCG! Pretty good, but "the url must count to byte count".
Jonathan Allan

0

C#, 76 bytes

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

0

MATLAB, 20 bytes

urlread('http://ai')

Nothing fancy here...


0

Kdb+, 34 15 bytes

KDB+ >= 3.4

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

from here.

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..
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.