def analysis_test(test_id): logging.info("test_id: %s" % test_id) mongo = db.Mongo() wav_test_info = mongo.get_wav_test_info(test_id) result = {"status": "finished", "feature": {}} audio_key = '' file_location = '' try: file_location = wav_test_info.get('file_location', 'local') audio_key = wav_test_info['wav_upload_url'] file = get_wav_file_bytes_io(audio_key, file_location) if file is not None: result['feature'] = analysis_features.analysis1( file, wav_test_info['text'], timeout=30, rcg_interface='baidu', segments=1) result['analysis_end_time'] = datetime.datetime.utcnow() else: logging.error( 'pre-test: Finally failed to get audio file from %s after retries.' % file_location) except Exception as e: tr = traceback.format_exc( ) + "\naudio:" + audio_key + "\nfile_location:" + file_location print(tr) logging.error('error happened during process task: %s' % e) result["status"] = 'error' mongo.save_test_result(test_id, result) return result["status"]
def __init__(self): config = configparser.ConfigParser() config.read('collect_bot.ini') config_map = {} for key in config.keys(): config_map[key] = dict(config.items(key)) if config_map["bot"]["db_type"] == "mongo": self.db = db.Mongo() else: raise Exception("invalid db type.", config_map["bot"]["db_type"]) if "url" not in config_map["kakao"]: raise Exception("invalid config (not exit url)") if "key" not in config_map["kakao"]: raise Exception("invalid config (not exit key)") self.addr_loader = addr_data_loader.AddrDataLoader() self.runner = runner.Runner() self.progress_bar = {} self.kakao_addr_api_url = config_map["kakao"]["url"] self.kakao_addr_api_key = config_map["kakao"]["key"]
rating = float(input("Rating?")) imdb = int(input("IMDB?")) opinion = input("Opinion?") film1 = cinema.Film(title, date, rating, imdb, opinion) cinema.Film.printFilm(film1) ok = input("Upload? (yes/no)") if ok == "yes": return film1 # Program starts here # m1 is the server instance m1 = db.Mongo(askConStr()) menu = 0 while menu != 4: print("\n---------------------") print("1. New film") print("2. See top films") print("4. Exit") print("---------------------") menu = int(input("Choice?")) if menu == 1: # ask new film film1 = askFilm() m1.uploadFilm(film1) elif menu == 2:
def analysis_main(current_id, q_num): _start_time = datetime.datetime.utcnow() logging.info("current_id: %s, q_num: %s" % (current_id, q_num)) feature = {} score = 0 tr = None file_location = '' audio_key = '' mongo = db.Mongo() user_answer_info = mongo.get_user_answer_info(current_id, q_num) # 要使用传入的 q_num 而不使用 current表中的 current_q_num,因为 current_q_num 只是django维护的临时标记,随时会改变。 q = mongo.get_problem(user_answer_info['q_id']) celery_result = 'no exception or been caught' try: file_location = user_answer_info.get('file_location', 'local') audio_key = user_answer_info['wav_upload_url'] Q_type = q['q_type'] file = get_wav_file_bytes_io(audio_key, file_location) if file is not None: if Q_type == 1: # 默认用百度识别 feature = analysis_features.analysis1(file, q['text'], timeout=30, rcg_interface='baidu') score = analysis_scores.score1(feature, rcg_interface='baidu') # feature = analysis_features.analysis1(file, q['text'], timeout=30, rcg_interface='xunfei') # score = analysis_scores.score1(feature,rcg_interface='xunfei') elif Q_type in [2, 5, 6, 7]: key_weights = q['weights']['key'] detail_weights = q['weights']['detail'] feature = analysis_features.analysis2(file, q['wordbase'], timeout=30) score = analysis_scores.score2(feature['key_hits'], feature['detail_hits'], key_weights, detail_weights) elif Q_type == 3: feature = analysis_features.analysis3(file, q['wordbase'], timeout=30) score = analysis_scores.score3(feature) else: logging.error('Invalid question type: %s' % Q_type) status = 'finished' tr = None else: logging.error( 'analysis_main: Finally failed to get audio file from %s after retries.' % file_location) status = 'error' except Exception as e: tr = traceback.format_exc( ) + "\naudio:" + audio_key + "\nfile_location:" + file_location print(tr) logging.error('error happened during process task: %s' % e) status = 'error' celery_result = str(e) user_answer_info['analysis_start_time'] = _start_time logging.info('Score: %s' % score) tries = 1 while tries <= 3: try: mongo.save_result(current_id, q_num, user_answer_info, feature, score, status=status, stack=tr) break except Exception as e: logging.exception( 'Exception(tries:%d/3) saving (%s) result to mongodb: %s' % (tries, current_id, str(e))) tries += 1 return celery_result
def __init__(self, config_map): self.config_map = config_map if self.config_map["bot"]["db_type"] == "mongo": self.db = db.Mongo() else: raise Exception("invalid db type.", self.config_map["bot"]["db_type"])