diff options
| author | CoprDistGit <infra@openeuler.org> | 2023-04-11 06:40:21 +0000 |
|---|---|---|
| committer | CoprDistGit <infra@openeuler.org> | 2023-04-11 06:40:21 +0000 |
| commit | f3a1c264ceee5ee0f08709da57e17a0ec1e02254 (patch) | |
| tree | 71c3b07acacf7790bf7f750928cead9dbd34850a /python-google-images-search.spec | |
| parent | 591f31778d1b465c2a7ca2c420a9e2cb5dbee7bc (diff) | |
automatic import of python-google-images-search
Diffstat (limited to 'python-google-images-search.spec')
| -rw-r--r-- | python-google-images-search.spec | 795 |
1 files changed, 795 insertions, 0 deletions
diff --git a/python-google-images-search.spec b/python-google-images-search.spec new file mode 100644 index 0000000..dec2998 --- /dev/null +++ b/python-google-images-search.spec @@ -0,0 +1,795 @@ +%global _empty_manifest_terminate_build 0 +Name: python-Google-Images-Search +Version: 1.4.6 +Release: 1 +Summary: Search for image using Google Custom Search API and resize & crop the image afterwords +License: MIT +URL: https://github.com/arrrlo/Google-Images-Search +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/ed/0d/9afb3cea55bcc4c1cf458f002f7e508dad474fd158f38e48d15a64770bdd/Google%20Images%20Search-1.4.6.tar.gz +BuildArch: noarch + +Requires: python3-colorama +Requires: python3-pyfiglet +Requires: python3-termcolor +Requires: python3-click +Requires: python3-six +Requires: python3-requests +Requires: python3-Pillow +Requires: python3-resize-image +Requires: python3-google-api-python-client + +%description + + +# Google Images Search + +[](https://badge.fury.io/py/Google-Images-Search) +[](https://www.codacy.com/app/arrrlo/Google-Images-Search?utm_source=github.com&utm_medium=referral&utm_content=arrrlo/Google-Images-Search&utm_campaign=Badge_Grade) + + + + + + + + + +## [Installation](#installation) + +To be able to use this library, you need to enable Google Custom Search API, generate API key credentials and set a project: + +- Visit [https://console.developers.google.com](https://console.developers.google.com) and create a project. + +- Visit [https://console.developers.google.com/apis/library/customsearch.googleapis.com](https://console.developers.google.com/apis/library/customsearch.googleapis.com) and enable "Custom Search API" for your project. + +- Visit [https://console.developers.google.com/apis/credentials](https://console.developers.google.com/apis/credentials) and generate API key credentials for your project. + +- Visit [https://cse.google.com/cse/all](https://cse.google.com/cse/all) and in the web form where you create/edit your custom search engine enable "Image search" option and for "Sites to search" option select "Search the entire web but emphasize included sites". + +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: + +```bash +> pip install Google-Images-Search +``` + +## [CLI usage](#cli-usage) + +```bash +# without environment variables: + +> gimages -k __your_dev_api_key__ -c __your_project_cx__ search -q puppies +``` + +```bash +# with environment variables: + +> export GCS_DEVELOPER_KEY=__your_dev_api_key__ +> export GCS_CX=__your_project_cx__ +> +> gimages search -q puppies +``` + +```bash +# search only (no download and resize): + +> gimages search -q puppies +``` + +```bash +# search and download only (no resize): + +> gimages search -q puppies -d /path/on/your/drive/where/images/should/be/downloaded +``` + +```bash +# search, download and resize: + +> gimages search -q puppies -d /path/ -w 500 -h 500 +``` + +## [Programmatic usage](#programmatic-usage) + +```python +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](#custom-file-name) + +Sometimes you would want to save images with file name of your choice. + +```python +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](#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. + +```python +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](#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. + +```python +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](#progressbar) + +By default, progressbar is not enabled. +Only in CLI progressbar is enabled by default using [Curses library](https://docs.python.org/3/howto/curses.html). +In a programmatic mode it can be enabled in two ways: +- using contextual mode (Curses) +- using your custom progressbar function + +```python +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](#bytes-io) + +```python +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() +``` + + +%package -n python3-Google-Images-Search +Summary: Search for image using Google Custom Search API and resize & crop the image afterwords +Provides: python-Google-Images-Search +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-Google-Images-Search + + +# Google Images Search + +[](https://badge.fury.io/py/Google-Images-Search) +[](https://www.codacy.com/app/arrrlo/Google-Images-Search?utm_source=github.com&utm_medium=referral&utm_content=arrrlo/Google-Images-Search&utm_campaign=Badge_Grade) + + + + + + + + + +## [Installation](#installation) + +To be able to use this library, you need to enable Google Custom Search API, generate API key credentials and set a project: + +- Visit [https://console.developers.google.com](https://console.developers.google.com) and create a project. + +- Visit [https://console.developers.google.com/apis/library/customsearch.googleapis.com](https://console.developers.google.com/apis/library/customsearch.googleapis.com) and enable "Custom Search API" for your project. + +- Visit [https://console.developers.google.com/apis/credentials](https://console.developers.google.com/apis/credentials) and generate API key credentials for your project. + +- Visit [https://cse.google.com/cse/all](https://cse.google.com/cse/all) and in the web form where you create/edit your custom search engine enable "Image search" option and for "Sites to search" option select "Search the entire web but emphasize included sites". + +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: + +```bash +> pip install Google-Images-Search +``` + +## [CLI usage](#cli-usage) + +```bash +# without environment variables: + +> gimages -k __your_dev_api_key__ -c __your_project_cx__ search -q puppies +``` + +```bash +# with environment variables: + +> export GCS_DEVELOPER_KEY=__your_dev_api_key__ +> export GCS_CX=__your_project_cx__ +> +> gimages search -q puppies +``` + +```bash +# search only (no download and resize): + +> gimages search -q puppies +``` + +```bash +# search and download only (no resize): + +> gimages search -q puppies -d /path/on/your/drive/where/images/should/be/downloaded +``` + +```bash +# search, download and resize: + +> gimages search -q puppies -d /path/ -w 500 -h 500 +``` + +## [Programmatic usage](#programmatic-usage) + +```python +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](#custom-file-name) + +Sometimes you would want to save images with file name of your choice. + +```python +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](#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. + +```python +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](#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. + +```python +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](#progressbar) + +By default, progressbar is not enabled. +Only in CLI progressbar is enabled by default using [Curses library](https://docs.python.org/3/howto/curses.html). +In a programmatic mode it can be enabled in two ways: +- using contextual mode (Curses) +- using your custom progressbar function + +```python +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](#bytes-io) + +```python +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() +``` + + +%package help +Summary: Development documents and examples for Google-Images-Search +Provides: python3-Google-Images-Search-doc +%description help + + +# Google Images Search + +[](https://badge.fury.io/py/Google-Images-Search) +[](https://www.codacy.com/app/arrrlo/Google-Images-Search?utm_source=github.com&utm_medium=referral&utm_content=arrrlo/Google-Images-Search&utm_campaign=Badge_Grade) + + + + + + + + + +## [Installation](#installation) + +To be able to use this library, you need to enable Google Custom Search API, generate API key credentials and set a project: + +- Visit [https://console.developers.google.com](https://console.developers.google.com) and create a project. + +- Visit [https://console.developers.google.com/apis/library/customsearch.googleapis.com](https://console.developers.google.com/apis/library/customsearch.googleapis.com) and enable "Custom Search API" for your project. + +- Visit [https://console.developers.google.com/apis/credentials](https://console.developers.google.com/apis/credentials) and generate API key credentials for your project. + +- Visit [https://cse.google.com/cse/all](https://cse.google.com/cse/all) and in the web form where you create/edit your custom search engine enable "Image search" option and for "Sites to search" option select "Search the entire web but emphasize included sites". + +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: + +```bash +> pip install Google-Images-Search +``` + +## [CLI usage](#cli-usage) + +```bash +# without environment variables: + +> gimages -k __your_dev_api_key__ -c __your_project_cx__ search -q puppies +``` + +```bash +# with environment variables: + +> export GCS_DEVELOPER_KEY=__your_dev_api_key__ +> export GCS_CX=__your_project_cx__ +> +> gimages search -q puppies +``` + +```bash +# search only (no download and resize): + +> gimages search -q puppies +``` + +```bash +# search and download only (no resize): + +> gimages search -q puppies -d /path/on/your/drive/where/images/should/be/downloaded +``` + +```bash +# search, download and resize: + +> gimages search -q puppies -d /path/ -w 500 -h 500 +``` + +## [Programmatic usage](#programmatic-usage) + +```python +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](#custom-file-name) + +Sometimes you would want to save images with file name of your choice. + +```python +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](#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. + +```python +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](#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. + +```python +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](#progressbar) + +By default, progressbar is not enabled. +Only in CLI progressbar is enabled by default using [Curses library](https://docs.python.org/3/howto/curses.html). +In a programmatic mode it can be enabled in two ways: +- using contextual mode (Curses) +- using your custom progressbar function + +```python +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](#bytes-io) + +```python +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() +``` + + +%prep +%autosetup -n Google-Images-Search-1.4.6 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-Google-Images-Search -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Tue Apr 11 2023 Python_Bot <Python_Bot@openeuler.org> - 1.4.6-1 +- Package Spec generated |
