import re
import requests
"""
配合 AList-Strm 项目,触发特定配置运行
https://github.com/tefuirZ/alist-strm
"""
class Alist_strm:
default_config = {
"url": "", # alist-strm服务器URL
"cookie": "", # alist-strm的cookie,F12抓取,关键参数:session=ey***
"config_id": "", # 要触发运行的配置ID,支持多个,用逗号分隔
}
is_active = False
def __init__(self, **kwargs):
if kwargs:
for key, _ in self.default_config.items():
if key in kwargs:
setattr(self, key, kwargs[key])
else:
print(f"{self.__class__.__name__} 模块缺少必要参数: {key}")
if self.url and self.cookie and self.config_id:
if self.get_info(self.config_id):
self.is_active = True
def run(self, task, **kwargs):
self.run_selected_configs(self.config_id)
def get_info(self, config_id_str):
url = f"{self.url}/configs"
headers = {"Cookie": self.cookie}
try:
response = requests.request("GET", url, headers=headers)
response.raise_for_status()
html_content = response.text
# 用正则提取 config_name 的值
matchs = re.findall(
r'value="(\d*)">\s*名称:([^<]+)', html_content
)
if matchs:
config_name = [
item[1].strip()
for item in matchs
if item[0] in config_id_str.split(",")
]
print(f"AList-Strm 配置运行: {config_name}")
return True
else:
print(f"AList-Strm 配置运行: 匹配失败 ❌ 请检查网络连通和 Cookie 有效性")
except Exception as e:
print(f"获取 AList-Strm 配置信息出错 ❌ {e}")
return False
def run_selected_configs(self, selected_configs_str):
url = f"{self.url}/run_selected_configs"
headers = {"Cookie": self.cookie}
try:
selected_configs = [int(x.strip()) for x in selected_configs_str.split(",")]
except ValueError:
print("🔗 AList-Strm 配置运行: 出错 ❌ ID 应以 , 分割")
return False
data = [("selected_configs", config_id) for config_id in selected_configs]
data.append(("action", "run_selected"))
try:
response = requests.post(url, headers=headers, data=data)
response.raise_for_status()
html_content = response.text
# 用正则提取 config_name 的值
match = re.search(r'role="alert">\s*([^<]+)\s*