def search(self, flag, search_by): logger.info("-" * 70) logger.info("Survey {survey_id}, for {search_area_name}".format( survey_id=self.survey_id, search_area_name=self.search_area_name)) ABSurvey.update_survey_entry(self, self.config.SEARCH_AREA_GLOBAL) room_count = 0 while room_count < self.config.FILL_MAX_ROOM_COUNT: try: # get a random candidate room_id room_id = random.randint(0, self.config.ROOM_ID_UPPER_BOUND) listing = ABListing(self.config, room_id, self.survey_id) if room_id is None: break else: if listing.ws_get_room_info(self.config.FLAGS_ADD): room_count += 1 except AttributeError: logger.error("Attribute error: marking room as deleted.") listing.save_as_deleted() except Exception as ex: logger.exception("Error in search:" + str(type(ex))) raise self.fini()
def main(): """ Main entry point for the program. """ (parser, args) = parse_args() logging.basicConfig(format='%(levelname)-8s%(message)s') ab_config = ABConfig(args) try: if args.search: survey = ABSurveyByNeighborhood(ab_config, args.search) survey.search(ab_config.FLAGS_ADD) elif args.search_by_neighborhood: survey = ABSurveyByNeighborhood(ab_config, args.search_by_neighborhood) survey.search(ab_config.FLAGS_ADD) elif args.search_by_zipcode: survey = ABSurveyByZipcode(ab_config, args.search_by_zipcode) survey.search(ab_config.FLAGS_ADD) elif args.search_by_bounding_box: survey = ABSurveyByBoundingBox(ab_config, args.search_by_bounding_box) survey.search(ab_config.FLAGS_ADD) elif args.fill is not None: fill_loop_by_room(ab_config, args.fill) elif args.addsearcharea: db_add_search_area(ab_config, args.addsearcharea, ab_config.FLAGS_ADD) elif args.addsurvey: db_add_survey(ab_config, args.addsurvey) elif args.dbping: db_ping(ab_config) elif args.displayhost: display_host(ab_config, args.displayhost) elif args.displayroom: display_room(ab_config, args.displayroom) elif args.listsearcharea: list_search_area_info(ab_config, args.listsearcharea) elif args.listroom: listing = ABListing(ab_config, args.listroom, None) listing.print_from_db() elif args.listsurveys: list_surveys(ab_config) elif args.printsearcharea: ws_get_city_info(ab_config, args.printsearcharea, ab_config.FLAGS_PRINT) elif args.printroom: listing = ABListing(ab_config, args.printroom, None) listing.ws_get_room_info(ab_config.FLAGS_PRINT) elif args.printsearch: survey = ABSurveyByNeighborhood(ab_config, args.printsearch) survey.search(ab_config.FLAGS_PRINT) elif args.printsearch_by_neighborhood: survey = ABSurveyByNeighborhood(ab_config, args.printsearch_by_neighborhood) survey.search(ab_config.FLAGS_PRINT) elif args.printsearch_by_bounding_box: survey = ABSurveyByBoundingBox(ab_config, args.printsearch_by_bounding_box) survey.search(ab_config.FLAGS_PRINT) elif args.printsearch_by_zipcode: survey = ABSurveyByZipcode(ab_config, args.printsearch_by_zipcode) survey.search(ab_config.FLAGS_PRINT) else: parser.print_help() except (SystemExit, KeyboardInterrupt): sys.exit() except Exception: logging.exception("Top level exception handler: quitting.") sys.exit(0)
def listing_from_search_page_json(self, json, room_id): try: listing = ABListing(self.config, room_id, self.survey_id) # listing json_listing = json["listing"] if "listing" in json else None if json_listing is None: return None if "room_type" in json_listing: listing.room_type = json_listing["room_type"] else: listing.room_type = None if "user" in json_listing: listing.host_id = json_listing["user"]["id"] else: listing.host_id = None if "public_address" in json_listing: listing.address = json_listing["public_address"] else: listing.address = None if "reviews_count" in json_listing: listing.reviews = json_listing["reviews_count"] else: listing.reviews = None if "star_rating" in json_listing: listing.overall_satisfaction = json_listing["star_rating"] else: listing.overall_satisfaction = None if "person_capacity" in json_listing: listing.accommodates = json_listing["person_capacity"] else: listing.accommodates = None if "bedrooms" in json_listing: listing.bedrooms = json_listing["bedrooms"] else: listing.bedrooms = None if "bathrooms" in json_listing: listing.bathrooms = json_listing["bathrooms"] else: listing.bathrooms = None if "lat" in json_listing: listing.latitude = json_listing["lat"] else: listing.latitude = None if "lng" in json_listing: listing.longitude = json_listing["lng"] else: listing.longitude = None # The coworker_hosted item is missing or elsewhere listing.coworker_hosted = json_listing["coworker_hosted"] \ if "coworker_hosted" in json_listing else None # The extra_host_language item is missing or elsewhere listing.extra_host_languages = json_listing["extra_host_languages"] \ if "extra_host_languages" in json_listing else None listing.name = json_listing["name"] \ if "name" in json_listing else None listing.property_type = json_listing["property_type"] \ if "property_type" in json_listing else None # pricing json_pricing = json["pricing_quote"] listing.price = json_pricing["rate"][ "amount"] if "rate" in json_pricing else None listing.currency = json_pricing["rate"][ "currency"] if "rate" in json_pricing else None listing.rate_type = json_pricing[ "rate_type"] if "rate_type" in json_pricing else None return listing except: logger.exception( "Error in survey.listing_from_search_page_json: returning None" ) sys.exit(-1) return None