def detail(sub): if sub == 'setting': setting_list = db.session.query(ModelSetting).all() arg = Util.db_list_to_dict(setting_list) arg['scheduler'] = str(scheduler.is_include(package_name)) arg['is_running'] = str(scheduler.is_running(package_name)) return render_template('%s_%s.html' % (package_name, sub), arg=arg) elif sub in ['request', 'queue', 'list']: setting_list = db.session.query(ModelSetting).all() arg = Util.db_list_to_dict(setting_list) arg['current_code'] = LogicAni24.current_data['code'] if LogicAni24.current_data is not None else None return render_template('%s_%s.html' % (package_name, sub), arg=arg) elif sub == 'log': return render_template('log.html', package=package_name) return render_template('sample.html', title='%s - %s' % (package_name, sub))
def detail(sub): logger.debug('DETAIL %s %s', package_name, sub) if sub == 'setting': setting_list = db.session.query(ModelSetting).all() arg = Util.db_list_to_dict(setting_list) return render_template('plex_setting.html', sub=sub, arg=arg) elif sub == 'plugin': setting_list = db.session.query(ModelSetting).all() arg = Util.db_list_to_dict(setting_list) return render_template('plex_plugin.html', sub=sub, arg=arg) elif sub == 'tool': return render_template('plex_tool.html') elif sub == 'lc': setting_list = db.session.query(ModelSetting).all() arg = Util.db_list_to_dict(setting_list) try: if arg['lc_json'] == '': arg['lc_json'] = "[]" #logger.debug(arg['lc_json']) tmp = json.loads(arg['lc_json']) #logger.debug(tmp) arg['lc_json'] = json.dumps(tmp, indent=4) #logger.debug(arg['lc_json']) except Exception as exception: logger.error('Exception:%s', exception) logger.error(traceback.format_exc()) arg['lc_json'] = Logic.db_default['lc_json'] tmp = json.loads(arg['lc_json']) arg['lc_json'] = json.dumps(tmp, indent=4) return render_template('plex_lc.html', arg=arg) elif sub == 'tivimate': setting_list = db.session.query(ModelSetting).all() arg = Util.db_list_to_dict(setting_list) try: if arg['tivimate_json'] == '': arg['tivimate_json'] = "[]" tmp = json.loads(arg['tivimate_json']) arg['tivimate_json'] = json.dumps(tmp, indent=4) except Exception as exception: logger.error('Exception:%s', exception) logger.error(traceback.format_exc()) arg['tivimate_json'] = Logic.db_default['tivimate_json'] tmp = json.loads(arg['tivimate_json']) arg['tivimate_json'] = json.dumps(tmp, indent=4) return render_template('plex_tivimate.html', arg=arg) elif sub == 'log': return render_template('log.html', package=package_name) return render_template('sample.html', title='%s - %s' % (package_name, sub))
def detail(sub): try: if sub == 'setting': setting_list = db.session.query(ModelSetting).all() arg = Util.db_list_to_dict(setting_list) arg['package_name'] = package_name arg['youtube_dl_path'] = 'youtube-dl' return render_template('%s_setting.html' % (package_name), arg=arg) elif sub == 'download': arg = { } arg['package_name'] = package_name arg['file_name'] = '%(title)s-%(id)s.%(ext)s' return render_template('%s_download.html' % (package_name), arg=arg) elif sub == 'list': arg = { } arg['package_name'] = package_name return render_template('%s_list.html' % (package_name), arg=arg) elif sub == 'log': return render_template('log.html', package=package_name) except Exception as e: logger.error('Exception:%s', e) logger.error(traceback.format_exc()) return render_template('sample.html', title='%s - %s' % (package_name, sub))
def to_dict(): try: from framework.util import Util return Util.db_list_to_dict(db.session.query(ModelSetting).all()) except Exception as e: logger.error('Exception:%s %s', e, key) logger.error(traceback.format_exc())
def detail(sub): logger.debug('DETAIL %s %s', package_name, sub) if sub == 'setting': setting_list = db.session.query(ModelSetting).all() arg = Util.db_list_to_dict(setting_list) arg['scheduler'] = str(scheduler.is_include(package_name)) arg['is_running'] = str(scheduler.is_running(package_name)) arg['path_rclone'] = Logic.path_rclone arg['default_rclone_setting'] = Logic.default_rclone_setting return render_template('rclone_setting.html', sub=sub, arg=arg) elif sub == 'status': return render_template('rclone_status.html') elif sub == 'list': return render_template('rclone_list.html') elif sub == 'log': return render_template('log.html', package=package_name) elif sub == 'mount': return redirect('/%s/mount_setting' % package_name) elif sub == 'mount_setting': arg = {} arg['option'] = '--allow-other --fast-list --drive-skip-gdocs --poll-interval=1m --buffer-size=32M --vfs-read-chunk-size=32M --vfs-read-chunk-size-limit 2048M --vfs-cache-mode writes --dir-cache-time=1m --log-level INFO' #if platform.system() != 'Windows': # arg['option'] += ' --daemon' return render_template('%s_%s.html' % (package_name, sub), arg=arg) elif sub == 'serve_setting': arg = {} arg['option'] = '--user sjva --pass sjva --fast-list --drive-skip-gdocs --poll-interval=1m --buffer-size=32M --vfs-read-chunk-size=32M --vfs-read-chunk-size-limit 2048M --vfs-cache-mode writes --dir-cache-time=1m --log-level INFO' return render_template('%s_%s.html' % (package_name, sub), arg=arg) else: return blueprint.send_static_file(sub) return render_template('sample.html', title='%s - %s' % (package_name, sub))
def setting_save_system(req): try: for key, value in req.form.items(): logger.debug('Key:%s Value:%s', key, value) entity = db.session.query(ModelSetting).filter_by( key=key).with_for_update().first() entity.value = value #if key == 'theme': # SystemLogic.change_theme(value) db.session.commit() lists = ModelSetting.query.all() SystemLogic.setting_list = Util.db_list_to_dict(lists) USERS[db.session.query(ModelSetting).filter_by( key='id').first().value] = User( db.session.query(ModelSetting).filter_by( key='id').first().value, passwd_hash=db.session.query(ModelSetting).filter_by( key='pw').first().value) SystemLogic.set_restart_scheduler() set_level( int( db.session.query(ModelSetting).filter_by( key='log_level').first().value)) return True except Exception as exception: logger.error('Exception:%s', exception) logger.error(traceback.format_exc()) return False
def detail(sub): if sub == 'search': try: setting_list = db.session.query(ModelSetting).all() arg = Util.db_list_to_dict(setting_list) # arg['wavve_plugin'] = request.args.get('wavve_plugin') # arg['tving_plugin'] = request.args.get('tving_plugin') # arg['code'] = request.args.get('code') # return render_template('%s_search.html' % package_name, sub=sub, arg=arg) return render_template('%s_search.html' % (package_name), arg=arg) except Exception as e: logger.error('Exception:%s', e) logger.error(traceback.format_exc()) if sub == 'ratings': try: setting_list = db.session.query(ModelSetting).all() arg = Util.db_list_to_dict(setting_list) return render_template('%s_ratings.html' % (package_name), arg=arg) except Exception as e: logger.error('Exception:%s', e) logger.error(traceback.format_exc()) if sub == 'whitelist': try: wavve_programs = Logic.wavve_programs() tving_programs = Logic.tving_programs() return render_template('%s_whitelist.html' % (package_name), wavve_programs=wavve_programs, tving_programs=tving_programs) except Exception as e: logger.error('Exception:%s', e) logger.error(traceback.format_exc()) if sub == 'tving4k': try: setting_list = db.session.query(ModelSetting).all() arg = Util.db_list_to_dict(setting_list) return render_template('%s_tving4k.html' % (package_name), arg=arg) except Exception as e: logger.error('Exception:%s', e) logger.error(traceback.format_exc()) elif sub == 'log': return render_template('log.html', package=package_name) return render_template('sample.html', title='%s - %s' % (package_name, sub))
def to_dict(): try: ret = Util.db_list_to_dict(db.session.query(ModelSetting).all()) ret['package_name'] = package_name return ret except Exception as e: logger.error('Exception:%s %s', e, key) logger.error(traceback.format_exc())
def to_dict(): try: from framework.util import Util arg = Util.db_list_to_dict(db.session.query(ModelSetting).all()) arg['package_name'] = package_name return arg except Exception as exception: logger.error('Exception:%s', exception) logger.error(traceback.format_exc())
def detail(sub): if sub == 'setting': setting_list = db.session.query(ModelSetting).all() arg = Util.db_list_to_dict(setting_list) arg['status'] = str(Logic.current_process is not None) arg['is_installed'] = 'Installed' if Logic.is_installed() else 'Not Installed' return render_template('%s_%s.html' % (package_name, sub), arg=arg) elif sub == 'log': return render_template('log.html', package=package_name) return render_template('sample.html', title='%s - %s' % (package_name, sub))
def scheduler_function(): try: from ManamoaDownloader import LogicMD setting_list = db.session.query(ModelSetting).all() arg = Util.db_list_to_dict(setting_list) arg['downlist'] = arg['downlist'].split('|') LogicMD.init(arg, Logic.listener) LogicMD.start() except Exception as e: logger.error('Exception:%s', e) logger.error(traceback.format_exc())
def detail(sub): if sub == 'setting': setting_list = db.session.query(ModelSetting).all() arg = Util.db_list_to_dict(setting_list) arg['scheduler'] = str(scheduler.is_include(package_name)) arg['is_running'] = str(scheduler.is_running(package_name)) return render_template('%s_%s.html' % (package_name, sub), arg=arg) elif sub == 'log': return render_template('log.html', package=package_name) return render_template('sample.html', title='%s - %s' % (package_name, sub))
def detail(sub): if sub == 'setting': setting_list = db.session.query(ModelSetting).all() arg = Util.db_list_to_dict(setting_list) arg['scheduler'] = str(scheduler.is_include(package_name)) arg['is_running'] = str(scheduler.is_running(package_name)) return render_template('%s_%s.html' % (package_name, sub), arg=arg) elif sub == 'status': arg = {} arg['is_running'] = str(scheduler.is_running(package_name)) return render_template('%s_%s.html' % (package_name, sub), arg=arg) elif sub == 'command_list': arg = {} arg['list_type'] = "command_list" return render_template('%s_list.html' % (package_name), arg=arg) elif sub == 'kthoom': return blueprint.send_static_file('index.html') elif sub == 'viewer': site = "/manamoa/kthoom?bookUri=dp" return render_template('iframe.html', site=site) elif sub == 'log': return render_template('log.html', package=package_name) return render_template('sample.html', title='%s - %s' % (package_name, sub))
def process_download_file(self): setting_list = Util.db_list_to_dict( db.session.query(ModelSetting).all()) Logic._DOWNLOAD_PATH = setting_list['download_path'] except_partial = setting_list['except_partial'].split(',') except_genre_remove_epi_number = [ x.strip() for x in setting_list['except_genre_remove_epi_number'].split(',') ] if '' in except_genre_remove_epi_number: except_genre_remove_epi_number.remove('') library_list = db.session.query(ModelKtvLibrary).all() Logic._LIBRARY_ROOT_LIST = [] for item in library_list: if item.library_type == 0: drive_type = EntityLibraryPathRoot.DriveType.LOCAL else: drive_type = EntityLibraryPathRoot.DriveType.RCLONE lib = EntityLibraryPathRoot(drive_type=drive_type, mount_path=item.library_path, rclone_path=item.rclone_path, depth=2, replace_for_plex=[ item.replace_for_plex_source, item.replace_for_plex_target ]) Logic._LIBRARY_ROOT_LIST.append(lib) dir_list = None path = Logic._DOWNLOAD_PATH list_ = os.listdir(Logic._DOWNLOAD_PATH) logger.debug('process_download_file 2') logger.debug('list : %s', len(list_)) # rclone μμμ΄ νμνκ°.. flag_rclone_start = False for var in list_: try: #with db.session.no_autoflush: if True: abspath = os.path.join(path, var) telegram_log = None entity = None if os.path.isfile(abspath): if Logic.check_except_partial(var, except_partial): continue telegram_log = package_name + '\n%s\n' % abspath if dir_list is None: logger.debug('process_download_file') # λ°©μ‘μ΄λ¦ λͺ©λ‘ dir_list = Logic._make_dir_list() logger.debug('process_download_file 1') logger.debug('===================================') logger.debug('File Process: %s', var) # λ°©μ‘μ© νμΌμ΄ μλλ©΄ entity = EntityShow(var, nd_download_path=path, except_genre_remove_epi_number= except_genre_remove_epi_number) if entity.video_type == EntityShow.VideoType.KOREA_TV: logger.debug('<Move>') _find_dir = Logic._get_find_dir(dir_list, entity) if len(_find_dir) == 1: entity.set_find_library_path(_find_dir[0]) logger.debug(' - νλμ ν΄λ μ νλ¨ : %s', _find_dir[0].abspath) entity.move_file() # 2019-09-01 if entity.scan_status == EntityShow.ScanStatus.MOVED and entity.nd_find_library_path.entity_library_root.drive_type == EntityLibraryPathRoot.DriveType.LOCAL: if app.config['config']['use_celery']: self.update_state( state='PROGRESS', meta={ 'filename': entity.move_abspath_local }) else: Logic.send_to_listener( entity.move_abspath_local) elif entity.scan_status == EntityShow.ScanStatus.MOVED and entity.nd_find_library_path.entity_library_root.drive_type == EntityLibraryPathRoot.DriveType.RCLONE: if app.config['config']['use_celery']: self.update_state( state='PROGRESS', meta={ 'filename': entity.move_abspath_cloud }) else: Logic.send_to_listener( entity.move_abspath_cloud) entity.modelfile = ModelKtvFile.create(entity) logger.debug(entity.log) # IDλ₯Ό 보λ΄μΌνκΈ° λλ¬Έμ commit db.session.add(entity.modelfile) db.session.commit() if entity.scan_status == EntityShow.ScanStatus.MOVED: try: import plex plex.Logic.send_scan_command( entity.modelfile, package_name) except Exception as exception: logger.debug('NOT IMPORT PLEX!!') db.session.add(entity.modelfile) db.session.commit() if entity.move_type == EntityLibraryPathRoot.DriveType.RCLONE: flag_rclone_start = True elif len(_find_dir) > 1: logger.debug(' - μ νλ ν΄λκ° 2κ° μ΄μ') logger.debug(' %s', _find_dir[0].abspath) logger.debug(' %s', _find_dir[1].abspath) entity.log += '<νμΌμ΄λ>\n' entity.log += 'μ νλ ν΄λ %sκ°\n' % (len(_find_dir)) entity.log += ' %s\n' % _find_dir[0].abspath entity.log += ' %s\n' % _find_dir[1].abspath tmp = os.path.join( Logic._DOWNLOAD_PATH, setting_list['manual_folder_name']) if not os.path.isdir(tmp): os.mkdir(tmp) if os.path.exists(os.path.join(tmp, var)): os.remove(os.path.join(tmp, var)) shutil.move(abspath, tmp) if app.config['config']['use_celery']: self.update_state(state='PROGRESS', meta={ 'filename': os.path.join( tmp, var) }) else: Logic.send_to_listener( os.path.join(tmp, var)) entity.log += ' %s μ΄λ\n' % tmp elif not _find_dir: #continue logger.debug(' - μ νλ ν΄λ μμ') entity.log += '<νμΌμ΄λ>\n' entity.log += 'μ νλ ν΄λ μμ\n' flag_move = False if entity.daum_info is None: #if FileManagerSetting.HOW_TO_PROCESS_NO_DAUM_FILE == 'MOVE_ON_NOMETA_DIR_IN_DOWNLOAD_DIR': # tmp = os.path.join(Logic._DOWNLOAD_PATH, self._NO_DAUM_INFO_MOVE_DIRECTORY_NAME ) # if not os.path.isdir(tmp): # os.mkdir(tmp) # shutil.move(abspath, tmp) # flag_move = True #elif FileManagerSetting.HOW_TO_PROCESS_NO_DAUM_FILE == 'PROCESS_LIKE_AS_GENRE': #daum = EntityDaumTV(-1) try: import daum_tv daum = daum_tv.ModelDaumTVShow(-1) daum.genre = setting_list[ 'no_daum_folder_name'] daum.title = entity.filename_name except Exception as exception: logger.error('Exception:%s', exception) logger.error(traceback.format_exc()) daum = None entity.daum_info = daum if flag_move == False and entity.daum_info: flag_search = False for library_root in Logic._LIBRARY_ROOT_LIST: for _ in library_root.get_genre_list(): if _ == entity.daum_info.genre: #ν΄λλ§ λ§λ€μ΄μ£Όκ³ λ€μλ²μ μ΄λ. 첫λ²μ§Έ μ νλκ³³λ§ tmp = os.path.join( library_root.mount_path, _, Util. change_text_for_use_filename( entity.daum_info.title) ) if not os.path.isdir(tmp): logger.debug( 'mkdir:%s', tmp) os.mkdir(tmp) entity.log += 'ν΄λμμ± : %s\n' % tmp logger.debug( ' * μ₯λ₯΄:%s [%s] ν΄λ μμ±. λ€μ νμμ μ΄λ', _, tmp) flag_search = True break if flag_search: break if not flag_search: logger.debug(' * μ₯λ₯΄:%s μμ.', entity.daum_info.genre) # TODO μ΅μ # λ‘컬μ μ₯λ₯΄ λ§λ λ€ """ _ = os.path.join(self._DOWNLOAD_PATH, 'tmp') if not os.path.isdir(_): os.mkdir(_) """ # λ€μλ²μ λ°©μ‘λͺ ν΄λλ₯Ό λ§λ λ€??? _ = os.path.join( Logic._LIBRARY_ROOT_LIST[0]. mount_path, entity.daum_info.genre) if not os.path.isdir(_): os.mkdir(_) entity.log += 'μ₯λ₯΄ ν΄λμμ± : %s\n' % _ telegram_log += entity.log logger.debug('===================================') # μ²λ¦¬νμ§ λͺ»νλ ν¬λ©§μ νμΌ else: tmp = os.path.join( Logic._DOWNLOAD_PATH, setting_list['not_ktv_move_folder_name']) if not os.path.isdir(tmp): os.mkdir(tmp) if os.path.exists(os.path.join(tmp, var)): os.remove(os.path.join(tmp, var)) shutil.move(abspath, tmp) if app.config['config']['use_celery']: self.update_state( state='PROGRESS', meta={'filename': os.path.join(tmp, var)}) else: Logic.send_to_listener(os.path.join(tmp, var)) telegram_log += 'μ²λ¦¬νμ§ λͺ»νλ νμΌ νμ\nμ΄λ:%s\n' % tmp else: #ν΄λ tmp = var + '.mp4' match_flag = False for regex in EntityShow._REGEX_FILENAME: match = re.compile(regex).match(tmp) if match: match_flag = True break if match_flag: try: childs = os.listdir(abspath) # λͺ¨λ νμΌμΈ κ²½μ°μλ§ μ²λ¦¬ # 2019-07-13 for c in childs: if os.path.isdir(os.path.join(abspath, c)): continue for c in childs: tmp = os.path.join(abspath, c) if os.stat(tmp).st_size < 1000000: os.remove(tmp) else: if os.path.exists(os.path.join( path, c)): if os.stat( os.path.join(path, c) ).st_size >= os.stat(tmp).st_size: os.remove(tmp) else: os.remove(os.path.join( path, c)) shutil.move(tmp, path) else: shutil.move(tmp, path) shutil.rmtree(abspath) except Exception as exception: logger.error('Exception:%s', exception) logger.error(traceback.format_exc()) except Exception as exception: try: db.session.rollback() logger.debug( 'ROLLBACK!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!') except: logger.debug('>>>>>>>>>>>>>>>>>>>>>>>>>>') logger.error('Exception:%s', exception) logger.error(traceback.format_exc()) finally: try: if ModelSetting.query.filter_by(key='telegram').first( ).value == 'True' and telegram_log is not None: img = None if entity is not None and entity.daum_info is not None and entity.daum_info.poster_url is not None: img = entity.daum_info.poster_url ToolBaseNotify.send_message( telegram_log, image_url=img, message_id='fileprocess_ktv_result') except Exception as exception: logger.error('Exception:%s', exception) logger.error(traceback.format_exc()) logger.debug('flag_rclone_start : %s', flag_rclone_start) #self.update_state(state='PROGRESS',meta={'flag_rclone_start':flag_rclone_start}) #if flag_rclone_start: # scheduler.execute_job('rclone') Logic.check_library_completed() return flag_rclone_start
def add_download2(download_url, default_torrent_program, download_path, request_type='web', request_sub_type='', server_id=None, magnet=None): try: ######################## add name to magnet if ModelSetting.get_bool('use_download_name'): if "&dn=" not in download_url: try: data = {'uri': download_url} url = '%s/torrent_info/api/json' % ( SystemModelSetting.get('ddns')) if SystemModelSetting.get_bool('auth_use_apikey'): url += '?apikey=%s' % SystemModelSetting.get( 'auth_apikey') raw_info = requests.get(url, data).json() if raw_info[u'success']: download_url += '&dn=' + raw_info[u'info'][u'name'] # else: # #logger.debug("log: %d", str(raw_info[u'log'])) except: pass ######################## torrent_tracker if ModelSetting.get_bool('use_tracker'): tracker_list = [] tracker_list += [ tracker.strip() for tracker in ModelSetting.get('tracker_list').split('\n') if len(tracker.strip()) != 0 ] tracker_list += [ tracker.strip() for tracker in ModelSetting.get( 'tracker_list_manual').split('\n') if len(tracker.strip()) != 0 ] for tracker in tracker_list: download_url += '&tr=' + tracker ######################## setting_list = db.session.query(ModelSetting).all() arg = Util.db_list_to_dict(setting_list) if default_torrent_program is None: default_torrent_program = arg['default_torrent_program'] if download_path is not None and download_path.strip() == '': download_path = None if default_torrent_program == '0': if download_path is None: download_path = arg['transmission_default_path'] download_path = LogicNormal.get_download_path(download_path, server_id, download_url, magnet=magnet) ret = LogicTransmission.add_download(download_url, download_path) elif default_torrent_program == '1': if download_path is None: download_path = arg['downloadstation_default_path'] download_path = LogicNormal.get_download_path(download_path, server_id, download_url, magnet=magnet) ret = LogicDownloadStation.add_download( download_url, download_path) elif default_torrent_program == '2': if download_path is None: download_path = arg['qbittorrnet_default_path'] download_path = LogicNormal.get_download_path(download_path, server_id, download_url, magnet=magnet) ret = LogicQbittorrent.add_download(download_url, download_path) elif default_torrent_program == '3': if download_path is None: download_path = arg['aria2_default_path'] download_path = LogicNormal.get_download_path(download_path, server_id, download_url, magnet=magnet) ret = LogicAria2.add_download(download_url, download_path) ret['default_torrent_program'] = default_torrent_program ret['downloader_item_id'] = ModelDownloaderItem.save( ret, request_type, request_sub_type) except Exception as e: logger.error('Exception:%s', e) logger.error(traceback.format_exc()) ret = {'ret': 'error'} finally: return ret
def second_menu(sub, sub2): if sub == 'basic': if sub2 == 'setting': try: setting_list = db.session.query(ModelSetting).all() arg = Util.db_list_to_dict(setting_list) return render_template('%s_%s_%s.html' % (package_name, sub, sub2), arg=arg) except Exception as e: logger.error('Exception:%s', e) logger.error(traceback.format_exc()) elif sub2 == 'download': try: arg = {} arg["code"] = request.args.get('code') if arg['code'] is None: arg['code'] = ModelSetting.get('recent_code') return render_template('%s_%s_%s.html' % (package_name, sub, sub2), arg=arg) except Exception as e: logger.error('Exception:%s', e) logger.error(traceback.format_exc()) elif sub == 'recent': if sub2 == 'setting': try: setting_list = db.session.query(ModelSetting).all() arg = Util.db_list_to_dict(setting_list) arg['scheduler'] = str(scheduler.is_include('tving_recent')) arg['is_running'] = str(scheduler.is_running('tving_recent')) return render_template('%s_%s_%s.html' % (package_name, sub, sub2), arg=arg) except Exception as e: logger.error('Exception:%s', e) logger.error(traceback.format_exc()) elif sub2 == 'list': try: arg = {} return render_template('%s_%s_%s.html' % (package_name, sub, sub2), arg=arg) except Exception as e: logger.error('Exception:%s', e) logger.error(traceback.format_exc()) elif sub == 'program': if sub2 == 'setting': try: setting_list = db.session.query(ModelSetting).all() arg = Util.db_list_to_dict(setting_list) return render_template('%s_%s_%s.html' % (package_name, sub, sub2), arg=arg) except Exception as e: logger.error('Exception:%s', e) logger.error(traceback.format_exc()) elif sub2 == 'list': try: arg = {} return render_template('%s_%s_%s.html' % (package_name, sub, sub2), arg=arg) except Exception as e: logger.error('Exception:%s', e) logger.error(traceback.format_exc()) elif sub2 == 'select': try: setting_list = db.session.query(ModelSetting).all() arg = Util.db_list_to_dict(setting_list) arg["code"] = request.args.get('code') if arg['code'] is None: arg["code"] = ModelSetting.get('recent_code') return render_template('%s_%s_%s.html' % (package_name, sub, sub2), arg=arg) except Exception as e: logger.error('Exception:%s', e) logger.error(traceback.format_exc()) elif sub == 'log': return render_template('log.html', package=package_name) return render_template('sample.html', title='%s - %s' % (package_name, sub))
def custom(): try: # μ 체 EPG λͺ©λ‘ μ±λ import epg total_channel_list = epg.ModelEpgMakerChannel.get_channel_list() logger.debug("custom epg channel list : %s", len(total_channel_list)) tmp = [] setting_list = db.session.query(ModelSetting).all() arg = Util.db_list_to_dict(setting_list) for x in total_channel_list: #if (arg['use_wavve'] == 'True' and x.wavve_id is not None) or (arg['use_tving'] == 'True' and x.tving_id is not None) or (arg['use_videoportal'] == 'True' and x.videoportal_id is not None) or (arg['use_everyon'] == 'True' and x.everyon_id is not None): if (arg['use_wavve'] == 'True' and x.wavve_id is not None) or ( arg['use_tving'] == 'True' and x.tving_id is not None ) or (arg['use_videoportal'] == 'True' and x.videoportal_id is not None) or (arg['use_everyon'] == 'True' and x.everyon_id is not None): tmp.append(x) # μ΄ λͺ©λ‘μ μλ λ°©μ‘μ λ£λλ€.. μ€ν¬μΈ , λΌλμ€? # μλμ€μ tmp2 = [x.as_dict() for x in tmp] append_list = [] index = 9000 for ch in LogicKlive.channel_list: find = False for t in tmp2: #logger.debug(t) try: if (ch.source == 'wavve' and ch.source_id == t['wavve_id']) or ( ch.source == 'tving' and ch.source_id == t['tving_id']) or ( ch.source == 'videoportal' and ch.source_id == t['videoportal_id'] ) or (ch.source == 'everyon' and ch.source_id == t['everyon_id']): find = True break except: logger.debug(t) if find == False: #logger.debug('%s %s' % (ch.source, ch.title)) entity = {} index += 1 entity['id'] = str(index) entity['name'] = ch.title entity['wavve_name'] = entity['wavve_id'] = entity[ 'wavve_number'] = None entity['tving_name'] = entity['tving_id'] = entity[ 'tving_number'] = None entity['videoportal_name'] = entity[ 'videoportal_id'] = entity['videoportal_number'] = None entity['everyon_name'] = entity['everyon_id'] = entity[ 'everyon_number'] = None if ch.source in ['wavve', 'tving', 'videoportal']: #, 'everyon']: entity['%s_id' % ch.source] = ch.source_id entity['%s_name' % ch.source] = ch.title entity['category'] = ch.source if ch.source in [ 'youtubedl', 'streamlink', 'navertv', 'kakaotv', 'fix_url', 'kbs', 'sbs', 'mbc' ]: entity['user_source'] = ch.source entity['user_source_id'] = ch.source_id entity['user_source_name'] = ch.title entity['auto'] = 'user_source' entity['category'] = ch.source append_list.append(entity) logger.debug(u'μΆκ° κ°―μ:%s', len(append_list)) logger.debug(u'EPG:%s', len(tmp2)) tmp2 = tmp2 + append_list logger.debug(u'TOTAL:%s', len(tmp2)) #return total_channel_list #tmp2 = [x.as_dict() for x in tmp] #logger.debug(tmp2) for x in tmp2: if arg['use_wavve'] == 'True' and x['wavve_id'] is not None: x['auto'] = 'wavve' elif arg['use_tving'] == 'True' and x['tving_id'] is not None: x['auto'] = 'tving' elif arg['use_videoportal'] == 'True' and x[ 'videoportal_id'] is not None: x['auto'] = 'videoportal' #elif arg['use_everyon'] == 'True' and x['everyon_id'] is not None: # x['auto'] = 'everyon' if x['wavve_id'] is not None: entity = db.session.query(ModelCustom).filter( ModelCustom.source == 'wavve').filter( ModelCustom.source_id == x['wavve_id']).first() if entity is not None: x['wavve_number'] = entity.number if x['tving_id'] is not None: entity = db.session.query(ModelCustom).filter( ModelCustom.source == 'tving').filter( ModelCustom.source_id == x['tving_id']).first() if entity is not None: x['tving_number'] = entity.number if x['videoportal_id'] is not None: entity = db.session.query(ModelCustom).filter( ModelCustom.source == 'videoportal').filter( ModelCustom.source_id == x['videoportal_id']).first() if entity is not None: x['videoportal_number'] = entity.number #if x['everyon_id'] is not None: # entity = db.session.query(ModelCustom).filter(ModelCustom.source == 'everyon').filter(ModelCustom.source_id == x['everyon_id']).first() # if entity is not None: # x['everyon_number'] = entity.number if 'user_source' in x: entity = db.session.query(ModelCustom).filter( ModelCustom.source == x['user_source']).filter( ModelCustom.source_id == x['user_source_id']).first() if entity is not None: x['user_source_number'] = entity.number return tmp2 except Exception as e: logger.error('Exception:%s', e) logger.error(traceback.format_exc())
def to_dict(): try: return Util.db_list_to_dict(db.session.query(ModelSetting).all()) except Exception as e: logger.error('Exception:%s', e) logger.error(traceback.format_exc())