def get_url(cls, source_id, quality, mode, retry=True): try: proxy = None if ModelSetting.get_bool('wavve_use_proxy'): proxy = ModelSetting.get('wavve_proxy_url') try: data = Wavve.streaming('live', source_id, quality, cls.login_data, proxy=proxy) surl = None if data is not None: surl = data['playurl'] if surl is None: raise Exception('no url') except: if retry: logger.debug('RETRY') cls.login_data = Wavve.do_login( ModelSetting.get('wavve_id'), ModelSetting.get('wavve_pw')) ModelSetting.set('wavve_credential', cls.login_data) return cls.get_url(source_id, quality, mode, retry=False) if ModelSetting.get('wavve_streaming_type') == '2': return 'redirect', surl return 'return_after_read', surl except Exception as e: logger.error('Exception:%s', e) logger.error(traceback.format_exc())
def prepare(cls, source_id, source_pw, arg): cls.login_data = None if ModelSetting.get('wavve_credential') == '': if source_id != '' and source_pw != '': cls.login_data = Wavve.do_login(source_id, source_pw) ModelSetting.set('wavve_credential', cls.login_data) else: cls.login_data = ModelSetting.get('wavve_credential')
def login(): try: credential = Wavve.do_login(ModelSetting.get('id'), ModelSetting.get('pw')) logger.info('Wavve Credential : %s', credential) if credential is None: return False db.session.query(ModelSetting).filter_by( key='credential').with_for_update().first().value = credential db.session.commit() return True except Exception as e: logger.error('Exception:%s', e) logger.error(traceback.format_exc())
def login(force=False): try: if ModelSetting.get('credential') == '' or force: credential = Wavve.do_login(ModelSetting.get('id'), ModelSetting.get('pw')) logger.info('Wavve Credential : %s', credential) if credential is None: return False ModelSetting.set('credential', credential) db.session.commit() else: pass return True except Exception as e: logger.error('Exception:%s', e) logger.error(traceback.format_exc())
def ajax(sub): logger.debug('Wavve AJAX sub:%s', sub) try: if sub == 'setting_save': try: ret = Logic.setting_save(request) return jsonify(ret) except Exception as e: logger.error('Exception:%s', e) logger.error(traceback.format_exc()) return jsonify('fail') elif sub == 'scheduler': try: go = request.form['scheduler'] logger.debug('scheduler :%s', go) if go == 'true': Logic.scheduler_start() else: Logic.scheduler_stop() return jsonify(go) except Exception as e: logger.error('Exception:%s', e) logger.error(traceback.format_exc()) return jsonify('fail') elif sub == 'login': try: ret = Wavve.do_login(request.form['id'], request.form['pw'], json_return=True) return jsonify(ret) except Exception as e: logger.error('Exception:%s', e) logger.error(traceback.format_exc()) return jsonify('fail') ######################################################### # 기본 ######################################################### # 프로그램에서도 사용 elif sub == 'analyze': url = request.form['url'] quality = None if 'quality' in request.form: quality = request.form['quality'] ret = LogicBasic.analyze(url, quality=quality) return jsonify(ret) elif sub == 'episode_download_url': logger.debug(request.form) url = request.form['url'] filename = request.form['filename'] logger.debug('download %s %s', url, filename) ret = LogicBasic.download_url(url, filename) return jsonify(ret) ######################################################### # 자동 ######################################################### elif sub == 'auto_list': try: ret = LogicRecent.get_list(request) logger.debug('len list :%s', len(ret)) return jsonify(ret) except Exception as e: logger.error('Exception:%s', e) elif sub == 'add_condition_list': try: ret = LogicRecent.add_condition_list(request) return jsonify(ret) except Exception as e: logger.error('Exception:%s', e) logger.error(traceback.format_exc()) elif sub == 'reset_db': try: ret = LogicRecent.reset_db() return jsonify(ret) except Exception as e: logger.error('Exception:%s', e) logger.error(traceback.format_exc()) ######################################################### # 프로그램 ######################################################### # more버튼 elif sub == 'program_page': try: code = request.form['code'] page = request.form['page'] ret = LogicBasic.analyze_program_page(code, page) return jsonify(ret) except Exception as e: logger.error('Exception:%s', e) logger.error(traceback.format_exc()) # 화질확인 elif sub == 'get_contents': try: code = request.form['code'] ret = Wavve.vod_contents_contentid(code) ret = Wavve.streaming(ret['type'], ret['contentid'], '2160p', ModelSetting.get('credential')) return jsonify(ret) except Exception as e: logger.error('Exception:%s', e) logger.error(traceback.format_exc()) elif sub == 'download_program': try: ret = LogicProgram.download_program(request) return jsonify(ret) except Exception as e: logger.error('Exception:%s', e) logger.error(traceback.format_exc()) elif sub == 'download_program_check': try: ret = LogicProgram.download_program_check(request) return jsonify(ret) except Exception as e: logger.error('Exception:%s', e) logger.error(traceback.format_exc()) elif sub == 'program_auto_command': try: ret = LogicProgram.program_auto_command(request) return jsonify(ret) except Exception as e: logger.error('Exception:%s', e) logger.error(traceback.format_exc()) except Exception as e: logger.error('Exception:%s', e) logger.error(traceback.format_exc())