def main(): try: logger.warning("Capting Archdaily...") now = datetime.now().strftime('%y-%m-%d') loaded_json = ArchdailyCaptor().get_data() logger.info("Building the GeoJSON...") loaded_geojson = ArchdailyGeojsonBuilder().build_geojson(loaded_json) logger.info("Writing GeoJSON...") file_manager = FileManager() try: file_manager.write_geojson(loaded_geojson, source, None, now) file_manager.write_js_geojson(loaded_geojson, source, None, now) except IOError: raise InitError("The folder %s is missing"% file_manager.get_folder_path(source)) logger.warning("New GeoJSON written for Archdaily: %d locations"% len(loaded_json)) return 0 except InitError as e: logger.critical("%s: %s"% (type(e).__name__, e)) return 1 except requests.exceptions.RequestException as e: logger.critical(e, exc_info=True) return 2 except Exception as e: logger.critical(e, exc_info=True) return 3
def build(self): fileManager = FileManager() cities = [dir for dir in os.listdir(self.source) if os.path.isdir(os.path.join(self.source, dir))] for city in cities: city_path = os.path.join(self.source, city) self.logger.info("%s ..."% city) files = [os.path.splitext(os.path.normcase(file))[0] for file in os.listdir(city_path) if os.path.splitext(file)[1] == '.json'] for file in files: json_file = os.path.join(city_path, "%s.json"% file) geojson_file = os.path.join(city_path, "%s.geojson"% file) js_geojson_file = os.path.join(city_path, "%s.js"% file) self.logger.info("%s.json"% file) if not os.path.isfile(geojson_file) or not os.path.isfile(js_geojson_file): f = open(json_file, 'r') loaded_json = json.load(f) f.close() loaded_geojson = self.builder.build_geojson(loaded_json) fileManager.write_geojson(loaded_geojson, self.source, city, file) self.logger.info(" => %s.geojson"% file) fileManager.write_js_geojson(loaded_geojson, self.source, city, file) self.logger.info(" => %s.js"% file)