123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265 |
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- # File : service.py.py
- # Author: DaShenHan&道长-----先苦后甜,任凭晚风拂柳颜------
- # Date : 2022/9/6
- from base.R import copy_utils
- from models.storage import Storage
- from models.ruleclass import RuleClass
- from models.vipParse import VipParse
- from utils.cfg import cfg
- from base.database import db
- from datetime import datetime, timedelta
- class storage_service(object):
- @staticmethod
- def query_all():
- # 查询所有
- res = Storage.query.all()
- return copy_utils.obj_to_list(res)
- def __init__(self):
- conf_list = ['LIVE_URL', 'USE_PY', 'FORCE_UP', 'JS_MODE', 'JS0_DISABLE', 'JS0_PASSWORD', 'PLAY_URL', 'PLAY_DISABLE',
- 'LAZYPARSE_MODE', 'WALL_PAPER_ENABLE',
- 'WALL_PAPER', 'UNAME', 'PWD', 'LIVE_MODE', 'CATE_EXCLUDE', 'TAB_EXCLUDE', 'SEARCH_TIMEOUT',
- 'SEARCH_LIMIT', 'MULTI_MODE', 'XR_MODE', 'JS_PROXY', 'UPDATE_PROXY', 'ENV', 'ALI_TOKEN', 'OCR_API',
- 'SPECIAL', 'SPIDER_JAR','ZB_PLAYER', 'EXT_FUNC', 'JS_MAX_LENGTH']
- for conf in conf_list:
- if not self.hasItem(conf):
- print(f'开始初始化{conf}')
- self.setItem(conf, cfg.get(conf))
- @classmethod
- def getStoreConf(self):
- # MAX_CONTENT_LENGTH 最大上传和端口ip一样是顶级配置,无法外部修改的
- conf_list = ['LIVE_URL', 'LIVE_MODE','ZB_PLAYER', 'PLAY_URL', 'PID_URL', 'USE_PY', 'FORCE_UP','JS_MODE', 'JS0_DISABLE', 'JS0_PASSWORD',
- 'PLAY_DISABLE', 'LAZYPARSE_MODE', 'WALL_PAPER_ENABLE',
- 'WALL_PAPER', 'UNAME', 'PWD', 'CATE_EXCLUDE', 'TAB_EXCLUDE', 'SEARCH_TIMEOUT', 'SEARCH_LIMIT',
- 'MULTI_MODE', 'XR_MODE', 'JS_PROXY', 'UPDATE_PROXY', 'ENV', 'SPECIAL', 'SPIDER_JAR',
- 'EXT_FUNC', 'JS_MAX_LENGTH', 'ALI_TOKEN', 'OCR_API']
- conf_name_list = ['直播地址', '直播模式', '播放器','远程地址', '进程管理链接', '启用py源','强制下载', 'js模式', '禁用js0',
- 'js0密码', '禁用免嗅', '免嗅模式', '启用壁纸', '壁纸链接', '管理账号',
- '管理密码', '分类排除', '线路排除', '聚搜超时', '搜索条数', '多源模式', '仙人模式', '源代理',
- '升级代理', '环境变量', '优选源', '挂载JAR', '辅助规则', '源体积', '阿里tk', 'OCR接口']
- conf_lists = []
- for i in range(len(conf_list)):
- conf = conf_list[i]
- conf_lists.append({
- 'key': conf,
- 'value': self.getItem(conf),
- 'name': conf_name_list[i]
- })
- return conf_lists
- @classmethod
- def getStoreConfDict(self):
- store_conf = self.getStoreConf()
- store_conf_dict = {}
- for stc in store_conf:
- store_conf_dict[stc['key']] = stc['value']
- return store_conf_dict
- @classmethod
- def getItem(self, key, value=''):
- res = Storage.getItem(key, value)
- if str(res) == '0' or str(res) == 'false' or str(res) == 'False':
- return 0
- return res
- @classmethod
- def hasItem(self, key):
- return Storage.hasItem(key)
- @classmethod
- def setItem(self, key, value):
- return Storage.setItem(key, value)
- @classmethod
- def clearItem(self, key):
- return Storage.clearItem(key)
- class rules_service(object):
- @staticmethod
- def query_all():
- # 查询所有
- res = RuleClass.query.order_by(RuleClass.order.asc(), RuleClass.write_date.desc()).all()
- # print(res)
- # res = RuleClass.query.order_by(RuleClass.write_date.asc()).all()
- return copy_utils.obj_to_list(res)
- @classmethod
- def hasItem(self, key):
- return RuleClass.hasItem(key)
- def getState(self, key):
- res = RuleClass.query.filter(RuleClass.name == key).first()
- if not res:
- return 1
- # print(res)
- state = res.state
- if state is None:
- state = 1
- return state or 0
- def setState(self, key, state=0):
- res = RuleClass.query.filter(RuleClass.name == key).first()
- if res:
- res.state = state
- db.session.add(res)
- else:
- res = RuleClass(name=key, state=state)
- db.session.add(res)
- db.session.flush() # 获取id
- try:
- db.session.commit()
- return res.id
- except Exception as e:
- print(f'发生了错误:{e}')
- return None
- def setOrder(self, key, order=0):
- res = RuleClass.query.filter(RuleClass.name == key).first()
- if res:
- res.order = order
- # print(f'{res.name}设置order为:{order}')
- if res.order == order:
- res.write_date = datetime.now()
- # res.write_date = res.write_date + timedelta(hours=2)
- db.session.add(res)
- else:
- res = RuleClass(name=key, order=order)
- db.session.add(res)
- db.session.flush() # 获取id
- try:
- db.session.commit()
- return res.id
- except Exception as e:
- print(f'发生了错误:{e}')
- return None
- @staticmethod
- def getHideRules():
- res = RuleClass.query.filter(RuleClass.state == 0).all()
- return copy_utils.obj_to_list(res)
- class parse_service(object):
- @staticmethod
- def query_all():
- # 查询所有
- res = VipParse.query.order_by(VipParse.order.asc(), VipParse.write_date.desc()).all()
- # print(res)
- # res = RuleClass.query.order_by(RuleClass.write_date.asc()).all()
- return copy_utils.obj_to_list(res)
- @classmethod
- def hasItem(self, key):
- return VipParse.hasItem(key)
- def getState(self, key):
- res = VipParse.query.filter(VipParse.url == key).first()
- if not res:
- return 1
- # print(res)
- state = res.state
- if state is None:
- state = 1
- return state or 0
- def setState(self, key, state=0):
- res = VipParse.query.filter(VipParse.url == key).first()
- if res:
- res.state = state
- db.session.add(res)
- else:
- res = VipParse(url=key, state=state)
- db.session.add(res)
- db.session.flush() # 获取id
- try:
- db.session.commit()
- return res.id
- except Exception as e:
- print(f'发生了错误:{e}')
- return None
- def setOrder(self, key, order=0):
- res = VipParse.query.filter(VipParse.url == key).first()
- if res:
- res.order = order
- # print(f'{res.name}设置order为:{order}')
- if res.order == order:
- res.write_date = datetime.now()
- # res.write_date = res.write_date + timedelta(hours=2)
- db.session.add(res)
- else:
- res = VipParse(url=key, order=order)
- db.session.add(res)
- db.session.flush() # 获取id
- try:
- db.session.commit()
- return res.id
- except Exception as e:
- print(f'发生了错误:{e}')
- return None
- def setEverything(self, key, name, state, typeno, order, ext, header):
- res = VipParse.query.filter(VipParse.url == key).first()
- if res:
- res.name = name
- res.state = state
- res.type = typeno
- res.order = order
- res.ext = ext
- res.header = header
- res.write_date = datetime.now()
- db.session.add(res)
- else:
- res = VipParse(name=name, url=key, state=state, type=typeno, order=order, ext=ext, header=header)
- db.session.add(res)
- db.session.flush() # 获取id
- try:
- db.session.commit()
- return res.id
- except Exception as e:
- print(f'发生了错误:{e}')
- return None
- def saveData(self, obj):
- """
- db.session.add_all([]) 可以一次性保存多条数据,但是这里用不到,因为涉及修改和新增一起的
- :param obj:
- :return:
- """
- # res = VipParse.query.filter(VipParse.url == obj['url']).first()
- res = VipParse.query.filter_by(url=obj['url']).first()
- if res:
- # res.update(obj)
- res.name = obj['name']
- res.state = obj['state']
- res.type = obj['type']
- res.order = obj['order']
- res.ext = obj['ext']
- res.header = obj['header']
- db.session.add(res)
- else:
- res = VipParse(**obj)
- db.session.add(res)
- db.session.flush() # 获取id
- try:
- db.session.commit()
- return res.id
- except Exception as e:
- print(f'发生了错误:{e}')
- return None
- @staticmethod
- def getHideRules():
- res = VipParse.query.filter(VipParse.state == 0).all()
- return copy_utils.obj_to_list(res)
|