更新
This commit is contained in:
@@ -69,8 +69,9 @@ jobs:
|
|||||||
pwd
|
pwd
|
||||||
cd tools/
|
cd tools/
|
||||||
pip install demjson3 pycryptodome requests --break-system-packages
|
pip install demjson3 pycryptodome requests --break-system-packages
|
||||||
python tvbox.py http://www.饭太硬.art/tv ty.json dec
|
# python tvbox.py http://www.饭太硬.art/tv ty.json dec
|
||||||
python fty.py ty.json
|
# python fty.py ty.json
|
||||||
|
python fty.py
|
||||||
\cp -pdr tvbox_cleaned.json ../fty.json
|
\cp -pdr tvbox_cleaned.json ../fty.json
|
||||||
\cp -pdr fan.txt ../jar/fan.txt
|
\cp -pdr fan.txt ../jar/fan.txt
|
||||||
git clone --depth=1 --recursive https://github.com/fantaiying7/EXT.git
|
git clone --depth=1 --recursive https://github.com/fantaiying7/EXT.git
|
||||||
|
|||||||
+72
-26
@@ -73,21 +73,52 @@ class TVBox本地构建器:
|
|||||||
return url
|
return url
|
||||||
|
|
||||||
def 下载文件(self, url, 保存路径):
|
def 下载文件(self, url, 保存路径):
|
||||||
"""下载文件"""
|
"""下载文件,支持大小写文件名重试"""
|
||||||
try:
|
# 替换代理域名为直接访问
|
||||||
# 替换代理域名为直接访问
|
url = self.替换代理域名(url)
|
||||||
url = self.替换代理域名(url)
|
|
||||||
|
|
||||||
print(f" 下载: {url}")
|
# 解析 URL 获取文件名
|
||||||
resp = self.session.get(url, timeout=30, allow_redirects=True)
|
parsed = urlparse(url)
|
||||||
resp.raise_for_status()
|
path = parsed.path
|
||||||
with open(保存路径, 'wb') as f:
|
文件名 = Path(path).name
|
||||||
f.write(resp.content)
|
目录 = Path(path).parent
|
||||||
print(f" ✓ 保存到: {保存路径}")
|
保存目录 = Path(保存路径).parent
|
||||||
return True
|
|
||||||
except Exception as e:
|
# 尝试的文件名列表:原始 -> 大写 -> 小写
|
||||||
print(f" ✗ 下载失败: {e}")
|
尝试列表 = [文件名]
|
||||||
return False
|
|
||||||
|
# 如果文件名有扩展名,尝试大小写变体
|
||||||
|
if '.' in 文件名:
|
||||||
|
名称部分, 扩展名 = 文件名.rsplit('.', 1)
|
||||||
|
大写文件名 = f"{名称部分.upper()}.{扩展名}"
|
||||||
|
小写文件名 = f"{名称部分.lower()}.{扩展名}"
|
||||||
|
|
||||||
|
if 大写文件名 != 文件名:
|
||||||
|
尝试列表.append(大写文件名)
|
||||||
|
if 小写文件名 != 文件名 and 小写文件名 != 大写文件名:
|
||||||
|
尝试列表.append(小写文件名)
|
||||||
|
|
||||||
|
for 尝试文件名 in 尝试列表:
|
||||||
|
# 构建尝试的 URL
|
||||||
|
尝试路径 = str(目录 / 尝试文件名)
|
||||||
|
尝试url = parsed._replace(path=尝试路径).geturl()
|
||||||
|
# 用实际文件名构建保存路径
|
||||||
|
实际保存路径 = 保存目录 / 尝试文件名
|
||||||
|
|
||||||
|
try:
|
||||||
|
print(f" 下载: {尝试url}")
|
||||||
|
resp = self.session.get(尝试url, timeout=30, allow_redirects=True)
|
||||||
|
resp.raise_for_status()
|
||||||
|
with open(实际保存路径, 'wb') as f:
|
||||||
|
f.write(resp.content)
|
||||||
|
print(f" ✓ 保存到: {实际保存路径}")
|
||||||
|
# 返回实际下载的文件名(用于更新配置)
|
||||||
|
return True, 尝试文件名
|
||||||
|
except Exception as e:
|
||||||
|
print(f" ✗ 下载失败: {e}")
|
||||||
|
continue
|
||||||
|
|
||||||
|
return False, None
|
||||||
|
|
||||||
def 下载spider(self):
|
def 下载spider(self):
|
||||||
"""下载 spider 文件"""
|
"""下载 spider 文件"""
|
||||||
@@ -101,12 +132,22 @@ class TVBox本地构建器:
|
|||||||
spider_path = self.输出目录 / 'spider.jar'
|
spider_path = self.输出目录 / 'spider.jar'
|
||||||
|
|
||||||
print(f"\n=== 下载 Spider ===")
|
print(f"\n=== 下载 Spider ===")
|
||||||
if self.下载文件(url, spider_path):
|
url = self.替换代理域名(url)
|
||||||
|
|
||||||
|
try:
|
||||||
|
print(f" 下载: {url}")
|
||||||
|
resp = self.session.get(url, timeout=30, allow_redirects=True)
|
||||||
|
resp.raise_for_status()
|
||||||
|
with open(spider_path, 'wb') as f:
|
||||||
|
f.write(resp.content)
|
||||||
|
print(f" ✓ 保存到: {spider_path}")
|
||||||
md5 = self.计算MD5(spider_path)
|
md5 = self.计算MD5(spider_path)
|
||||||
print(f" MD5: {md5}")
|
print(f" MD5: {md5}")
|
||||||
self.数据['spider'] = f"./spider.jar;md5;{md5}"
|
self.数据['spider'] = f"./spider.jar;md5;{md5}"
|
||||||
return True
|
return True
|
||||||
return False
|
except Exception as e:
|
||||||
|
print(f" ✗ 下载失败: {e}")
|
||||||
|
return False
|
||||||
|
|
||||||
def 是URL(self, 路径):
|
def 是URL(self, 路径):
|
||||||
"""判断是否为URL"""
|
"""判断是否为URL"""
|
||||||
@@ -139,13 +180,15 @@ class TVBox本地构建器:
|
|||||||
# 根据扩展名决定保存目录
|
# 根据扩展名决定保存目录
|
||||||
if 文件名.endswith('.json'):
|
if 文件名.endswith('.json'):
|
||||||
保存路径 = self.输出目录 / 'json' / 文件名
|
保存路径 = self.输出目录 / 'json' / 文件名
|
||||||
if self.下载文件(ext, 保存路径):
|
成功, 实际文件名 = self.下载文件(ext, 保存路径)
|
||||||
site['ext'] = f"./json/{文件名}"
|
if 成功:
|
||||||
|
site['ext'] = f"./json/{实际文件名}"
|
||||||
下载计数 += 1
|
下载计数 += 1
|
||||||
elif 文件名.endswith('.js'):
|
elif 文件名.endswith('.js'):
|
||||||
保存路径 = self.输出目录 / 'js' / 文件名
|
保存路径 = self.输出目录 / 'js' / 文件名
|
||||||
if self.下载文件(ext, 保存路径):
|
成功, 实际文件名 = self.下载文件(ext, 保存路径)
|
||||||
site['ext'] = f"./js/{文件名}"
|
if 成功:
|
||||||
|
site['ext'] = f"./js/{实际文件名}"
|
||||||
下载计数 += 1
|
下载计数 += 1
|
||||||
|
|
||||||
# 处理字典类型的 ext
|
# 处理字典类型的 ext
|
||||||
@@ -155,8 +198,9 @@ class TVBox本地构建器:
|
|||||||
文件名 = self.提取文件名(value)
|
文件名 = self.提取文件名(value)
|
||||||
if 文件名.endswith('.json'):
|
if 文件名.endswith('.json'):
|
||||||
保存路径 = self.输出目录 / 'json' / 文件名
|
保存路径 = self.输出目录 / 'json' / 文件名
|
||||||
if self.下载文件(value, 保存路径):
|
成功, 实际文件名 = self.下载文件(value, 保存路径)
|
||||||
ext[key] = f"./json/{文件名}"
|
if 成功:
|
||||||
|
ext[key] = f"./json/{实际文件名}"
|
||||||
下载计数 += 1
|
下载计数 += 1
|
||||||
|
|
||||||
print(f" 共下载 {下载计数} 个 ext 文件")
|
print(f" 共下载 {下载计数} 个 ext 文件")
|
||||||
@@ -175,8 +219,9 @@ class TVBox本地构建器:
|
|||||||
文件名 = self.提取文件名(api)
|
文件名 = self.提取文件名(api)
|
||||||
if 文件名.endswith('.py'):
|
if 文件名.endswith('.py'):
|
||||||
保存路径 = self.输出目录 / 'py' / 文件名
|
保存路径 = self.输出目录 / 'py' / 文件名
|
||||||
if self.下载文件(api, 保存路径):
|
成功, 实际文件名 = self.下载文件(api, 保存路径)
|
||||||
site['api'] = f"./py/{文件名}"
|
if 成功:
|
||||||
|
site['api'] = f"./py/{实际文件名}"
|
||||||
下载计数 += 1
|
下载计数 += 1
|
||||||
elif 文件名.endswith('.js'):
|
elif 文件名.endswith('.js'):
|
||||||
# JS 文件不下载,保持原链接
|
# JS 文件不下载,保持原链接
|
||||||
@@ -195,8 +240,9 @@ class TVBox本地构建器:
|
|||||||
if isinstance(url, str) and self.是URL(url):
|
if isinstance(url, str) and self.是URL(url):
|
||||||
文件名 = self.提取文件名(url)
|
文件名 = self.提取文件名(url)
|
||||||
保存路径 = self.输出目录 / 'json' / 文件名
|
保存路径 = self.输出目录 / 'json' / 文件名
|
||||||
if self.下载文件(url, 保存路径):
|
成功, 实际文件名 = self.下载文件(url, 保存路径)
|
||||||
live['url'] = f"./json/{文件名}"
|
if 成功:
|
||||||
|
live['url'] = f"./json/{实际文件名}"
|
||||||
下载计数 += 1
|
下载计数 += 1
|
||||||
|
|
||||||
print(f" 共下载 {下载计数} 个 lives 文件")
|
print(f" 共下载 {下载计数} 个 lives 文件")
|
||||||
|
|||||||
Reference in New Issue
Block a user