Téléchargement d'images avec sockets

Résolu
Signaler
Messages postés
19
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
28 juillet 2006
-
Messages postés
266
Date d'inscription
vendredi 8 juillet 2005
Statut
Membre
Dernière intervention
26 juin 2008
-
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.

7 réponses

Messages postés
266
Date d'inscription
vendredi 8 juillet 2005
Statut
Membre
Dernière intervention
26 juin 2008

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 :
Messages postés
266
Date d'inscription
vendredi 8 juillet 2005
Statut
Membre
Dernière intervention
26 juin 2008

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 :
Messages postés
19
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
28 juillet 2006

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
Messages postés
19
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
28 juillet 2006

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 ?
Messages postés
266
Date d'inscription
vendredi 8 juillet 2005
Statut
Membre
Dernière intervention
26 juin 2008

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 :
Messages postés
19
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
28 juillet 2006

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 ^^
Messages postés
1726
Date d'inscription
vendredi 12 septembre 2003
Statut
Membre
Dernière intervention
13 juin 2009
1
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-