Télécharger un fichier sur Internet

21

introduction

Oui, c'est aussi simple que ça. Téléchargez n'importe quel fichier sur Internet!

Règles

Vous devez utiliser l'API de votre langue.

Vous devez sortir le fichier que vous avez téléchargé sur STDOUT, la console, un fichier, etc.

L'entrée doit être vide, ou l'URL que vous souhaitez télécharger, mais l'URL doit compter pour le nombre d'octets.

Bonne chance!

John Hathwood
la source

Réponses:

14

Bash, 21 17 11 9 7 octets

curl ai
programmer5000
la source
1
curln'est pas un outil qui existe déjà? :)
Abel Tom
1
@AbelTom c'est "l'API de votre langue"
programmer5000
7
curl aipas besoin de http: //
opatut
1
@SIGSEGV: Parce que cela ne sort pas sur stdout .
Courses de légèreté avec Monica
2
Ça ne marche pas pour moi? Qu'est-ce qui est aicensé être? Donne curl: (6) Could not resolve host: aiici.
Rɪᴋᴇʀ
13

Röda , 29 octets

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

Il s'agit d'une fonction anonyme qui crée un fichier acontenant le code HTML de http://ai.

fergusq
la source
1
Maintenant, pour les convaincre d'exécuter un serveur FTP ...
user253751
1
Comment cette URL est-elle valide?
Iulian Onofrei
1
@IulianOnofrei Pourquoi ne serait-il pas valide? Il a un protocole, un nom d'hôte et aucun port, chemin d'accès ou chaîne de requête, mais ceux-ci sont tous facultatifs. Demandez-vous pourquoi ai est un nom d'hôte valide?
user253751
1
@IulianOnofrei ai est un TLD. Habituellement, les TLD ne résolvent pas les adresses qui hébergent des sites Web, mais celui-ci le fait apparemment.
user253751
4
Pour ceux qui - comme moi - l'URL ne résout pas, vous pouvez probablement la consulter en utilisant directement l'adresse IP: 209.59.119.34
Engineer Toast
6

MATL, 8 octets

'v.ht'Xi

L'URL fournie à Xi( urlread) est ajoutée http://si elle ne l'est pas déjà. De plus, la sortie de urlreadcontient le contenu de la réponse et celui-ci est implicitement imprimé à la fin du programme.

Malheureusement, cela ne fonctionne pas pour les compilateurs en ligne car le chargement de données à partir d'une URL arbitraire est interdit en mode en ligne, voici donc un GIF. entrez la description de l'image ici

Suever
la source
5

Frapper, 45 43 octets

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

ouvre un socket tcp avec un site ai sur le descripteur de fichier 3, émet un get et cat le résultat. peut-être peut-être joué plus loin.

marcosm
la source
1
Vous pouvez supprimer les guillemets "autour GET /.
Digital Trauma
Incroyable! C'est très bien, même si ce n'est pas le plus court.
John Hathwood
4

Mathematica 18 octets

URLDownload@"v.ht"
Kelly Lowder
la source
Je pense que ça FetchURLmarche
ngenisis
Pensez-vous que URLFetchce qui nécessite une version de Mathematica avant 11.
Ian Miller
URLFetch fonctionne toujours dans la version actuelle, mais à un moment donné, il sera probablement complètement obsolète, et il existait auparavant une FetchURL dans les utilitaires URLTools reference.wolfram.com/language/ref/URLFetch.html
Kelly Lowder
4

PowerShell, 7 octets

Puisque nous utilisons tous www.ai...

irm ai.

utilise Invoke-RestMethod- imprime le résultat dans StdOut

réponse alternative, enregistre dans un fichier nommé «a» dans le répertoire d'exécution, en utilisant Invoke-WebRequestet -OutFileparam.

iwr ai. -OutF a
colsw
la source
Je vais essayer de irmne pas télécharger any file, comme demandé dans la question, car si le serveur renvoie json ou xml, il sera plutôt transformé en PSObject. Et irm ai.ça ne marche pas pour moi - ça dit que le nom ne peut pas être résolu ... Je reçois "$(irm g.cn)"une suggestion.
TessellatingHeckler
bon point concernant irm- @John Hathwood - cela correspond-il toujours au défi ou doit-il être changé? je ne suis pas un peu clair sur 'n'importe quel fichier' - il génère une copie 'analysée' de n'importe quel json ou xml, tous les autres fichiers sont retournés bruts.
colsw
@TessellatingHeckler quelle version de PS utilisez-vous? avez-vous quelque chose en cours d'exécution nslookup ai.ou nslookup www.ai 8.8.8.8?
colsw
Oui, cela fonctionne en interrogeant Google DNS, c'est un serveur DNS local Windows qui ne peut pas le résoudre. D'ACCORD. PSv4 également, mais ce n'est pas impliqué, même à l'invite cmd.
TessellatingHeckler
@TessellatingHeckler a toujours quelque chose de simple aha, j'attendrai que l'auteur du défi confirme si ce qui précède est correct, mais la iwrréponse de 15 octets sera probablement la bonne.
colsw
4

