Завантажте файл з Інтернету


21

Вступ

Так, це так просто. Завантажте будь-який файл з Інтернету!

Правила

Ви повинні використовувати API своєї мови.

Ви повинні вивести завантажений у STDOUT файл, консоль, файл тощо.

Введення має бути порожнім або URL-адреса, яку ви хочете завантажити, але URL-адреса повинна нараховуватись до кількості байтів.

Удачі!

Відповіді:


14

Bash, 21 17 11 9 7 байт

curl ai

1
curlне є інструментом, який вже існує? :)
Абель Том

1
@AbelTom це "API вашої мови"
programmer5000

7
curl aiнемає потреби в http: //
opatut

1
@SIGSEGV: Тому що це не виводить на stdout .
Гонки легкості з Монікою

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-адреса діє?
Юліан Онофрей

1
@IulianOnofrei Чому це не було б дійсним? У ньому є протокол, ім'я хоста, а також порт, шлях або рядок запиту, але всі вони необов'язкові. Ви питаєте, чому ai - дійсне ім'я хоста?
користувач253751

1
@IulianOnofrei ai - це TLD. Зазвичай TLD не вирішуються для адрес, що розміщують веб-сайти, але це, мабуть, так і є.
користувач253751

4
Для тих, хто - як я - URL-адреса не вирішується, ви, ймовірно, можете переглянути її, скориставшись безпосередньо IP-адресою: 209.59.119.34
Engineer Toast

6

MATL, 8 байт

'v.ht'Xi

URL-адреса, надана Xi( urlread), є попередньою, http://якщо її ще немає. Крім того, вихідний вміст urlreadмістить вміст відповіді, і це неявно друкується при виході програми.

На жаль, це не працює для онлайн-компіляторів, оскільки завантаження даних з довільної URL-адреси заборонено в онлайн-режимі, тому ось GIF. введіть тут опис зображення


5

Bash, 45 43 байти

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

відкриває розетку tcp з сайтом ai на дескрипторі файлів 3, видає отримати та котує результат. можливо, можна пограти далі в гольф.


1
Ви можете видалити подвійні лапки "навколо GET /.
Цифрова травма

Дивовижний! Це дуже добре, навіть якщо воно не найкоротше.
Джон Хетвуд

4

Математика 18 байт

URLDownload@"v.ht"

Я думаю, що FetchURLпрацює
ngenisis

Подумайте, ви маєте на увазі, URLFetchщо вимагає версії Mathematica до 11.
Ян Міллер

URLFetch все ще працює в поточній версії, але в якийсь момент, ймовірно, буде повністю застарілим, і там раніше був FetchURL в утилітах URLTools reference.wolfram.com/language/ref/URLFetch.html
Келлі Лоудер

4

PowerShell, 7 байт

Оскільки ми всі використовуємо www.ai...

irm ai.

використання Invoke-RestMethod- друкує результат на StdOut

альтернативна відповідь, зберігає у файлі з назвою "a" у каталогу запуску, використовуючи Invoke-WebRequestта -OutFileparam.

iwr ai. -OutF a

Я збираюся nitpick, який irmне завантажуватиметься any file, як вимагається в запитанні, тому що якщо сервер поверне json або xml, він замість цього перетвориться на PSObject. І 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, це локальний DNS-сервер Windows, який не може вирішити його. ДОБРЕ. PSv4 також, але це не бере участь, те ж саме в cmd-підказці.
TesselilingHeckler

@TessellatingHeckler завжди щось просте ага, я зачекаю, коли автор виклику підтвердить, якщо вищезгадане в порядку, але, швидше за все, відповідь на 15 байтів iwrбуде правильною.
colsw

4

C #, 96 93 байт

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

Ласкаво просимо до PPCG!
Мартін Ендер

Спасибі! Я ховаюся час від часу, але мені потрібно було весело сьогодні 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 Я думаю, що громада погоджується, що цей спосіб добре.
програміст5000

1
Чи 10 голосів консенсусу? (Справжнє запитання про те, скільки голосів нам потрібно, щоб це було прийнято?)
Shaggy

Чи textповертає обіцянку чи ...then(x=>alert(x.text()))працює?
користувач253751

1
@Shaggy це прийнятно зараз. Консенсус - коефіцієнт +5 і 2: 1 до нижчих рівнів.
Rɪᴋᴇʀ

2

R, 24 байти

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

друкує вихід на консоль у звичайному форматі R - вектор рядків, один елемент на рядок сайту.



2

Python 2, 55 49 47 байт

Не коротше, але я дійсно думав, що можу піти далі.

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

2
Я думаю from urllib import*\nurlopen('http://g.co').read, що це правильне подання, оскільки другий рядок - це неназвана функція (подібно до функції неназваної лямбда)
ов

