mirror of
https://github.com/letian1650/N3RD.git
synced 2025-01-24 19:45:01 +08:00
264 lines
8.9 KiB
Python
264 lines
8.9 KiB
Python
#!/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', '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', 'EXT_FUNC']
|
|
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', 'PLAY_URL', 'PID_URL', 'USE_PY', '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', '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)
|