提交 f06d4c39 编写于 作者: H hjdhnx

更了一堆东西等会儿再升版本

上级 e7663ce2
......@@ -20,6 +20,8 @@ SQLALCHEMY_ECHO = False # 打印sql语句
JSON_AS_ASCII = False # jsonify返回的中文正常显示
PLAY_URL = 'http://cms.nokia.press' # 匹配远程解析服务器链接 远程接口主页地址,后面不能有/
PLAY_URL = PLAY_URL.rstrip('/')
PID_URL = '' # 自定义的9001进程管理快捷方式
PID_URL = PID_URL.rstrip('/')
HTTP_HOST = '0.0.0.0'
HTTP_PORT = '5705'
PLAY_DISABLE = False # 全局禁用播放解析
......
......@@ -3,7 +3,8 @@
# 可以使用Python的 # 单行注释
{
# "spider": "{{ host }}/files/custom_spider.jar",
"spider": "{{ host }}/files/custom_spider.jar",
# "lives":[{"group":"redirect","channels":[{"name":"我的直播","urls":["proxy://do=live&type=txt&ext={{host}}/txt/直播.txt"]}]}],
"sites":[
{
"key":"t4",
......@@ -14,7 +15,7 @@
"searchable":1,
"quickSearch":1,
"filterable":0
},
},
{"key":"csp_SP360","name":"🎾360(SP)","type":3,"api":"csp_SP360","searchable":1,"quickSearch":1,"filterable":1},
{"key":"csp_Kuaikan","name":"👀快看(SP)","type":3,"api":"csp_Kuaikan","searchable":1,"quickSearch":1,"filterable":1},
{"key":"csp_Kunyu77","name":"👒七七(SP)","type":3,"api":"csp_Kunyu77","searchable":1,"quickSearch":1,"filterable":1},
......@@ -24,27 +25,11 @@
{"key":"csp_Nbys","name":"📺泥巴(SP需翻墙)","type":3,"api":"csp_Nbys","searchable":1,"quickSearch":1,"filterable":1},
{"key":"csp_Cokemv","name":"🚗Cokemv(SP)","type":3,"api":"csp_Cokemv","searchable":1,"quickSearch":1,"filterable":1},
{"key":"csp_BBB","name":"🅱️哔哩套餐","type":3,"api":"csp_BBB","searchable":0,"quickSearch":0,"filterable":1},
{"key":"csp_biubiu_骚火电影","name":"🔥骚火电影(XB)","type":3,"api":"csp_XBiubiu","searchable":1,"quickSearch":1,"filterable":0,"ext":"clan://TVBox/MaooXB/shdy.json"},
{"key":"csp_biubiu_厂长资源-蓝光","name":"💎厂长资源(XB)","type":3,"api":"csp_XBiubiu","searchable":0,"quickSearch":0,"filterable":0,"ext":"clan://TVBox/MaooXB/czzy2.json"},
{"key":"csp_biubiu_哔嘀影视","name":"📮哔嘀影视(XB)","type":3,"api":"csp_XBiubiu","searchable":1,"quickSearch":1,"filterable":0,"ext":"clan://TVBox/MaooXB/bdys.json"},
{"key":"csp_xpath_naifeiorg","name":"👑奈飞中文(XPF)","type":3,"api":"csp_XPathMacFilter","searchable":1,"quickSearch":1,"filterable":1,"ext":"clan://TVBox/MaooXP/naifeiorg.json"},
{"key":"csp_biubiu_奈菲影院","name":"🌈奈菲影院(XB)","type":3,"api":"csp_XBiubiu","searchable":1,"quickSearch":1,"filterable":0,"ext":"clan://TVBox/MaooXB/nfyy.json"},
{"key":"csp_biubiu_dunkfun","name":"🍰dunkfun(XB)","type":3,"api":"csp_XBiubiu","searchable":1,"quickSearch":1,"filterable":0,"ext":"clan://TVBox/MaooXB/dunkfun.json"},
{"key":"csp_biubiu_奈落影院","name":"💧奈落影院(XB)","type":3,"api":"csp_XBiubiu","searchable":1,"quickSearch":1,"filterable":0,"ext":"clan://TVBox/MaooXB/nlyy.json"},
{"key":"csp_xpath_jbb","name":"🎁剧白白(XPF)","type":3,"api":"csp_XPathMacFilter","searchable":1,"quickSearch":1,"filterable":1,"ext":"clan://TVBox/MaooXP/jubaibai.json"},
{"key":"csp_biubiu_天空资源","name":"❄️天空资源(XB)","type":3,"api":"csp_XBiubiu","searchable":1,"quickSearch":1,"filterable":0,"ext":"clan://TVBox/MaooXB/tkzy.json"},
{"key":"csp_xpath_dandanzan10","name":"☀️蛋蛋赞(电影)(XPF)","type":3,"api":"csp_XPathFilter","searchable":0,"quickSearch":0,"filterable":1,"ext":"clan://TVBox/MaooXP/dandanzan10.json"},
{"key":"csp_xpath_pianku","name":"💩片库(XP)","type":3,"api":"csp_XPath","searchable":1,"quickSearch":1,"filterable":0,"ext":"clan://TVBox/tvbox/MaooXP/pianku.json"},
{"key":"csp_biubiu_斗鱼","name":"🐬斗鱼(XB)","type":3,"api":"csp_XBiubiu","searchable":1,"quickSearch":1,"filterable":0,"ext":"clan://TVBox/MaooXB/douyu.json"},
{"key":"csp_xpath_saohuotv","name":"🔥骚火电影(XP)","type":3,"api":"csp_XPath","searchable":1,"quickSearch":1,"filterable":0,"ext":"clan://TVBox/MaooXP/saohuotv2.json"},
{"key":"csp_xpath_huya","name":"🐯虎牙(XPF)","type":3,"api":"csp_XPathMacFilter","searchable":1,"quickSearch":1,"filterable":1,"ext":"clan://TVBox/MaooXP/huya2.json"},
{"key":"csp_xpath_kuqimv","name":"🎤酷奇MV(XP)","type":3,"api":"csp_XPath","searchable":0,"quickSearch":0,"filterable":0,"ext":"clan://TVBox/MaooXP/kuqimv.json"},
{"key":"csp_Auete","name":"🐼Auete(SP)","type":3,"api":"csp_Auete","searchable":1,"quickSearch":1,"filterable":1},
{"key":"ASMR","name":"🈲ASMR(优)","type":1,"api":"http://www.asmr19.in/api.php/provide/vod/","searchable":1,"quickSearch":1},
{"key":"csp_DY1990","name":"📀1990电影(SP)","type":3,"api":"csp_DY1990","searchable":1,"quickSearch":1,"filterable":1},
{"key":"if101资源","name":"✈️if101(海外推荐)","type":0,"api":"https://demo.if101.tv/api.php/provide/vod/at/xml","searchable":1,"quickSearch":0,"filterable":0},
{"key":"csp_LiteApple","name":"🍎小苹果(SP)","type":3,"api":"csp_LiteApple","searchable":1,"quickSearch":1,"filterable": 1},
{"key":"csp_biubiu_hdmoli","name":"🚀hdmoli(XB)","type":3,"api":"csp_XBiubiu","searchable":1,"quickSearch":1,"filterable":0,"ext":"hclan://TVBox/MaooXB/hdmoli.json"},
{"key":"csp_GitCafe","name":"📜小纸条","type":3,"api":"csp_GitCafe","searchable":1,"quickSearch":1,"filterable":0},
{"key":"csp_AliPanSou","name":"🐱喵狸盘搜(只支持搜索)","type":3,"api":"csp_AliPanSou","searchable":1,"quickSearch":1,"filterable":0},
{"key":"push_agent","name":"🍭推送(阿里)","type":3,"api":"csp_PushAgent","searchable":0,"quickSearch":0,"filterable":0},
......@@ -257,4 +242,4 @@
{"key":"嘛哩嘛哩","name":"嘛哩嘛哩(聚)","type":1,"api":"https://malimali3.com/api.php/provide/vod/","searchable":1,"quickSearch":1,"categories":["国产动漫","日韩动漫","欧美动漫","港台动漫"]},
{"key":"海外电影","name":"海外电影(聚)","type":1,"api":"https://www.200121.com/api.php/provide/vod/","searchable":1,"quickSearch":1}
]
}
}
\ No newline at end of file
# 这是一个自定义的额外用户爬虫配置
# 自动附加到config/mode 对应的在线源里
# 可以使用Python的 # 单行注释
{
"sites":[
{
"key":"t4",
"name":"T4",
"type":4,
"api":"https://t4.secan.icu/vod?sites=all&ali_token=xxxxxxxxx&timeout=10",
# "api":"http://[ip]:[port]/vod?sites=all&ali_token=3xx9cfxxxx509bxx&timeout=5",
"searchable":1,
"quickSearch":1,
"filterable":0
}
],
"spider": "{{ host }}/files/custom_spider.jar",
"lives":[{"group":"redirect","channels":[{"name":"我的直播","urls":["proxy://do=live&type=txt&ext=aHR0cHM6Ly9naXRjb2RlLm5ldC9xcV8yNjg5ODIzMS9UVkJveC8tL3Jhdy9tYWluL2xpdmUvemIudHh0"]}]}],
}
\ No newline at end of file
无法预览此类型文件
此差异已折叠。
......@@ -8,10 +8,9 @@ import os
from flask import Blueprint,request,render_template,jsonify,make_response
from controllers.service import storage_service
from base.R import R
from utils.web import verfy_token
from utils.update import getLocalVer,getOnlineVer,download_new_version,download_lives,copy_to_update
from utils import parser
from utils.web import getParmas
from utils.web import getParmas,verfy_token
from js.rules import getRules
from utils.parser import runJScode
from werkzeug.utils import secure_filename
......
......@@ -40,13 +40,17 @@ def favicon():
@home.route('/index')
def index():
sup_port = cfg.get('SUP_PORT', 9001)
lsg = storage_service()
pid_url = lsg.getItem('PID_URL')
manager0 = ':'.join(getHost(0).split(':')[0:2])
manager1 = ':'.join(getHost(1).split(':')[0:2])
manager2 = ':'.join(getHost(2).split(':')[0:2]).replace('https','http')
manager2 = pid_url or ':'.join(getHost(2).split(':')[0:2]).replace('https','http')
if sup_port:
manager0 += f':{sup_port}'
manager1 += f':{sup_port}'
manager2 += f':{sup_port}'
if not pid_url:
manager2 += f':{sup_port}'
# print(manager2)
ver = getLocalVer()
return render_template('index.html',ver=ver,getHost=getHost,manager0=manager0,manager1=manager1,manager2=manager2,is_linux=is_linux())
......@@ -140,7 +144,7 @@ def custom_static(filename):
@home.route('/lives')
def get_lives():
live_path = 'js/直播.txt'
live_path = 'base/直播.txt'
if not os.path.exists(live_path):
with open(live_path,mode='w+',encoding='utf-8') as f:
f.write('')
......@@ -184,6 +188,7 @@ def config_render(mode):
# print(type(new_conf),new_conf)
host = getHost(mode)
customConfig = getCustonDict(host)
# print(customConfig)
jxs = getJxs()
lsg = storage_service()
use_py = lsg.getItem('USE_PY')
......@@ -223,18 +228,18 @@ def config_gen():
set_area = render_template('config.txt',pys=pys,rules=rules,alists=alists,alists_str=alists_str,live_url=get_live_url(new_conf,1),mode=1,host=getHost(1),jxs=jxs)
set_online = render_template('config.txt',pys=pys,rules=rules,alists=alists,alists_str=alists_str,live_url=get_live_url(new_conf,2),mode=1,host=getHost(2),jxs=jxs)
with open('txt/pycms0.json','w+',encoding='utf-8') as f:
customConfig = getCustonDict(0)
customConfig = getCustonDict(getHost(0))
set_dict = custom_merge(parseText(set_local), customConfig)
# set_dict = json.loads(set_local)
f.write(json.dumps(set_dict,ensure_ascii=False,indent=4))
with open('txt/pycms1.json','w+',encoding='utf-8') as f:
customConfig = getCustonDict(1)
customConfig = getCustonDict(getHost(1))
set_dict = custom_merge(parseText(set_area), customConfig)
# set_dict = json.loads(set_area)
f.write(json.dumps(set_dict,ensure_ascii=False,indent=4))
with open('txt/pycms2.json','w+',encoding='utf-8') as f:
customConfig = getCustonDict(2)
customConfig = getCustonDict(getHost(2))
set_dict = custom_merge(parseText(set_online), customConfig)
# set_dict = json.loads(set_online)
f.write(json.dumps(set_dict,ensure_ascii=False,indent=4))
......
......@@ -5,7 +5,7 @@
# Date : 2022/9/14
from flask import Blueprint,request,render_template,jsonify,make_response,redirect
from utils.web import getParmas,get_interval,layuiBack
from utils.web import getParmas,get_interval,layuiBack,verfy_token
from utils.cfg import cfg
from controllers.service import storage_service
from utils.system import getHost
......@@ -22,6 +22,8 @@ def hello(): # put application's code here
@layui.route('/index')
def layui_index(): # put application's code here
# return render_template('layui_index.html')
if not verfy_token():
return render_template('login.html')
return render_template('layui_list.html')
@layui.route('/api/list')
......
......@@ -27,10 +27,10 @@ class storage_service(object):
@classmethod
def getStoreConf(self):
# MAX_CONTENT_LENGTH 最大上传和端口ip一样是顶级配置,无法外部修改的
conf_list = ['LIVE_URL', 'USE_PY', 'PLAY_URL', 'PLAY_DISABLE', 'LAZYPARSE_MODE', 'WALL_PAPER_ENABLE',
'WALL_PAPER', 'UNAME', 'PWD', 'LIVE_MODE', 'CATE_EXCLUDE', 'TAB_EXCLUDE']
conf_name_list = ['直播地址', '启用py源', '远程地址', '禁用免嗅', '免嗅模式', '启用壁纸', '壁纸链接', '管理账号',
'管理密码', '直播模式', '分类排除', '线路排除']
conf_list = ['LIVE_URL', 'LIVE_MODE','PLAY_URL', 'PID_URL','USE_PY', 'PLAY_DISABLE', 'LAZYPARSE_MODE', 'WALL_PAPER_ENABLE',
'WALL_PAPER', 'UNAME', 'PWD', 'CATE_EXCLUDE', 'TAB_EXCLUDE']
conf_name_list = ['直播地址', '直播模式','远程地址', '进程管理链接','启用py源', '禁用免嗅', '免嗅模式', '启用壁纸', '壁纸链接', '管理账号',
'管理密码', '分类排除', '线路排除']
conf_lists = []
for i in range(len(conf_list)):
conf = conf_list[i]
......
......@@ -39,13 +39,20 @@
<img src="https://img.shields.io/badge/install support-termux|windows|ubuntu|python3.6~python3.8-yellowgreen" />
</a>
[搭建教程](./安卓本地搭建说明.md) | [install_help](./安卓本地搭建说明.md)
[搭建教程](./安卓本地搭建说明.md) | [install_help](./安卓本地搭建说明.md) |[goorm](./道长乱说.md)
[dr项目QQ官群](https://qm.qq.com/cgi-bin/qm/qr?k=H2KwcXrMdiR5M2blHR5gjZzPfN_S3N_C&jump_from=webapi)
[参考T4](https://github.com/sec-an/TV_Spider/blob/main/spider/sp360.py)
[golang最好的js引擎-otto](https://github.com/robertkrimen/otto)
[dockerfile教程](https://blog.csdn.net/qq_46158060/article/details/125718218)
[获取本地设备信息](https://blog.csdn.net/cui_yonghua/article/details/125508991)
[获取本地设备信息](https://m.jb51.net/article/140716.htm)
###### 2022/09/15
- [X] 1.修复生成配置文件中静态文件链接对应的配置文本爬虫地址渲染异常问题
- [X] 2.删除custom里的xb、xp源
- [X] 3.未来功能页面设置为管理员登录后可见
- [X] 4.修复局域网ip可能会获取成网关地址问题
- [X] 5.设置中心增加自定义进程管理地址(可用于goorm等设备绑定快捷方式)
- [X] 6.直播文件目录迁移
###### 2022/09/14
- [X] 1.升级至3.6.2,增加了一些解析
- [X] 2.升级至3.6.5,修复菜狗部分源解析失败问题(url参数有+号被自动变空格导致的)
......
......@@ -12,7 +12,7 @@
input.conf{
margin-bottom: 10px;
width: 240px;
width: 220px;
}
label{
font-size: 12px;
......
此差异已折叠。
此差异已折叠。
此差异已折叠。
......@@ -25,7 +25,8 @@ def get_host_ip(): # 获取局域网ip
netcard_info,ips = get_wlan_info()
# print(netcard_info)
real_ips = list(filter(lambda x: x and x != '127.0.0.1', ips))
jyw = list(filter(lambda x: str(x).startswith('192.168'), real_ips))
jyw = list(filter(lambda x: str(x).startswith('192.168') and not str(x).endswith('.1'), real_ips))
# print(jyw)
return real_ips[-1] if len(jyw) < 1 else jyw[0]
def getHost(mode=0,port=None):
......
......@@ -177,7 +177,7 @@ def download_new_version():
def download_lives(live_url:str):
t1 = getTime()
base_path = os.path.dirname(os.path.abspath(os.path.dirname(__file__))) # 上级目录
live_path = os.path.join(base_path, f'js/直播.txt')
live_path = os.path.join(base_path, f'base/直播.txt')
logger.info(f'尝试同步{live_url}远程内容到{live_path}')
try:
r = requests.get(live_url,headers=headers,timeout=3)
......
#### 胡言乱语篇
##### goorm搭建方法(亲测)
```shell
passwd root
改完密码通过xshell工具ssh连接容器。进去后
mkdir -p /root/sd/pywork/
cd /root/sd/pywork/
apt install lrzsz -y
rz
上传drpy的压缩包
然后改系统语言为中文
locale
locale -a
echo 'export LANG="C.UTF-8"' >> /etc/profile
source /etc/profile
unzip 压缩包
pip install --upgrade pip
pip install -r requirements.txt
. ./app.sh 0
自己去搭建frp穿透访问国内不用开魔法会快很多
然后控制台界面把5705和9001端口映射出来就可以访问了
后面升级可以考虑新增一个9001自定义链接
填了就走自定义的,没有就正常获取远程的。
下方是官方白嫖地址:
https://ide.goorm.io/my/dashboard
穿透的地址长这样:
http://drpy.frp.muddery.com/index
```
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册