C #, 96 93 octets

async()=>Console.Write(await new System.Net.Http.HttpClient().GetStringAsync("http://3.ly"));
Ceshion
la source
Bienvenue chez PPCG!
Martin Ender
Merci! Je rôde de temps en temps mais j'avais besoin de m'amuser aujourd'hui c:
Ceshion
3

PHP, 22 octets

Si se allow_url_include=1trouve dans votre fichier ini:

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

JS (ES6), 38 36 31 29 octets

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

Selon le consensus de la promesse, (41 octets)

fetch`//ai`.then(x=>x.text()).then(alert)
programmer5000
la source
5
Jusqu'à ce que nous parvenions à un consensus sur les promesses, je dirais que vous en aurez besoin alert.
Shaggy
@Shaggy Je pense que la communauté convient que cette façon est OK, voir le vote compte sur votre réponse et ma méta q.
programmer5000
1
Un consensus fait-il 10 voix? (Véritable question que; combien de votes avons-nous besoin pour qu'il soit considéré comme adaptable?)
Shaggy
textRetourne- t-il une promesse ou ...then(x=>alert(x.text()))fonctionne-t-il?
user253751
1
@Shaggy c'est acceptable maintenant. Le consensus est de +5 et de 2: 1 rapport de votes en hausse ou en baisse.
Rɪᴋᴇʀ
2

R, 24 octets

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

imprime la sortie sur console au format R habituel - vecteur de chaînes, un élément par ligne du site.

Giuseppe
la source
2

Mathematica, 13 octets

URLFetch@"ai"
alephalpha
la source
2

Python 2, 55 49 47 octets

Pas plus court mais je pensais vraiment pouvoir aller plus loin.

from urllib import*
urlopen('http://ai').read
totalement humain
la source
2
Je pense que from urllib import*\nurlopen('http://g.co').readc'est une soumission valide car la deuxième ligne est une fonction sans nom (tout comme une fonction lambda sans nom)
ovs
@ovs Huh, merci!
totalement humain
Vous devez supprimer les supports de fin. Ce serait un extrait au lieu d'une fonction sinon
ovs
IOError: [Errno socket error] [Errno 8] nodename nor servname provided, or not known
Iulian Onofrei
1
@IulianOnofrei Utilisez-vous TIO? Le code exécuté dans TIO n'a pas accès à Internet.
totalement humain
1

Commande Vim Ex, 14 octets

e http://3.ly/

Ouvre l'URL en tant que nouveau tampon. Netrw souffre sérieusement d'un format URL restrictif.

Brian McCutchon
la source
1

nc -v v.ht 80 <fichier - 31 octets

Où le fichier contient:

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

Je professe l'ignorance sur la façon dont je devrais marquer cela. Le fichier fait 31 octets et contient l'URL que je veux, la -vvaleur de l' indicateur décide si j'obtiens le fichier que je veux ou une réponse d'erreur.

JoshRagem
la source
nc ai 80<<<GET\ /travaille pour moi pour 18B
Kevin
J'ai vu d'autres personnes l'utiliser, mais cela ne résout pas sur ma machine. Je pourrais peut-être trouver un serveur plus permissif mais celui-ci a besoin de la Hostvaleur. Je peux peut-être retirer les deux derniers \r\ndistiques
JoshRagem
Bizarrement, ma machine ne résoudrait pas aipour curlou wgetmais le fait pour nc. essayez ai.(point de fuite), ou 3.ly. C'est une page d'erreur, mais c'est toujours dans les limites du défi.
Kevin
Hmm, si la page d'erreur est acceptable, je pourrais envoyer un corps de juste \n. J'essaierai d'autres trucs quand je
rentrerai
1

Raquette, 71 octets

(require net/url)(port->string(get-pure-port(string->url"http://ai")))
rnso
la source
Ne voyez pas trop de réponses Racket ici.
David Conrad
0

HTML, 24 octets

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

Cela échoue techniquement car il rend le résultat ...

Jared Chmielecki
la source
2
N'est-ce pas STDOUT pour HTML? 15 octets:<embed src=//ai
Shaggy
0

Vim, 2 + 12 = 14 octets

gf

Attend l'URL http://3.ly/en entrée. gfouvre le fichier actuel sous le curseur. Grâce à netrw, cela fonctionne bien pour les URL. J'ai trouvé cela tout à l'heure en essayant de me souvenir de la commande pour ouvrir les URL dans votre navigateur (je l'ai trouvé, c'est gx).

Brian McCutchon
la source
0

PowerShell, 62 octets

PowerShell 5

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

66 octets pour les versions plus anciennes de PowerShell

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

Python + requêtes, 55 53 50 octets

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

-2 octets en changeant d'URL -3 octets grâce aux ovs

HyperNeutrino
la source
Les URL raccourcies ne sont-elles généralement pas interdites?
Shaggy
3
Vraiment, ce sont des requêtes Python +, car les requêtes ne sont (malheureusement) pas dans la bibliothèque standard.
L3viathan
from request import*est 2 octets plus court
ovs
@Shaggy Um ... Welp ... à peu près toutes les autres réponses ont utilisé une seule déchirure. Mais j'ai changé mon URL pour la rendre encore plus courte car il http://ais'agit apparemment d' une URL complète valide.
HyperNeutrino
0

AHK , 31 octets

URLDownloadToFile,http://g.co,g

Il y a un intégré donc ce n'est pas très excitant. Essayez de façonner, cependant, la fonction est assez longue.

Ingénieur Toast
la source
0

Bash + wget, 7 octets

wget ai

Télécharge la page sur http: // ai

dkudriavtsev
la source
J'obtiens "Résolution ai ... échoué: nom de noeud ni nom de serveur fourni, ou inconnu." avec cela, cependant wget ai.(avec un point de fin) fonctionne.
Kevin
@Kevin Fonctionne sur mon système. On dirait que vous êtes sur FreeBSD ou macOS.
dkudriavtsev
Oui, macOS Sierra
Kevin
@Kevin, je suis sous Linux. Essayez une VM.
dkudriavtsev
Étrange que cela ne marcherait pas sur Mac OS, car il devrait être le même code (modulo quelques drapeaux du compilateur spécifique à l' os, que je ne penseriez pas changer cela) et nslookup, diget nctout le trouver beau. Eh bien, ce n'est pas la première différence que j'ai vue, et cela ne vaut pas la peine d'installer un VM pour.
Kevin
0

Ruby, 27 + 10 = 37 octets

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

+10 octets pour l' -ropen-uriindicateur (pour nécessiter une bibliothèque open-uri)

dkudriavtsev
la source
0

Perl, 41 octets

$ perl -MLWP::UserAgent -e 'getstore($url)'
Chankey Pathak
la source
Salut, bienvenue sur Programing Puzzle & Code-golf, agréable de voir de nouveaux golfeurs Perl autour. Vous n'êtes pas autorisé à supposer que l'URL est à l'intérieur d'une variable (vous ne pouvez pas trouver un lien de référence sur cette partie, désolé). De plus, vous n'avez pas à compter perl -e''dans votre bytecount. Sur la façon de compter les drapeaux et co, voir ce post . À bientôt, j'espère!
Dada
0

Pyth , 4 + 11 = 15 octets

jk'z

Avec URL http://v.htcomme entrée. Prend une chaîne URL en entrée, télécharge le fichier et imprime son contenu.

Explication:

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

Notez que nous ne pouvons pas utiliser la fonction spour concaténer la liste en raison de problèmes de types d'octets.

Légèrement tricheur, 2 + 11 = 13 octets (il affiche la liste des lignes du fichier au lieu d'une seule chaîne pour tout le fichier):

'z

Vous devrez installer Pyth sur votre machine pour le tester (l'interpréteur en ligne n'exécute pas d'opérations dangereuses).

Jim
la source
Bienvenue chez PPCG! Assez bien, mais "l'url doit compter pour compter les octets".
Jonathan Allan
0

C #, 76 octets

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

MATLAB, 20 octets

urlread('http://ai')

Rien d'extraordinaire ici ...

DimP
la source
0

Kdb +, 34 15 octets

KDB +> = 3,4

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

d' ici .

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
la source