• Reset your password

User account menu

  • Artikler
  • Forside
  • Forum
  • Nyheder
  • Log in
Hjem
Linuxin 2025

Breadcrumb

  • Hjem
  • forums
  • Hente flere billeder fra Google Billedsøgning script

Hvad kan du med 100% sikkerhed sige, at du har stemt?

Valgmuligheder
Af froksen | 18.08.2010 17:19

Hente flere billeder fra Google Billedsøgning script

Programmering

Hej alle sammen



Forsøger i forbindelse med et lille projekt for en af mine venner, at få lavet et script som udfra navnet på en mappe eller ligende kan hente et billede der passer til indholdet. Altså f.eks. hvis mappen hedder "openSUSE" henter den det "første" billede fra Google billedsøgning og gemmer i mappen.



But first things first... Skal have en måde hvorpå man i det hele taget kan få hentet billederne fra Google på en automatiseret måde via et script. I den forbindelse fandt jeg et gammet script "Wget Google image collector", men det virker ikke rigtigt - umiddelbart har jeg på fornemmelsen at det skyldes det "nye design" på Google, da scriptet er fra 2006. Har forsøgt en langrække forskellige ting, og prøvet selv at tilpasse meeen....



Men derfor håbede jeg på at der var nogle af jer, som kunne hjælpe mig med at få det tilpasset således at det virker endnu engang. (Eller måske har en helt anden måde at få det til at virke på?) .

I en anden forbindelse fik jeg desuden et tip fra Julemand101 om at der findes siden "Google Image Ripper", som måske kan gøre processen nemmere end at hente direkte fra Google.



Håber I har en idé om hvor jeg vil hen af og I kan hjælpe mig - ellers er det bare at spørge :-)



Henvisninger:

Wget Google image collector: http://www.krazyworks.com/wget-google-image-collector/

Google Image Ripper: http://dearcomputer.nl/gir/

  • Log in to post comments

Kommentarer11

14 år 9 måneder siden

Permalink

Indsendt af marlar den 18. august 2010 kl. 20:49

Permalink

Må det være i PHP? Det er

Må det være i PHP? Det er ret nemt. Det er det måske også i bash, men jeg er ikke så godt inde i det.

  • Log in to post comments

14 år 9 måneder siden

Permalink

Indsendt af froksen den 18. august 2010 kl. 21:55

Permalink

I princippet er det sådan

I princippet er det sådan set "ligegyldigt" om det er PHP... Men umiddelbart faldt jeg over et shell script, da det er det eneste jeg sådan lige umiddelbart kendte rigtigt til... :-)

  • Log in to post comments

14 år 9 måneder siden

Permalink

Indsendt af marlar den 19. august 2010 kl. 09:47

Permalink

Her er et simpelt, men

Her er et simpelt, men virksomt eksempel.



Gem filen fx med navnet gimage.php og brug det således i terminalen:



php gimage.php



Mon ikke det kan lede dig på rette spor?





<?php

echo 'Indtast søgestreng: ';

$query = urlencode(trim(fgets(STDIN)));

$url = "http://images.google.com/images?q=$query";

echo $url,"\n";

$html = file_get_contents($url);

