Tuesday Tooling - Google Image Search With Python
We must spend days of our lives searching for images on Google. That picture of a duck on a pond, the cat pic where it is stalking like a ninja.
But sometimes we want to automate looking for pics, and then we turn to Python and typically the requests
library and a little Python-Fu!
But what if we could do it a little better?
So what is it?
Goolge-Images-Download, a Python library to search and download images from Hardik Vasa
How can I install it?
Using the pip package manager.
pip3 install google_images_download
So how can I use it?
From the Terminal / CLI
googleimagesdownload -k "Google Image Search" -l 1
The arguments
-k
Keyword to search for.
-l
Limit, how many images to download
Your download will be saved to a folder called downloads
inside the directory where the command is run. But this can be changed.
Via Python
from google_images_download import google_images_download
response = google_images_download.googleimagesdownload()
absolute_image_paths = response.download({"keywords":"Google Image Search","limit":1})
For Python we create an object called response
which is used to query Google with our search term.
Then we create an object called absolute_image_paths
which will provide the arguments, just as we did in the terminal.
So how can I do something useful with it?
I sat down this morning and wrote a little script in Mu v1.0.0 (you should really download that and have a play) that asks the user for their search term and then runs a Google image search using that keyword(s).
Here is the code
First the imports and setting up our response object.
from google_images_download import google_images_download
response = google_images_download.googleimagesdownload()
Then we create a variable called run_again
later used to capture if the user wants to use the script again.
run_again = "Y"
Next up we use a while
loop to check if the user wants to search, first time is always yes. We check to see if the run_again
variable has a "Y" or "y" using "or" logic.
while run_again == "y" or run_again == "Y":
So now we create a new variable that will store the search term / keyword that the user wants to search for. This is saved as a string.
search = input("Please enter the keyword(s) to search for. Please note, multiple keywords should be separated with a , : \n")
We then search for the keyword, again limiting the response to just one image. Note that there is a new argument, no_directory
which will save the image to the downloads
folder created by this code, but the image is not saved to it's own directory, for example if we search for penguin without this new argument, the file is saved to ./downloads/penguin
but with this new argument it is saved to ./downloads
absolute_image_paths = response.download({"keywords":search,"limit":1,"no_directory":"1"})
Still inside the while
loop we ask the user if they want to search for a new keyword, if so the loop repeats, if not, we print "Bye" to the REPL and the script ends.
run_again = input("Perform another search? Y or N:")
print("Bye!")
When run the code should look like this.
Have fun!