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!

Réponses:



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.


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


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.


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

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

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

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

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)

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.



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

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.


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.


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

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


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


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

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


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.


0

Bash + wget, 7 octets

wget ai

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


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)


0

Perl, 41 octets

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

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


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

0

MATLAB, 20 octets

urlread('http://ai')

Rien d'extraordinaire ici ...


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..
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.