Téléchargement d'images avec sockets [Résolu]

Messages postés
19
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
28 juillet 2006
- - Dernière réponse : S333
Messages postés
266
Date d'inscription
vendredi 8 juillet 2005
Statut
Membre
Dernière intervention
26 juin 2008
- 21 juil. 2005 à 22:57
Bonjour,

je suis novice dans l'utilisation de sockets et ne connait pas grand chose non plus à l'utilisation des &binvar, et je patauge donc un peu...

je cherche à télécharger des images de sites web depuis mon client IRC (mIRC), et ce via l'utilisation de sockets. J'ai vu le [tuto de Zova http://www.ircfr.com/tutorial.aspx?ID=119] mais je rencontre quelques difficultés sur certaines images, je pense à cause de leur taille.

Est-il possible de récupérer une image sur un site, quelqu'en soit la taille, ou est-on limités par des caractéristiques de &binvar, /sockread ou autre ?
la taille limite des images que j'arrive à télécharger semble être autour de 3ko. D'après l'aide de mIRC, j'ai vu qu'apparement il existait une limite de 4ko pour /sockread, mais je ne suis pas sur d'avoir bien compris...

Si quelqu'un avait quelques tuyaux à me donner, ce serait sympa ;)

Merci par avance.
Afficher la suite 

7 réponses

Meilleure réponse
Messages postés
266
Date d'inscription
vendredi 8 juillet 2005
Statut
Membre
Dernière intervention
26 juin 2008
3
Merci
En effet, le snippet marche parfaitement.



l'alias s'utilisait comme ça : //echo -a $addrimg(http://i3.microsoft.com/h/en-us/i/attachments_4_10.jpg)

et ça retournait : i3.microsoft.com h/en-us/i/attachments_4_10.jpg



sockread &temp ; on lit les informations de la socket

bcopy &temp2 1 &temp $iif($bfind(&temp,1,10 13) != 0, $calc($bfind(&temp,1,10 13)+3), 1) -1

on copie tout ce qui se trouve dans la variable &steam après le
caractère $crlf (chr 10 et 13 qui est répété 2 fois. je le cherche avec
$bfind et j'ajoute 3 pour 13 10 13)



bwrite babi.jpg -1 -1 &temp2 ;j'écris ensuite les information dans le fichier.



Ce qui est contenu avant les 2 $crlf(10 13 10 13) sont les informations
sur le fichier : Taille, nom, type de fichier. si tu veux les voir mets
ça :

echo -a $bvar(&temp,1, $bfind(&temp,1,10 13))

ca retourne un truc du genre :



HTTP/1.1 200 OK

Cache-Control: max-age=86400

Content-Length: 4112

Content-Type: image/gif

Last-Modified: Mon, 12 Jul 2004 01:34:44 GMT

Accept-Ranges: bytes

ETag: "8660969b067c41:2bd" etc...
--------------------------------
Signature des parents :

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 200 internautes nous ont dit merci ce mois-ci

Commenter la réponse de S333
Messages postés
266
Date d'inscription
vendredi 8 juillet 2005
Statut
Membre
Dernière intervention
26 juin 2008
0
Merci
J'ai téléchargé l'image que tu avais mis entre les balises [img] :

on *:sockopen:img:{

if ($sockerr) { echo -a erreur | halt }

sockwrite -n img GET http://alexandre.babilotte.free.fr/images/banni%e8re%20ababi.jpg

}

on *:sockread:img:{

sockread &temp

bwrite babi.jpg -1 -1 &temp

}



puis: //sockopen img alexandre.babilotte.free.fr 80



Ton image fait 70,0Ko et je n'ai pas eu de mal à la télécharger.

Peut-être qu'il y avait des espaces ou caractères spéciaux dans le chemin, comme pour ton image.

%E9 = é

%E8 = è

%20 = espace



-----------------------------------------
Signature des parents :
Commenter la réponse de S333
Messages postés
19
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
28 juillet 2006
0
Merci
oups, désolé pour la mise en page de mon message qui a foiré...:/



ok merci S333, je vais tester avec ce que tu m'as mis, et voir ce qui clochait
Commenter la réponse de cs_ababi
Messages postés
19
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
28 juillet 2006
0
Merci
bon, apparement, ca ne marche pas sur tous les sites :(

pour ma bannière, pas de problème, sur d'autres sites non plus, mais sur le site de microsoft, pour avoir cette image :
http://i3.microsoft.com/h/en-us/i/attachments_4_10.jpg
ça ne marche pas :'(

Y a-t-il des paramètres à spécifier, mettre un autre port, etc ? Ou alors est-ce que certains sites ne sont pas accessibles, protégés ou autres, via les sockets ?
Commenter la réponse de cs_ababi
Messages postés
266
Date d'inscription
vendredi 8 juillet 2005
Statut
Membre
Dernière intervention
26 juin 2008
0
Merci
on *:sockopen:img:{

if ($sockerr) { echo -a erreur | halt }

sockwrite -n img GET /h/en-us/i/attachments_4_10.jpg HTTP/1.0

sockwrite -n img Host: i3.microsoft.com

sockwrite -n img $crlf

}

on *:sockread:img:{

sockread &temp

bcopy &temp2 1 &temp $iif($bfind(&temp,1,10 13) != 0, $calc($bfind(&temp,1,10 13)+3), 1) -1

bwrite babi.jpg -1 -1 &temp2

}



j'ai testé avec l'image microsoft, celle de ton précédent post puis le souriceau de Ircfr :)

Alias pour avoir ce que l'on doit mettre dans sockopen et dans GET:

alias addrimg { return $gettok($remove($1-,http://),1,47) $gettok($remove($1-,http://),2-,47) }

Utilisation : $addrimg(http://i3.microsoft.com/h/en-us/i/attachments_4_10.jpg)

retour : i3.microsoft.com h/en-us/i/attachments_4_10.jpg



Si tu veux, je peux t'expliquer la source du sockread.
-----------------------------------------
Signature des parents :
Commenter la réponse de S333
Messages postés
19
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
28 juillet 2006
0
Merci
si tu pouvais m'expliquer la source du sockread ouais, ce serait sympa, parce que je capte pas grand chose :/



comment on fait pour utiliser l'alias aussi ? il faut taper $addrimg()
où ? j'ai essayé différentes méthode ( /addrimg $addrimg() ; $addrimg()
; etc) mais sans résultats...je n'ai jamais utilisé ce genre
d'identifieur comme ça pour lancer un alias, je suis perdu ^^
Commenter la réponse de cs_ababi
Messages postés
1726
Date d'inscription
vendredi 12 septembre 2003
Statut
Membre
Dernière intervention
13 juin 2009
1
0
Merci
http://scriptsdb.org/comments.php?id=312



regardes ce snippet ça devrait t'aider il est commenté et marche niquel d'ap les comments.
-1337 connexion-
Commenter la réponse de cs_tofu