704d105bb0
ff_linkkf
138 lines
4.2 KiB
Python
138 lines
4.2 KiB
Python
# -*- coding: utf-8 -*-
|
|
import os
|
|
import traceback
|
|
|
|
from framework import F, Job, db, get_logger, path_data, scheduler
|
|
from support import SupportFile
|
|
|
|
from .logic_linkkf import LogicLinkkf
|
|
from .logic_queue import LogicQueue
|
|
from .model import ModelLinkkf, ModelSetting
|
|
|
|
|
|
package_name = __name__.split(".")[0]
|
|
logger = get_logger(package_name)
|
|
|
|
|
|
class Logic(object):
|
|
db_default = {
|
|
"linkkf_url": "https://linkkf.tv",
|
|
"download_path": os.path.join(path_data, "linkkf"),
|
|
"linkkf_auto_make_folder": "True",
|
|
"linkkf_auto_make_season_folder": "True",
|
|
"linkkf_finished_insert": "[완결]",
|
|
"include_date": "False",
|
|
"date_option": "0",
|
|
"auto_make_folder": "True",
|
|
"max_ffmpeg_process_count": "4",
|
|
"auto_interval": "* 20 * * *",
|
|
"auto_start": "False",
|
|
"whitelist_program": "",
|
|
}
|
|
|
|
@staticmethod
|
|
def db_init():
|
|
try:
|
|
with F.app.app_context():
|
|
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()
|
|
Logic.db_migration()
|
|
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)
|
|
Logic.db_init()
|
|
|
|
if ModelSetting.get("auto_start") == "True":
|
|
Logic.scheduler_start()
|
|
|
|
from .plugin import plugin_info
|
|
|
|
SupportFile.write_json(
|
|
os.path.join(os.path.dirname(__file__), "info.json"),
|
|
plugin_info,
|
|
)
|
|
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 db_migration():
|
|
logger.debug("db_migration::=======================")
|
|
try:
|
|
migrated = ModelLinkkf.migrate_existing_rows()
|
|
logger.debug("ModelLinkkf migrate_existing_rows: %s", migrated)
|
|
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,
|
|
"linkkf 다운로드",
|
|
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:
|
|
LogicLinkkf.scheduler_function()
|
|
except Exception as e:
|
|
logger.error("Exception:%s", e)
|
|
logger.error(traceback.format_exc())
|