first commit
This commit is contained in:
143
logic.py
Executable file
143
logic.py
Executable file
@@ -0,0 +1,143 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#########################################################
|
||||
# python
|
||||
import os
|
||||
import sys
|
||||
import traceback
|
||||
import logging
|
||||
import threading
|
||||
import time
|
||||
|
||||
# third-party
|
||||
from sqlalchemy import desc
|
||||
|
||||
# sjva 공용
|
||||
from framework import db, scheduler, path_data
|
||||
from framework.job import Job
|
||||
from framework.util import Util
|
||||
from framework.logger import get_logger
|
||||
|
||||
# 패키지
|
||||
# from .plugin import package_name, logger
|
||||
from .model import ModelSetting
|
||||
from .logic_queue import LogicQueue
|
||||
from .logic_inflearn import LogicInflearn
|
||||
|
||||
#########################################################
|
||||
package_name = __name__.split(".")[0]
|
||||
logger = get_logger(package_name)
|
||||
|
||||
|
||||
class Logic(object):
|
||||
db_default = {
|
||||
"inflearn_url": "https://www.inflearn.com/",
|
||||
"download_path": os.path.join(path_data, "inflearn"),
|
||||
"inflearn_auto_make_folder": "True",
|
||||
"inflearn_auto_make_season_folder": "True",
|
||||
"inflearn_finished_insert": "[완결]",
|
||||
"include_date": "False",
|
||||
"date_option": "0", # 0:YYMMDD, 1:YYYY-MM-DD
|
||||
"auto_make_folder": "True",
|
||||
"max_ffmpeg_process_count": "4",
|
||||
"auto_interval": "* 20 * * *",
|
||||
"auto_start": "False",
|
||||
"whitelist_program": "",
|
||||
}
|
||||
|
||||
@staticmethod
|
||||
def db_init():
|
||||
try:
|
||||
logger.debug(Logic.db_default.items())
|
||||
for key, value in Logic.db_default.items():
|
||||
logger.debug(f"{key}: {value}")
|
||||
if db.session.query(ModelSetting).filter_by(key=key).count() == 0:
|
||||
db.session.add(ModelSetting(key, value))
|
||||
db.session.commit()
|
||||
except Exception as e:
|
||||
logger.error("Exception:%s", e)
|
||||
logger.error(traceback.format_exc())
|
||||
|
||||
@staticmethod
|
||||
def plugin_load():
|
||||
try:
|
||||
logger.debug("%s plugin_load", package_name)
|
||||
# DB 초기화
|
||||
Logic.db_init()
|
||||
|
||||
if ModelSetting.get("auto_start") == "True":
|
||||
Logic.scheduler_start()
|
||||
|
||||
# 편의를 위해 json 파일 생성
|
||||
from .plugin import plugin_info
|
||||
|
||||
Util.save_from_dict_to_json(
|
||||
plugin_info, os.path.join(os.path.dirname(__file__), "info.json")
|
||||
)
|
||||
LogicQueue.queue_start()
|
||||
except Exception as e:
|
||||
logger.error("Exception:%s", e)
|
||||
logger.error(traceback.format_exc())
|
||||
|
||||
@staticmethod
|
||||
def plugin_unload():
|
||||
try:
|
||||
logger.debug("%s plugin_unload", package_name)
|
||||
except Exception as e:
|
||||
logger.error("Exception:%s", e)
|
||||
logger.error(traceback.format_exc())
|
||||
|
||||
@staticmethod
|
||||
def scheduler_start():
|
||||
try:
|
||||
interval = ModelSetting.get("auto_interval")
|
||||
job = Job(
|
||||
package_name,
|
||||
package_name,
|
||||
interval,
|
||||
Logic.scheduler_function,
|
||||
"인프런 다운로드",
|
||||
True,
|
||||
)
|
||||
scheduler.add_job_instance(job)
|
||||
except Exception as e:
|
||||
logger.error("Exception:%s", e)
|
||||
logger.error(traceback.format_exc())
|
||||
|
||||
@staticmethod
|
||||
def scheduler_stop():
|
||||
try:
|
||||
scheduler.remove_job(package_name)
|
||||
except Exception as e:
|
||||
logger.error("Exception:%s", e)
|
||||
logger.error(traceback.format_exc())
|
||||
|
||||
@staticmethod
|
||||
def setting_save(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
|
||||
db.session.commit()
|
||||
return True
|
||||
except Exception as e:
|
||||
logger.error("Exception:%s", e)
|
||||
logger.error(traceback.format_exc())
|
||||
logger.error("key:%s value:%s", key, value)
|
||||
return False
|
||||
|
||||
@staticmethod
|
||||
def scheduler_function():
|
||||
try:
|
||||
LogicLinkkfYommi.scheduler_function()
|
||||
except Exception as e:
|
||||
logger.error("Exception:%s", e)
|
||||
logger.error(traceback.format_exc())
|
||||
|
||||
# 기본 구조 End
|
||||
##################################################################
|
||||
Reference in New Issue
Block a user