libreCatastro/libreCatastro.py

73 lines
2.9 KiB
Python

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import argparse
import pprint
from src.librecatastro.scrapping.parsers.parser_html import ParserHTML
from src.librecatastro.scrapping.parsers.parser_xml import ParserXML
from src.librecatastro.scrapping.searchers.coordinates_searcher import CoordinatesSearcher
from src.librecatastro.scrapping.searchers.provinces_searcher import ProvincesSearcher
from src.settings import config
from src.tests.servers_health.server_health_tests import ServerHealthTests
""" Main executable file, that processes all the arguments with ArguentParser
and do different functionalities, like listing provinces, cities, scrapping from HTML,
from XML, based on coordinates files or a list of provinces, etc """
if __name__ == "__main__":
''' Definition of command line arguments for ArgumentParser '''
parser = argparse.ArgumentParser(description='Runs libreCatastro')
parser.add_argument('--coords', action='store_true', dest='coords', default=False)
parser.add_argument('--coords-filenames', action='store', nargs='+', dest='filenames', default=[])
parser.add_argument('--provinces', action='store', nargs='+', dest='provinces', default=[])
parser.add_argument('--sleep', action='store', dest='sleep', type=int, default=5)
parser.add_argument('--html', dest='html', default=False, action='store_true')
parser.add_argument('--scale', action='store', dest='scale', type=int, default=10000)
parser.add_argument('--pictures', action='store_true', dest='pictures', default=False)
parser.add_argument('--startcity', action='store', dest='startcity', default='')
parser.add_argument('--listprovinces', action='store_true', dest='listprovinces', default=False)
parser.add_argument('--listcities', action='store', nargs=1, dest='listcities', default=[])
parser.add_argument('--health', action='store_true', dest='health', default=False)
''' Parsing of arguments from command line'''
args = parser.parse_args(sys.argv[1:])
''' Configuration of parameters to be overwriten '''
if args.sleep:
config['sleep_time'] = args.sleep
if args.scale:
config['scale'] = args.scale
''' Listing functionality '''
if args.listprovinces:
ProvincesSearcher.list_provinces()
exit(0)
if len(args.listcities) == 1:
ProvincesSearcher.list_cities(args.listcities[0])
exit(0)
''' Cadaster server checking '''
if args.health:
ServerHealthTests.healthcheck()
exit(0)
pp = pprint.PrettyPrinter(indent=4)
pp.pprint(config)
''' Scrapping / Parsing core functionality'''
parser = ParserHTML if args.html else ParserXML
filenames = args.filenames
pictures = args.pictures
provinces = args.provinces
startcity = args.startcity
if args.coords:
CoordinatesSearcher.search_by_coordinates(parser, filenames, pictures)
else:
ProvincesSearcher.search_by_provinces(parser, provinces, pictures, startcity)