@ovs Ху, дякую!
повністюлюдсько

Вам потрібно зняти кінцеві дужки. Це був би фрагмент, а не функція
інакше

IOError: [Errno socket error] [Errno 8] nodename nor servname provided, or not known
Юліан Онофрей

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\ /працює для мене 18B
Кевін

Я бачив інших людей, які використовують це, але це не вирішує мою машину. Я, можливо, зможу знайти більш дозвільний сервер, але для цього потрібне Hostзначення. Можливо, я можу зняти останні два \r\nкуплети
JoshRagem

Дивно, моя машина не вирішуватиме aiза curlабо wgetале робить для nc. спробуйте ai.(кінцева крапка), або 3.ly. Це сторінка помилок, але це все ще в межах виклику.
Кевін

Хм, якщо сторінка помилок прийнятна, я можу надіслати тіло справедливих \n. Я спробую ще кілька речей, коли
повернусь

1

Ракетка, 71 байт

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

Тут не бачите занадто багато відповідей на рекет.
Девід Конрад


0

Vim, 2 + 12 = 14 байт

gf

Очікує URL http://3.ly/як вхідний. gfвідкриває поточний файл під курсором. Завдяки netrw це добре працює для URL-адрес. Я знайшов це саме зараз, намагаючись запам'ятати команду відкривати URL-адреси у своєму браузері (знайшов, це так gx).


0

PowerShell, 62 байти

PowerShell 5

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

66 байт для більш старих версій PowerShell

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

0

Python + запитів, 55 53 50 байт

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

-2 байти, перемикаючи URL-адреси на -3 байти завдяки ов


Зазвичай не заборонено скорочувати URL-адреси?
Кудлатий

3
Дійсно, це запити Python +, оскільки запитів (на жаль) немає у стандартній бібліотеці.
L3viathan

from request import*на 2 байти коротше
ов

@Shaggy Гм ... Welp ... майже всі інші відповіді використовували один рип. Але я змінив свою URL-адресу, щоб зробити її ще коротшою, оскільки, мабуть http://ai, дійсна повна URL-адреса ..
HyperNeutrino

0

AHK , 31 байт

URLDownloadToFile,http://g.co,g

Там є вбудований, тому це не дуже цікаво. Спробуйте моди, хоча функція досить довга.


0

Bash + wget, 7 байт

wget ai

Завантажте сторінку за адресою http: // ai


Я отримую "Розв'язання ai ... не вдалося: ім'я вузла, ні ім'я сервісу надано, або невідомо." з цим, хоча wget ai.(з крапкою) працює.
Кевін

@Kevin Працює в моїй системі. Здається, ви перебуваєте на FreeBSD або macOS.
дідрявцев

Так, macOS Сьєрра
Кевін

@Kevin Я в Linux. Спробуйте VM.
dkudriavtsev

Дивно , що він не буде працювати на MacOS, так як він повинен бути один і той же код ( по модулю деяких ОС-специфічні прапори компілятора, які я б не очікувати , щоб змінити це) і nslookup, digі ncвсе знаходять це добре. Ну добре, не перша різниця, яку я бачив, і не варто встановлювати vm для.
Кевін

0

Ruby, 27 + 10 = 37 байт

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

+10 байт для -ropen-uriпрапора (потрібна бібліотека з відкритим урі)


0

Perl, 41 байт

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

Привіт, ласкаво просимо на програмування Puzzle & Code-гольфу, приємно бачити нових гольфістів Perl навколо. Вам заборонено припускати, що URL-адреса знаходиться всередині змінної (не можу знайти вам посилання на цю частину, вибачте). Крім того, вам не доведеться рахувати perl -e''всередині вашого рахунку. Про те, як рахувати прапори & co, дивіться у цій публікації . Побачимось навколо, я сподіваюся!
Дада

0

Pyth , 4 + 11 = 15 байт

jk'z

З URL-адресою http://v.htяк вхідним. Візьме URL-рядок як вхід, завантажує файл та роздруковує його вміст.

Пояснення:

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

Зауважте, що ми не можемо використовувати функцію sдля об'єднання списку через проблеми байтів.

Трохи обман, 2 + 11 = 13 байт (він відображає список рядків у файлі, а не один рядок для всього файлу):

'z

Вам потрібно буде встановити Pyth на свій апарат, щоб перевірити його (онлайн-перекладач не виконує небезпечних операцій).


Ласкаво просимо до PPCG! Досить добре, але "URL-адреса повинна нараховувати до кількості байтів".
Джонатан Аллан


0

MATLAB, 20 байт

urlread('http://ai')

Тут нічого фантазії ...


0

Kdb +, 34 15 байт

КДБ +> = 3,4

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

від сюди .

КДБ + <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..
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.