Téléchargement d'images (pochettes cd, dvd, livres...) sur internet

Soyez le premier à donner votre avis sur cette source.

Snippet vu 70 277 fois - Téléchargée 30 fois

Contenu du snippet

Petite fonction permettant de télécharger des images de cds, bd, livres, dvd, films, affiches
par rapport à un certain critère. Cette fonction utilise le redimensionnement d'images de javaallmanac.com, un vecteur pour la navigation entre les différents résultats, et un socket pour effectuer une requete POST, elle permet également la sauvegarde du résultat (de l'image) sous format jpg. Pour savoir quelle requête effectuer, servez vous d'un sniffeur tel que Iris.

Source / Exemple :


/*Fonction réalisée par dufour137, elle permet de télécharger des images de cds, bd, livres, dvd, films, affiches

  • par rapport à un certain critère, il suffit d'entrer dans la zone de texte les critères
  • exemple : "Renaud boucan d'enfer" le résultat est le même que si vous recherchez qqch sur le site www.amazon.fr.
  • Le bouton rechercher envoie une requête POST sur le serveur amazon.fr.
  • Par la suite je lis le résultat (la page html) et je fais le teste par
  • rapport à "<td class="small" align="left"> là je remplace le nom de l'image
  • THUMBZZZ.jpg par LZZZZZZZ.jpg (t comme thumbs et L comme Large. c'est une fonction que je comptais
  • ajouter à xPort, mais amazon.fr ne m'en a pas donné l'autorisation.
*
  • Sources: scale() et toBufferedImage() Je les avais prises sur Javaallmanac pour une fonction d'xPort et je les ai
  • adaptée pour les besoins du programme.
  • /
import java.net.* ; import java.awt.* ; import java.awt.event.* ; import javax.swing.* ; import javax.swing.border.* ; import java.io.* ; import java.util.Vector; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import javax.swing.border.BevelBorder; import java.awt.geom.AffineTransform; import java.awt.image.AffineTransformOp; public class PictureDownload extends JFrame implements ActionListener { URL page ; JLabel label; JButton next, precedant, search, save; JTextArea crit, urls; Image monImage=null; Vector adresses= new Vector(); Image image = null; int index=0; public PictureDownload() { getContentPane().setLayout(null) ; label = new JLabel("Tappez le critère de recherche"); setBounds(1,1,400, 440) ; getContentPane().setBackground(new Color(221, 214, 235)); label.setBounds(50,50, 300,300); label.setBackground(Color.white); getContentPane().add(label); search= new JButton("Rechercher"); search.addActionListener(this); search.setBounds(50,10,120,20); getContentPane().add(search); crit= new JTextArea(); crit.setBounds(190,10,150,20); getContentPane().add(crit); save= new JButton("Enregistrer"); save.setBounds(50,360,120,20); save.addActionListener(this); getContentPane().add(save); next= new JButton(">>"); next.setBounds(290,40,50,10); next.addActionListener(this); next.setEnabled(false); getContentPane().add(next); precedant = new JButton("<<"); precedant.setBounds(50,40,50,10); precedant.addActionListener(this); precedant.setEnabled(false); getContentPane().add(precedant); setTitle("Images sur amazon.fr"); urls = new JTextArea(); urls.setBounds(50,340,300,80); setTitle("Recherche d'images sur amazon.fr"); setVisible(true); } /****************************/ public void actionPerformed(ActionEvent evt) { if(evt.getSource()==search) { index=0; label.setIcon(null); next.setEnabled(false); precedant.setEnabled(false); adresses.clear(); label.setText("recherche de l'image en cours"); new Thread(new Runnable() { public void run() { try { Thread.sleep(0) ; Connect(crit.getText()); } catch(InterruptedException ex) { ex.printStackTrace() ; } } }).start(); } if(evt.getSource()==next) { index++; if(index+1==adresses.size()) next.setEnabled(false); precedant.setEnabled(true); URL url = null; try { url = new URL(adresses.elementAt(index).toString()); image = ImageIO.read(url);} catch(MalformedURLException e) {} catch(IOException e){} label.setText(""); label.setIcon(new ImageIcon(reduit(image))); } if(evt.getSource()==precedant) { index--; next.setEnabled(true); URL url = null; try { url = new URL(adresses.elementAt(index).toString()); image = ImageIO.read(url);} catch(MalformedURLException e) {} catch(IOException e){} label.setText(""); label.setIcon(new ImageIcon(reduit(image))); if(index==0) precedant.setEnabled(false); } if(evt.getSource()==save) { Save(image, crit.getText()); } } /****************************/ public void Save(Image img, String crit) { BufferedImage rendImage = toBufferedImage(img); try { File file = new File(crit+".jpg"); ImageIO.write(rendImage, "jpg", file); } catch (IOException e) { } } /****************************/ public Image reduit(Image img) { BufferedImage bg = toBufferedImage(img); if(bg==null) return null; double cooeficientH= (bg.getHeight() *0.00333333333333333); double cooeficientL = cooeficientH; if(cooeficientH>1) cooeficientH=1/cooeficientH; else if(cooeficientH<1) cooeficientH=(1-cooeficientH)+1; if(cooeficientL>1) cooeficientL=1/cooeficientL; else if(cooeficientL<1) cooeficientL=(1-cooeficientL)+1; bg=scale(bg,cooeficientH,cooeficientL); monImage = Toolkit.getDefaultToolkit().createImage(bg.getSource()); return monImage; } /****************Java allmanac*******************/ public static BufferedImage scale(BufferedImage bi, double cooeficientH, double cooeficientL) { AffineTransform tx = new AffineTransform(); tx.scale(cooeficientL, cooeficientH); AffineTransformOp op = new AffineTransformOp(tx,AffineTransformOp.TYPE_BILINEAR); BufferedImage biNew = new BufferedImage((int)(bi.getWidth() * cooeficientL), (int) (bi.getHeight() * cooeficientH), bi.getType()); return op.filter(bi, biNew); } /****************Java allmanac*******************/ public static BufferedImage toBufferedImage(Image image) { /** On test si l'image n'est pas déja une instance de BufferedImage */ if( image instanceof BufferedImage ) return((BufferedImage)image ); else { /** On s'assure que l'image est complètement chargée */ image = new ImageIcon(image).getImage(); /** On crée la nouvelle image */ if(image.getHeight(null)<=0||image.getWidth(null)<=0) return null; BufferedImage bufferedImage = new BufferedImage(image.getWidth(null),image.getHeight(null),BufferedImage.TYPE_INT_RGB ); Graphics g = bufferedImage.createGraphics(); g.drawImage(image,0,0,null); g.dispose(); return(bufferedImage); } } /****************************/ public void Connect(String critere) { try { Socket digit = new Socket("www.amazon.fr", 80); digit.setSoTimeout(20000); OutputStream out=digit.getOutputStream(); String ligne=null; out = digit.getOutputStream(); int imagetrouvee=0; String req ="field-keywords=" + Nettoye(critere) + "&url=index%3Dblended%26rank%3D%252Bamzrank&search-type=quick-search&Go.x=0&Go.y=0&Go=Go"; //HTTP/1.1"; String header="POST http://www.amazon.fr/exec/obidos/search-handle-form/171-3920384-6113039 HTTP/1.1\n"; header+="Connection: close\n"; header+="Host: www.amazon.fr\n"; header+="Content-Type: application/x-www-form-urlencoded\n"; header+="Content-Length: " + req.length() + "\n\n"; header+= req + "HTTP/1.1 200 OK\n"; header+="Server: Apache\n"; out.write(header.getBytes()); out.flush(); BufferedReader in = new BufferedReader(new InputStreamReader(digit.getInputStream())); boolean eof = false; while(!eof) { String line=in.readLine(); if(line!=null) { int a=line.indexOf("http://images-eu.amazon.com/images/P/"); if(a>0) { String url= line.substring(a, line.indexOf('"', a)).replaceAll("THUMBZZZ.jpg", "LZZZZZZZ.jpg"); for(int i=0; i<15; i++) { line=in.readLine(); if(line.equals("<td class=" + '"' + "small" + '"' + " align=" + '"' + "left" + '"' +">")) { if(imagetrouvee==0) { URL url2 = new URL(url); image = ImageIO.read(url2); label.setText(""); label.setIcon(new ImageIcon(reduit(image))); next.setEnabled(true); } adresses.add(new String(url)); urls.append(url +"\n"); imagetrouvee++; } } } } else eof=true; } digit.close(); } catch (IOException ex) { System.out.println("Erreur ES:"+ ex.getMessage()); } } /*********************************************************/ public String Nettoye(String str) { str=str.replace('?','@'); str=str.replaceAll("@", "%3f"); str=str.replaceAll(",", ""); str=str.replace(' ', '+'); str=str.toLowerCase(); str=str.replaceAll("'", "%27"); return str; } /*********************************************************/ public static void main (String[] args) { PictureDownload wc = new PictureDownload() ; } }

Conclusion :


C'est une fonction que je comptais ajouter au shareware dont je ne vais pas vous en faire la pub ici car c'est un site Opensource, elle aurait servi à écrire l'image dans le tag PIC d'un mp3.
J'espère qu'elle serivra à qqun. Postez vos commentaires.

A voir également

Ajouter un commentaire

Commentaires

cs_neodante
Messages postés
2837
Date d'inscription
lundi 11 août 2003
Statut
Modérateur
Dernière intervention
16 décembre 2006
10 -
Salut,
pourrais-tu mettre ton code dans un ZIP ne laisser que la partie intéressante dans la partie source

Merci
sami ktari
Messages postés
1
Date d'inscription
samedi 10 mars 2007
Statut
Membre
Dernière intervention
15 mars 2007
-
j'ai pas trouvé le moyen d'utiliser cette interface
cs_ribos
Messages postés
53
Date d'inscription
samedi 26 juillet 2003
Statut
Membre
Dernière intervention
27 septembre 2007
-
Bonjour, je cherche a faire un programme qui a fait à peu près la même chose et je voulais savoir comment utiliser le site d'amazon ??
Quel est la requète à faire ?
Si vous avez des infos là dessus, merci de me prévenir !
cs_Mysystm
Messages postés
1
Date d'inscription
samedi 26 juillet 2008
Statut
Membre
Dernière intervention
10 septembre 2008
-
please
met le dans un Zip
ca serait plus pratique !!!!
merci
ereclasse
Messages postés
1
Date d'inscription
dimanche 20 janvier 2008
Statut
Membre
Dernière intervention
28 octobre 2008
-
Please j'arrive pas a utiliser ton programme, par koi devrais je remplacer "PictureDownload"

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.