Example #1
0
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))
Example #2
0
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))
Example #3
0
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))
Example #4
0
 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())
Example #5
0
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))
Example #6
0
    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
Example #7
0
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))
Example #8
0
 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())
Example #9
0
 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())
Example #10
0
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))
Example #11
0
 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())
Example #12
0
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))
Example #13
0
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))
Example #14
0
    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
Example #15
0
    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
Example #16
0
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))
Example #17
0
    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())
Example #18
0
 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())