All Projects → arrrlo → Google-Images-Search

arrrlo / Google-Images-Search

Licence: MIT license
[PYTHON] Search for image using Google Custom Search API and resize & crop afterwards

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Google-Images-Search

1click Webpage Screenshot
Entire page Screenshot extension for Google Chrome. I'm developing open source extension for Google Chrome. All extension are free for use. Let's make Chrome great again!
Stars: ✭ 406 (+235.54%)
Mutual labels:  download, crop
1click-webpage-screenshot
Entire page Screenshot extension for Google Chrome. I'm developing open source extension for Google Chrome. All extension are free for use. Let's make Chrome great again!
Stars: ✭ 432 (+257.02%)
Mutual labels:  download, crop
FunFilter
Freely painted area, the software will automatically add filter on its.
Stars: ✭ 15 (-87.6%)
Mutual labels:  crop
fbdl
📥 Download publicly shared videos from Facebook with an ease!
Stars: ✭ 29 (-76.03%)
Mutual labels:  download
ionic4-image-crop-upload
Ionic 4, Angular 7 and Cordova Crop and Upload Image
Stars: ✭ 16 (-86.78%)
Mutual labels:  crop
Youtube-DL-GUI
Graphical User Interace built around youtube-dl CLI
Stars: ✭ 38 (-68.6%)
Mutual labels:  download
canvas-record
A one trick pony package to record and download a video from a canvas animation.
Stars: ✭ 64 (-47.11%)
Mutual labels:  download
animethemes-dl
THIS PROJECT HAS BEEN ABANDONED. Downloads anime themes from animethemes.moe. Supports Batch download and MAL/AniList connecting.
Stars: ✭ 21 (-82.64%)
Mutual labels:  download
bandcamp-dl
A browser automation script to batch download your private bandcamp collection.
Stars: ✭ 30 (-75.21%)
Mutual labels:  download
hls-downloader
Download all video files from HLS (HTTP Live Streaming) VoD (Video on Demand) m3u8 playlist for local playback
Stars: ✭ 121 (+0%)
Mutual labels:  download
IMDb-Scout-Mod
Auto search for movie/series on torrent, usenet, ddl, subtitles, streaming, predb and other sites. Adds links to IMDb pages from hundreds various sites. Adds movies/series to Radarr/Sonarr. Adds external ratings from Metacritic, Rotten Tomatoes, Letterboxd, Douban, Allocine. Media Server indicators for Plex, Jellyfin, Emby. Dark theme/style for …
Stars: ✭ 177 (+46.28%)
Mutual labels:  download
pdf-thumbnail
npm package to create the preview of a pdf file
Stars: ✭ 23 (-80.99%)
Mutual labels:  crop
hent
A small utility to fetch remote files into buffers
Stars: ✭ 23 (-80.99%)
Mutual labels:  download
Synergy-Binaries
Download the latest stable Synergy binaries.
Stars: ✭ 671 (+454.55%)
Mutual labels:  download
Music-Downloader-UI
Music-Downloader-UI
Stars: ✭ 654 (+440.5%)
Mutual labels:  download
torrent-webseed-creator
Webseeded torrent creator using GitHub Actions
Stars: ✭ 54 (-55.37%)
Mutual labels:  download
CoubDownloader
A simple downloader for coub.com
Stars: ✭ 64 (-47.11%)
Mutual labels:  download
react-use-downloader
Creates a download handler function and gives progress information
Stars: ✭ 65 (-46.28%)
Mutual labels:  download
CDNTool
CDN Nintendo's servers 3DS title downloader (as CIA)
Stars: ✭ 15 (-87.6%)
Mutual labels:  download
vue-crop
[举个例子]https://codesandbox.io/s/910ro8ym9r [演示链接(戳我直达)]http://www.wwwwxy.top/html/blg/
Stars: ✭ 38 (-68.6%)
Mutual labels:  crop

Google Images Search

Google Images Search

PyPI version Codacy Badge

GitHub issues GitHub closed issues GitHub closed pull requests

PyPI - Python Version GitHub GitHub last commit

Installation

To be able to use this library, you need to enable Google Custom Search API, generate API key credentials and set a project:

After setting up your Google developers account and project you should have been provided with developers API key and project CX.

Install package from pypi.org:

> pip install Google-Images-Search

CLI usage

# without environment variables:

> gimages -k __your_dev_api_key__ -c __your_project_cx__ search -q puppies
# with environment variables:

> export GCS_DEVELOPER_KEY=__your_dev_api_key__
> export GCS_CX=__your_project_cx__
>
> gimages search -q puppies
# search only (no download and resize):

> gimages search -q puppies
# search and download only (no resize):

> gimages search -q puppies -d /path/on/your/drive/where/images/should/be/downloaded
# search, download and resize:

> gimages search -q puppies -d /path/ -w 500 -h 500

Programmatic usage

from google_images_search import GoogleImagesSearch

