Accueil > > > TÉLÉCHARGEMENT D'IMAGES (POCHETTES CD, DVD, LIVRES...) SUR INTERNET
TÉLÉCHARGEMENT D'IMAGES (POCHETTES CD, DVD, LIVRES...) SUR INTERNET
Information sur la source
Description
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
- /*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() ;
- }
- }
-
/*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.
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
lien avec INTERNET EXPLORER et image sur bouton (URGENT) [ par othland ]
slt tlm1)je avoir la fonction suivate (si elle existe!!!!):quand je clique sur un bouton, une fentre de INTERNET EXPLORER s'affiche!2)peut on mettre u
Upload d'image [ par moonflower ]
Bonjour ! Je programme un forum entièrement en Java en utilisant le framework Struts (jsp et servlets). Je voudrais que lors de l'inscription, l
comment convertir sequence image JPEG(30fps) en MJPEG [ par sicakmustafa ]
Bonjour,Actuellement, dans le cadre de mes etudes, j ai besoin de convertir en temps reel des images JPEG (30 images par secondes) en Motion JPEG.&nbs
Impression d'image [ par terminagroo ]
Bonjour,C'est peut-être une question stupide mais je me galère avec ça. Alors j'aimerais imprimer une photo à partir d'une applica
Bouton sur une image [ par p0232 ]
Bonjour, je dois réaliser, en java, une barre de menu qui a une forme un peu spéciale elle doit etre également colorée. Je voudrai
pb avec image de fond et positions des boutons!!! [ par othland ]
slt tlmje suis vraiment dans la merde!je veux avoir une fentre ayant comme fond une image plus des étiquettes, des boutons et des bouton radio: a
Image HTML et JEditorPane [ par Yenapa ]
Bonjour a toutes et a tousJe cherche un moyen d'inserer une image dans une page html affichée dans un JEditorPane, sans inserer une balise <IM
Urgent!!!! Connexion Internet [ par sellami_k ]
Bonjout tt le mondeje suis impeu dans la merdeIl faut j'arrive a tracer une courbe du mon debit sur le net en fonction de tempspour cela il fo ke j'en
Adresse IP de sa connexion Internet [ par Foub12 ]
Bonjour, j'ai trouvé le code JAVA suivant : « InetAddress Ip = InetAddress.getLocalHost(); &nb
son&image_questions [ par sydailly ]
Salut à tous. J'ai un projet à développe
|
Derniers Blogs
PB LORS DE L'INSTALLATION SHAREPOINT 2010.PB LORS DE L'INSTALLATION SHAREPOINT 2010. par Patrick Guimonet
Lors de l'installation de SharePoint 2010, j'ai rencontré un problème de plantage à l'étape 5 du configuration Wizard. Ca se termine sur cet écran : Et en analysant le fichier de journalisation, on remarque vers la fin des 15000 et quelques lign...
Cliquez pour lire la suite de l'article par Patrick Guimonet [WF4] AJOUTER DES CONTRAINTES à UNE ACTIVITé (2/2)[WF4] AJOUTER DES CONTRAINTES à UNE ACTIVITé (2/2) par JeremyJeanson
Après mon précédent article qui attaque les contraintes par la fasse Nord de l'Everest. passons à la seconde possibilité offerte par WF4 pour valider une activité : la metadata . Je vous en ai déjà toucher un ou deux mots. La metadata dans WF4 est un élém...
Cliquez pour lire la suite de l'article par JeremyJeanson [WF4] AJOUTER DES CONTRAINTES à UNE ACTIVITé (1/2)[WF4] AJOUTER DES CONTRAINTES à UNE ACTIVITé (1/2) par JeremyJeanson
De WF3 à WF4 pas mal de choses on été changées pour faciliter la vie des développeurs, mais certain points peuvent sembler obscures. comme les contraintes. Pour vous guider, je me lance dans une série de deux articles. Ils présenterons deux approches poss...
Cliquez pour lire la suite de l'article par JeremyJeanson [ASP.NET] NE PAS SE FAIRE AVOIR PAR IHTTPMODULE ET SA MéTHODE INIT()[ASP.NET] NE PAS SE FAIRE AVOIR PAR IHTTPMODULE ET SA MéTHODE INIT() par tja
Beaucoup de développeurs pensent que lorsqu'on créé et enregistre un IHttpModule, il n'en existe qu'une seule instance et la méthode Init() sera appelée qu'une fois.
C'est faux
Cela peut vraiment créer des bugs subtils dont en ne se rend pas compte ...
Cliquez pour lire la suite de l'article par tja [MSTD10] SHAREPOINT 2010 ET TEAM FOUNDATION SERVER[MSTD10] SHAREPOINT 2010 ET TEAM FOUNDATION SERVER par phil
Un post rapide pour vous informer de la disponibilité de la vidéo de ma présentation sur SharePoint 2010 & Team Foundation Server. http://www.microsoft.com/france/vision/mstechdays10/Webcast.aspx?EID=20215d48-02e3-4d43-8c36-e53505c3b316 Dans la ...
Cliquez pour lire la suite de l'article par phil
Forum
RE : INTRFACE J2MERE : INTRFACE J2ME par manoula1112
Cliquez pour lire la suite par manoula1112
Logiciels
Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods Konvertor (4.00)KONVERTOR (4.00)Le logiciel est un gestionnaire multimedia affichant, jouant et convertissant plus de 2000 format... Cliquez pour télécharger Konvertor
|