if (preg_match('%Image removed.
$imgurl = $match[1];

$filename = basename($imgurl);

$imgdata = file_get_contents($imgurl);

file_put_contents($filename, $imgdata);

echo "Billedet '$filename' er gemt.\n";

}

else {

echo "Billedet kunne ikke gemmes";

}

?>

  • Log in to post comments

14 år 9 måneder siden

Permalink

Indsendt af froksen den 19. august 2010 kl. 16:27

Permalink

Tusind tak Marlar, virker

Tusind tak Marlar, virker helt perfekt :-D Beklager jeg først svarer nu, har ikke lige haft tid før..



Nu må jeg se om jeg kan få resten til at virke, men igen Tusind tak :-D





Tilføjelse:

Hvis det kunne have interesse har jeg leget lidt med Marlar´s script, således at den kan håndtere flere søgekriterier på "en gang", altså f.eks. hvis man både vil have et billede af en Hund, Kat osv.



Tekst filen søgeord bestemmer hvad der skal søges efter (Kriterierne er adskildt med ny linje), et eksempel



Hund

Kat

Fisk

Gris





Her er selve hovedfilen



<?php

# Henter data fra tekst filen

$HentTitler = file_get_contents("sogeord.txt");



# Placerer hver linje i Array

$Explodetitler = explode("\n",$HentTitler);



# Erstatter hver gang variablen $query kommer med værdien i $Explodetitler

foreach ($Explodetitler as $query) {

# echo 'Indtast søgestreng: ';



# Giver tekst input

#$query = urlencode(trim(fgets(STDIN)));

$url = "http://images.google.com/images?q=$query";

echo $url,"\n";

$html = file_get_contents($url);

if (preg_match('%Image removed.
$imgurl = $match[1];

$filename = basename($imgurl);

$imgdata = file_get_contents($imgurl);

file_put_contents($filename, $imgdata);



# $dir bestemmer mål for hvor I filen skal kopieres. Fjern sektion, hvis der skal gemmes i nuværrende mappe.

$dir = "./$query/$filename";

copy($filename, $dir);

unlink($filename);



echo "Billedet '$filename' er gemt.\n";

}

else {

echo "Billedet kunne ikke gemmes";

}

}

?>






Endnu engang tak Marlar

  • Log in to post comments

14 år 9 måneder siden

Permalink

Indsendt af marlar den 20. august 2010 kl. 10:45

Permalink

Hej Froksen
Godt at du kunne

Hej Froksen



Godt at du kunne bruge eksemplet!



En lille detalje: Du må ikke undlade urlencode() da du ellers får problemer med søgeord med specialtegn eller mellemrum fx "lille hund". Danske tegn vil måske også give problemer.



Indsæt derfor denne linje først i din forach-løkke:



$query = urlencode($query);

  • Log in to post comments

14 år 9 måneder siden

Permalink

Indsendt af froksen den 20. august 2010 kl. 11:35

Permalink

Hej Marlar
Super tip, takker

Hej Marlar



Super tip, takker :-D Har fixet det så det også virker - tsk tsk, lader da ligefrem at det kan gå hen og lykkes ;-)



Igen tak



<?php

#shell_exec("ls -1 | grep .zip | sed 's/\(.*\)\..*/\1/' > zipfilnavne.txt");



# Danner sogeord udfra mappenavne

shell_exec("ls -d */ > sogeord.txt");



# Henter data fra tekst filen

#$HentTitler = file_get_contents("zipfilnavne.txt");

$HentTitler = file_get_contents("sogeord.txt");



# Placerer hver linje i Array

$Explodetitler = explode("\n",$HentTitler);

#$Explodetitler_urlencode = urlencode($Explodetitler)





# Erstatter hver gang variablen $query kommer med værdien i $Explodetitler

foreach ($Explodetitler as $query) {



# echo 'Indtast søgestreng: ';



# Giver tekst input

#$query = urlencode(trim(fgets(STDIN)));



# Er nødvendig for at scriptet tilslut kan kopirer filerne til de rigtige mapper. Fjern evt. hvis denne funktion ikke skal bruges.

$mappedir = $query;



# Er nødvendigt for at kunne håndtere special tegn og mellemrum i filnavne.

$query = urlencode($query);

$url = "http://images.google.com/images?q=$query";

echo $url,"\n";

$html = file_get_contents($url);

if (preg_match('%Image removed.
$imgurl = $match[1];

$filename = basename($imgurl);

$imgdata = file_get_contents($imgurl);

file_put_contents($filename, $imgdata);



# $dir bestemmer mål for stedet hvor i der skal kopieres. Fjern sektion, hvis der skal gemmes i nuværrende mappe.

$dir = "./$mappedir/$filename";

copy($filename, $dir);

unlink($filename);



echo "Billedet '$filename' er gemt i mappen $mappedir.\n";

}

else {

echo "Billedet kunne ikke gemmes";

}





}



?>

  • Log in to post comments

14 år 9 måneder siden

Permalink

Indsendt af marlar den 20. august 2010 kl. 13:02

Permalink

Du kan lige så godt få et

Du kan lige så godt få et tip mere :-)



I stedet for at gå omvejen over shell_exec, kan du springe hele den første smøre over og starte direkte med:



foreach (glob('*', GLOB_ONLYDIR) as $query) {



Desuden kan du gemme direkte i den rigtige mappe i stedet for at kopiere og slette billedet:



file_put_contents("$mappedir/$filename", $imgdata);



Det samlede script bliver så noget kortere:



<?php

foreach (glob('*', GLOB_ONLYDIR) as $query) {

# Er nødvendig for at scriptet tilslut kan kopirer filerne til de rigtige mapper. Fjern evt. hvis denne funktion ikke skal bruges.

$mappedir = $query;



# Er nødvendigt for at kunne håndtere special tegn og mellemrum i filnavne.

$query = urlencode($query);

$url = "http://images.google.com/images?q=$query";



$html = file_get_contents($url);

if (preg_match('%Image removed.
$imgurl = $match[1];

$filename = basename($imgurl);

$imgdata = file_get_contents($imgurl);

file_put_contents("$mappedir/$filename", $imgdata);

echo "Billedet '$filename' er gemt i mappen $mappedir.\n";

}

else {

echo "Billedet kunne ikke gemmes";

}

}

?>

  • Log in to post comments

14 år 4 måneder siden

Permalink

Indsendt af froksen den 10. januar 2011 kl. 20:14

Permalink

Få det til at virke med det nye Google?

Hej alle sammen..



Er der nogen der kan få dette script til at virke med det nye Google image search? Har googlet lidt, og forsøgt lidt selv, men kan bare ikke få det til at virke... :-S

  • Log in to post comments

14 år 4 måneder siden

Permalink

Indsendt af sol0 den 12. januar 2011 kl. 22:03

Permalink

OT: Nogle der kender noget

OT: Nogle der kender noget lignende til dette bare gjort i bash :)?

  • Log in to post comments

14 år 4 måneder siden

Permalink

Indsendt af marlar den 12. januar 2011 kl. 23:34

Permalink

#8: Jeg skal se om jeg kan

#8: Jeg skal se om jeg kan få tid at kigge på det i løbet af et par dage.

  • Log in to post comments

14 år 4 måneder siden

Permalink

Indsendt af mrbrown79 den 13. januar 2011 kl. 17:45

Permalink

I bash...og med lynx

I bash...og med lynx (tekstbaseret browser) installeret:





#!/bin/bash



for searchterm in $(cat searchterms.txt)

do

mkdir -p "searchresults/$searchterm"

cd searchresults/$searchterm

lynx -listonly -force_html -dump -image_links -accept_all_cookies "http://www.google.dk/images?q=$searchterm&hl=da&biw=1523&bih=742" | grep -m 1 -i http://www.google.dk/imgres | sed 's/.*imgurl=\(.\+\)&imgrefurl.*/\"\1\"/' | xargs wget

cd ../..

done





Og så en fil ved siden af, der hedder searchterms.txt med linjeseparerede søgetermer:



hund

kat

slange





Det går sikkert galt, hvis søgetermerne indeholder eksotiske tegn (og sikkert også mellemrum), men mon ikke du kan finpolere det selv :)

  • Log in to post comments

Svar søges

Den er go 0
Vil du have et sikrere og mere privat internet? Du skal blot installere Vivaldi-browseren med Proton VPN understøttelse! 0
14. februar = I Love Free Software Day 0
Lokal fil-deling - for de dovne. 0
Linux fra begynder til professionel af O'Reilly 0

Seneste aktivitet

"Intet realistisk alternativ" - mig i r*ven 4
Test 2
2 stk Jolla C2 sælges 1
Det første forumindlæg efter installation af Forum-modulet 8
Vanilla OS 12
Nye forum-indlæg viser sig kun 1 gang 1
Vil alle forumindlæg vise sig to gange 1
Hjælp til remote terminal vindue? 3
PCLinuxOS 19
Kan ikke boote på installation 24
80-20 reglen 1
Skærmlys fader ud på min bærbare 8
32 bit distro på max 700mb der stadig understøttes 26
Har vi nogen Linux konsulenter i Slagelse området? 3
Virkelig 7
gnome-software? 3
Archer T2U AC600 Wireless Dual Band USB Adapter 26
En farverig APT 3.0 udgivelse imponerer med sine nye funktioner 2
Unix's fødsel 2
Linux Mint 13

Copyright © 2025 Company Name - All rights reserved

Developed & Designed by Alaa Haddad