#!/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)