def tenders_feed(client=Client(''), sleep_time=10): while True: tender_list = True while tender_list: logger.info("Get next batch") tender_list = client.get_tenders() for tender in tender_list: logger.debug("Return tender {}".format(str(tender))) yield tender logger.info("Wait to get next batch") sleep(sleep_time)
def get_tender_id_by_uaid(ua_id, client=Client(''), descending=True, id_field='tenderID'): params = {'offset': '', 'opt_fields': id_field, 'descending': descending} tender_list = True client._update_params(params) while tender_list: tender_list = client.get_tenders() for tender in tender_list: if tender[id_field] == ua_id: return tender.id raise IdNotFound
def main(): FORMAT = '%(asctime)-15s %(levelname)s [%(name)s] %(funcName)s %(message)s' logging.basicConfig(format=FORMAT, level=logging.INFO) client = Client(**client_config) socket.setdefaulttimeout(client_config['timeout']) try: offset = open('next_tender').read() client.params['offset'] = offset except: pass plist = dict() while True: tender_list = client.get_tenders() if not tender_list: break for t in tender_list: logger.info("Get tener %s %s", t.id, t.dateModified) try: tender = client.get_tender(t.id)['data'] if 'documents' not in tender: continue for d in tender.documents: logger.info("++ Got document %s", d.title) process_document(plist, t, d) except Exception as e: logger.error("Exception {}: {}".format(type(e), e)) with open('next_tender', 'w') as f: f.write(client.params['offset'])
def prepare_api_wrapper(key='', host_url="https://api-sandbox.openprocurement.org", api_version='0.8'): return Client(key, host_url, api_version)
def prepare_api_wrapper(key, host_url, api_version): return Client(key, host_url, api_version)
def prepare_api(key=''): return Client(key)
def get_tender_by_uaid(ua_id, client=Client('')): tender_id = get_tender_id_by_uaid(ua_id, client) return client.get_tender(tender_id)