Source code for cli
# -*- coding: utf-8 -*-
"""
Usage:
google_streetview [--optional]
google_streetview [-positional] ...
A command line tool for Google Street View search.
Positional arguments:
-h show this help message and exit
-i show documentation in browser
-a show optional arguments in browser
-s <arg>=<value> set default optional arguments
-r <arg> remove default arguments
-v view default arguments
-d reset default arguments
Optional arguments:
--pano panorama ids (req)
--location text or latitude/longitude (req)
--size image size (default: 640x640)
--heading camera heading 0 to 360
--fov camera zoom up 120 (default: 90)
--pitch camera angle 90 to -90 (default: 0)
--site_api base url for api site
--site_metadata base url for metadata site
--save_links path for links text file
--save_metadata path for metadata JSON file
--save_downloads path for directory of image downloads
--option_silent 'True' to disable preview
--option_preview num of results to preview
For more arguments use: google_streetview -a
Examples:
Set developer key arguments
> google_streetview -s key="dev_key"
Get street view image using location
> google_streetview --location=46.414382,10.013988
> google_streetview --location=46.414382,10.013988;40.720032,-73.988354
Get street view image using panorama id
> google_streetview --pano=vPnURflnc8AZu5NMLYRddw
> google_streetview --pano=vPnURflnc8AZu5NMLYRddw;A1v2IdX_6HKnIQa2SPyyAg
Get 360 panorama using heading
> google_streetview --location=46.414382,10.013988 --heading=0;90;180;270 --fov=90
Download street view images to "downloads" folder
> google_streetview --location=46.414382,10.013988 --save_downloads=downloads
Save street view links and metadata
> google_streetview --location=46.414382,10.013988 --save_links=links.txt
> google_streetview --location=46.414382,10.013988 --save_metadata=metadata.json
For more information visit use: google_streetview -i
"""
from google_streetview import helpers
from os.path import isfile
from pkg_resources import resource_filename, Requirement
from pprint import pprint
from sys import argv
from webbrowser import open_new_tab
import kwconfig
import google_streetview.api
_doc_link = 'https://github.com/rrwen/google_streetview'
_api_link = 'https://developers.google.com/maps/documentation/streetview/intro#url_parameters'
[docs]def run(argv=argv):
"""Runs the google_streetview command line tool.
This function runs the google_streetview command line tool
in a terminal. It was intended for use inside a py file
(.py) to be executed using python.
Notes:
* Optional arguments with ``ref_`` are for the ``site`` and ``site_metadata`` parameters in :class:`api.results`
For distribution, this function must be defined in the following files::
# In 'google_streetview/google_streetview/__main__.py'
from .cli import run
run()
# In 'google_streetview/google_streetview.py'
from google_streetview.cli import run
if __name__ == '__main__':
run()
# In 'google_streetview/__init__.py'
__entry_points__ = {'console_scripts': ['google_streetview=google_streetview.cli:run']}
Examples::
# Import google_streetview for the cli module
import google_streetview.cli
# Create command line arguments
argv = [
'cli.py',
'google',
'--searchType=image',
'--build_developerKey=your_dev_key',
'--cx=your_cx_id'
'--num=1'
]
# Run command line
google_streetview.cli.run(argv)
"""
config_file = kwconfig.manage(
file_path=resource_filename(Requirement.parse('google_streetview'), 'google_streetview/config.json'),
defaults={
'size': '640x640',
'fov': '90',
'pitch': '0',
'option_silent': 'false',
'option_preview': '10'}
)
# (commands) Main command calls
if len(argv) > 1:
if argv[1] == '-i': # browse docs
open_new_tab(_doc_link)
exit()
elif argv[1] == '-a': # browse arguments
open_new_tab(_api_link)
exit()
config_file.command(argv, i=1, doc=__doc__, quit=True, silent=False)
# (parse_args) Parse command arguments into dict
kwargs = kwconfig.parse(argv[1:])
kwargs = config_file.add(kwargs)
# (split_args) Split args into build, cse, and save arguments
siteargs = {}
apiargs = {}
saveargs = {}
optionargs = {}
for k, v in kwargs.items():
if 'site_' == k[0:4]:
siteargs[k[4:]] = v
elif 'save_' == k[0:5]:
saveargs[k[5:]] = v
elif 'option_' == k[0:7]:
optionargs[k[7:]] = v
else:
apiargs[k] = v
# (api_results) Get google api results
site_api = siteargs['api'] if 'api' in siteargs else 'https://maps.googleapis.com/maps/api/streetview'
site_metadata = siteargs['site_metadata'] if 'metadata' in siteargs else 'https://maps.googleapis.com/maps/api/streetview/metadata'
results = google_streetview.api.results(
helpers.api_list(apiargs),
site_api=site_api,
site_metadata=site_metadata)
# (api_print) Print a preview of results
if 'silent' in optionargs:
if optionargs['silent'].lower() != 'true':
results.preview(n=int(optionargs['preview']))
# (api_save) Save metadata
if 'links' in saveargs:
results.save_links(saveargs['links'])
if 'metadata' in saveargs:
results.save_metadata(saveargs['metadata'])
# (api_download) Download links
if 'downloads' in saveargs:
results.download_links(saveargs['downloads'])