# you can provide API key and CX using arguments,
# or you can set environment variables: GCS_DEVELOPER_KEY, GCS_CX
gis = GoogleImagesSearch('your_dev_api_key', 'your_project_cx')

# define search params
# option for commonly used search param are shown below for easy reference.
# For param marked with '##':
#   - Multiselect is currently not feasible. Choose ONE option only
#   - This param can also be omitted from _search_params if you do not wish to define any value
_search_params = {
    'q': '...',
    'num': 10,
    'fileType': 'jpg|gif|png',
    'rights': 'cc_publicdomain|cc_attribute|cc_sharealike|cc_noncommercial|cc_nonderived',
    'safe': 'active|high|medium|off|safeUndefined', ##
    'imgType': 'clipart|face|lineart|stock|photo|animated|imgTypeUndefined', ##
    'imgSize': 'huge|icon|large|medium|small|xlarge|xxlarge|imgSizeUndefined', ##
    'imgDominantColor': 'black|blue|brown|gray|green|orange|pink|purple|red|teal|white|yellow|imgDominantColorUndefined', ##
    'imgColorType': 'color|gray|mono|trans|imgColorTypeUndefined' ##
}

# this will only search for images:
gis.search(search_params=_search_params)

# this will search and download:
gis.search(search_params=_search_params, path_to_dir='/path/')

# this will search, download and resize:
gis.search(search_params=_search_params, path_to_dir='/path/', width=500, height=500)

# search first, then download and resize afterwards:
gis.search(search_params=_search_params)
for image in gis.results():
    image.url  # image direct url
    image.referrer_url  # image referrer url (source) 
    
    image.download('/path/')  # download image
    image.resize(500, 500)  # resize downloaded image

    image.path  # downloaded local file path

Custom file name

Sometimes you would want to save images with file name of your choice.

from google_images_search import GoogleImagesSearch

gis = GoogleImagesSearch('your_dev_api_key', 'your_project_cx')

_search_params = { ... }

gis.search(search_params=_search_params, path_to_dir='...', 
           custom_image_name='my_image')

Paging

Google's API limit is 10 images per request.
That means if you want 123 images, it will be divided internally into 13 requests.
Keep in mind that getting 123 images will take a bit more time if the image validation is enabled.

from google_images_search import GoogleImagesSearch

gis = GoogleImagesSearch('your_dev_api_key', 'your_project_cx')
_search_params = {
    'q': '...',
    'num': 123,
}

# get first 123 images:
gis.search(search_params=_search_params)

# take next 123 images from Google images search:
gis.next_page()
for image in gis.results():
    ...

Image validation

Every image URL is validated by default.
That means that every image URL will be checked if the headers can be fetched and validated.
With that you don't need to wary about which image URL is actually downloadable or not.
The downside is the time needed to validate.
If you prefer, you can turn it off.

from google_images_search import GoogleImagesSearch

# turn the validation off with "validate_images" agrument
gis = GoogleImagesSearch('your_dev_api_key', 'your_project_cx', validate_images=False)

Inserting custom progressbar function

By default, progressbar is not enabled.
Only in CLI progressbar is enabled by default using Curses library.
In a programmatic mode it can be enabled in two ways:

  • using contextual mode (Curses)
  • using your custom progressbar function
from google_images_search import GoogleImagesSearch

# using your custom progressbar function
def my_progressbar(url, progress):
    print(url + ' ' + progress + '%')
gis = GoogleImagesSearch(
    'your_dev_api_key', 'your_project_cx', progressbar_fn=my_progressbar
)
_search_params = {...}
gis.search(search_params=_search_params)

# using contextual mode (Curses)
with GoogleImagesSearch('your_dev_api_key', 'your_project_cx') as gis:
    _search_params = {...}
    gis.search(search_params=_search_params)
...

Saving to a BytesIO object

from google_images_search import GoogleImagesSearch
from io import BytesIO
from PIL import Image

# in this case we're using PIL to keep the BytesIO as an image object
# that way we don't have to wait for disk save / write times
# the image is simply kept in memory
# this example should display 3 pictures of puppies!

gis = GoogleImagesSearch('your_dev_api_key', 'your_project_cx')

my_bytes_io = BytesIO()

gis.search({'q': 'puppies', 'num': 3})
for image in gis.results():
    # here we tell the BytesIO object to go back to address 0
    my_bytes_io.seek(0)

    # take raw image data
    raw_image_data = image.get_raw_data()

    # this function writes the raw image data to the object
    image.copy_to(my_bytes_io, raw_image_data)

    # or without the raw data which will be automatically taken
    # inside the copy_to() method
    image.copy_to(my_bytes_io)

    # we go back to address 0 again so PIL can read it from start to finish
    my_bytes_io.seek(0)

    # create a temporary image object
    temp_img = Image.open(my_bytes_io)
    
    # show it in the default system photo viewer
    temp_img.show()
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].