sheorogath
Messages postés2448Date d'inscriptionsamedi 21 février 2004StatutModérateurDernière intervention29 janvier 2010
-
12 mai 2007 à 11:22
sheorogath
Messages postés2448Date d'inscriptionsamedi 21 février 2004StatutModérateurDernière intervention29 janvier 2010
-
13 mai 2007 à 13:09
bonjour a tous ,
je voudrais avoir une piste de recherche quant a telecharger un fichier a partir d'une url connu :
peut recuperer comme en java le flux d'entre d'un objet urllib2 (genre un getInputStream)
ou alors une urllib2.openurl(monurl).read() ou alors derniere solution :
j'ouvre une socket et je fais une requete get sur l'url donnant le fichier ? et je lis le fichier en lisant dans la socket
selon vous qu'elle est la meilleur maniere ?
merci
bonne journee
"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
cs_DoudouBidou
Messages postés102Date d'inscriptionjeudi 29 mai 2003StatutMembreDernière intervention23 juin 20085 13 mai 2007 à 09:20
fp.headers.get('content-length') #<= ne pas oublier de le convertir en int car c'est du texte
je ne dis pas que c'est la meilleur solution, j'ignore ce que ça vaut niveau rapidité de téléchargement, je pense qu'il vaut mieux lire les bits 16 par 16 ou 32 par 32 plutot que 1 par 1
cette méthode ne te permet pas de télécharger un morceau du fichier situé n'importe où dans le fichier, tu commences obligatoirement par le début, mais je pense qu'on doit pouvoir le faire n'utilisant pas directement urlopen mais en créant un opener "spécial"
comme je le disais c'est la méthode la plus simple pour suivre un téléchargement
cs_DoudouBidou
Messages postés102Date d'inscriptionjeudi 29 mai 2003StatutMembreDernière intervention23 juin 20085 12 mai 2007 à 22:53
Tout dépends ce que tu veux faire et la taille de ton fichier mais perso je pense que le simple et rapide est de faire urllib2.openurl(monurl).read()
au moins tu ne t'occupe de rien pour ce qui est du socket et du protocol
Vous n’avez pas trouvé la réponse que vous recherchez ?
sheorogath
Messages postés2448Date d'inscriptionsamedi 21 février 2004StatutModérateurDernière intervention29 janvier 201017 12 mai 2007 à 22:54
ben en fait je voulais pouvoir gerer l'avancement du telechargment ...
c'etait pour faire un prog qui telecharge les video sur youtube (je l'ai fais en java) et je voulais pour mon second prog python faire cela ...
je vais m'oriente cote socket je pense ...
merci bien
++
"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
sheorogath
Messages postés2448Date d'inscriptionsamedi 21 février 2004StatutModérateurDernière intervention29 janvier 201017 12 mai 2007 à 23:28
ouais je vois mais si je fais openurl il charge le fichier donc apres ca ne sert a rien de le lire bit par bit ... ce que je veux c'est la progression au cours du temps et mise a part les socket je vois pas d'autre moyen de le faire ...
en tout cas merci poru tes reponses
"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
cs_DoudouBidou
Messages postés102Date d'inscriptionjeudi 29 mai 2003StatutMembreDernière intervention23 juin 20085 12 mai 2007 à 23:36
il charge le fichier? c'est nouveau ça
non ! urlopen ne charge pas le fichier il ouvre simplement la connexion
les données ne sont télécharger qu'au moment du read
sheorogath
Messages postés2448Date d'inscriptionsamedi 21 février 2004StatutModérateurDernière intervention29 janvier 201017 13 mai 2007 à 10:45
oui en tout cas ca me conviens parfaitement ... ce que je voulais c'etait pouvoir suivre l'avancement et ta methode semble repondre a ce probleme je vais d'ailleurs l'essayer de suite ^^
pour la conversion ok merci de me le dire car comme le type n'est pas explicite jeme serais fait avoir je pense
"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
cs_DoudouBidou
Messages postés102Date d'inscriptionjeudi 29 mai 2003StatutMembreDernière intervention23 juin 20085 13 mai 2007 à 12:04
pour récupérer la taille on peut faire comme ça aussi, ça revient au même
int(fp.info()['content-length'])
pour faire un calcul sur la vitesse de téléchargement c'est plus simple de récupérer 1024 bits à chaque fois, tu pourras faire un calcul en ko directement