| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- import requests
- from concurrent.futures import ThreadPoolExecutor, as_completed
- from setting import GAODE_KEY, BANJING, LIANSUO_LIST, ZHUZHAI_COUNT, XUEXIAO_COUNT, XIEZILOU_COUNT, LIANSUO_COUNT, \
- JINGPIN_COUNT
- from log import PPLogger
- logger = PPLogger(name='gaode_api')
- logger.setup_logger()
- def get_zhoubian(location=None):
- # print(location)
- data_dict = {'pipei': False, 'zhuzhai': [], 'xuexiao': [], 'xiezilou': [], 'jingpin': [], 'liansuo': []}
- if not location:
- return data_dict
- api = 'https://restapi.amap.com/v5/place/around'
- keywords = LIANSUO_LIST
- params_list = [{
- 'key': GAODE_KEY,
- 'keywords': keyword,
- 'location': location,
- 'radius': str(BANJING),
- 'region': '370200',
- 'city_limit': 'true',
- 'show_fields': 'business',
- # 'page_size': '50'
- } for keyword in keywords]
- params = {
- 'key': GAODE_KEY,
- 'types': '080113|120201|120202|120203|120300|141201|141202|141206',
- 'location': location,
- 'radius': str(BANJING),
- 'region': '370200',
- 'city_limit': 'true',
- 'show_fields': 'business',
- # 'page_size': '50'
- }
- results_liansuo = []
- with ThreadPoolExecutor() as pool:
- r1 = [pool.submit(requests.get, api, p) for p in params_list]
- for future1 in as_completed(r1):
- results_liansuo.append(future1.result().json())
- r2 = [pool.submit(requests.get, api, params)]
- for future2 in as_completed(r2):
- results_qita = future2.result().json()
- if results_qita['infocode'] != '10000':
- logger.error(results_qita)
- return data_dict
- for liansuo in results_liansuo:
- try:
- for pois in liansuo['pois']:
- # print(pois)
- data_dict['liansuo'].append({'name':pois['name'], 'address':pois['address'], 'distance':pois['distance']})
- except Exception as e:
- logger.error(e, liansuo)
- for qita in results_qita['pois']:
- if '写字楼' in qita['type']:
- data_dict['xiezilou'].append({'name':qita['name'], 'address':qita['address'], 'distance':qita['distance']})
- elif '住宅' in qita['type']:
- data_dict['zhuzhai'].append({'name':qita['name'], 'address':qita['address'], 'distance':qita['distance']})
- elif '学校' in qita['type']:
- data_dict['xuexiao'].append({'name':qita['name'], 'address':qita['address'], 'distance':qita['distance']})
- elif '台球' in qita['type']:
- data_dict['jingpin'].append({'name':qita['name'], 'address':qita['address'], 'distance':qita['distance']})
- else:
- pass
- if (len(data_dict['zhuzhai']) >= int(ZHUZHAI_COUNT) or len(data_dict['xuexiao']) >= int(XUEXIAO_COUNT) or len(
- data_dict['xiezilou']) >= int(XIEZILOU_COUNT)) \
- and len(data_dict['jingpin']) <= int(JINGPIN_COUNT) \
- and len(data_dict['liansuo']) >= int(LIANSUO_COUNT):
- data_dict['pipei'] = True
- return data_dict
- # print(get_zhoubian('120.469038,36.398833'))
|