mirror of
https://github.com/d0zingcat/MoviePilot-Plugins.git
synced 2026-05-13 15:09:12 +00:00
fix(ClashRuleProvider): 修复模板规则失效问题
This commit is contained in:
@@ -154,7 +154,7 @@ class ClashRuleProvider(_PluginBase):
|
||||
self._clash_template['proxies'] = self._clash_template.get('proxies') or []
|
||||
self._clash_template['proxy-groups'] = self._clash_template.get('proxy-groups') or []
|
||||
self._clash_template['rule-providers'] = self._clash_template.get('rule-providers') or {}
|
||||
self._clash_template['rules'] = self._clash_template.get('rule-providers') or []
|
||||
self._clash_template['rules'] = self._clash_template.get('rules') or []
|
||||
except yaml.YAMLError as exc:
|
||||
logger.error(f"Error loading clash template yaml: {exc}")
|
||||
if self._group_by_region:
|
||||
@@ -1097,6 +1097,8 @@ class ClashRuleProvider(_PluginBase):
|
||||
branch = 'meta'
|
||||
api_url = f"https://api.github.com/repos/{owner}/{repo}/contents/geo"
|
||||
resp = RequestUtils().get_res(api_url, headers=settings.GITHUB_HEADERS, params={'ref': branch})
|
||||
if not resp:
|
||||
return
|
||||
for path in resp.json():
|
||||
if path["type"] == "dir" and path["name"] in self._geo_rules:
|
||||
tree_sha = path["sha"]
|
||||
@@ -1301,7 +1303,7 @@ class ClashRuleProvider(_PluginBase):
|
||||
)
|
||||
clash_config['rules'] = clash_config.get('rules', [])
|
||||
if not self._discard_rules:
|
||||
clash_config['rules'] += first_config.get('rules', [])
|
||||
clash_config['rules'] = first_config.get('rules', []) + clash_config['rules']
|
||||
|
||||
clash_config['rule-providers'] = clash_config.get('rule-providers') or {}
|
||||
clash_config['rule-providers'].update(first_config.get('rule-providers', {}))
|
||||
@@ -1364,7 +1366,16 @@ class ClashRuleProvider(_PluginBase):
|
||||
logger.warn(f"规则集合 {rule.payload} 不存在, 跳过 {rule.raw_rule}")
|
||||
continue
|
||||
top_rules.append(rule.raw_rule)
|
||||
clash_config["rules"] = self._top_rules + clash_config.get("rules", [])
|
||||
for raw_rule in clash_config.get("rules", []):
|
||||
rule = ClashRuleParser.parse_rule_line(raw_rule)
|
||||
if not rule:
|
||||
logger.warn(f"无效的规则 {raw_rule}, 跳过")
|
||||
continue
|
||||
if not isinstance(rule.action, Action) and rule.action not in outbound_names:
|
||||
logger.warn(f"出站 {rule.action} 不存在, 跳过 {rule.raw_rule}")
|
||||
continue
|
||||
top_rules.append(rule.raw_rule)
|
||||
clash_config["rules"] = top_rules
|
||||
if self._rule_provider:
|
||||
clash_config['rule-providers'] = clash_config.get('rule-providers') or {}
|
||||
clash_config['rule-providers'].update(self._rule_provider)
|
||||
|
||||
@@ -1016,7 +1016,7 @@ class Converter:
|
||||
dc_buf = Converter.decode_base64(cipher_raw).decode('utf-8')
|
||||
if dc_buf.startswith("ss://"):
|
||||
dc_buf = dc_buf[len("ss://"):]
|
||||
dc_buf = Converter.decode_base64(dc_buf).decode('utf-8')
|
||||
dc_buf = Converter.decode_base64(dc_buf).decode('utf-8')
|
||||
cipher, password = dc_buf.split(":", 1)
|
||||
server = parsed.hostname
|
||||
port = parsed.port
|
||||
|
||||
@@ -4563,6 +4563,7 @@ const newProxyGroup = ref({
|
||||
|
||||
// 组件状态
|
||||
const loading = ref(true);
|
||||
const importProxiesLoading = ref(false);
|
||||
const error = ref(null);
|
||||
const rules = ref([]);
|
||||
const rulesetRules = ref([]);
|
||||
@@ -5007,6 +5008,7 @@ async function importRule() {
|
||||
|
||||
async function importExtraProxiesFun() {
|
||||
try {
|
||||
importProxiesLoading.value = true;
|
||||
const requestData = {
|
||||
type: importExtraProxies.value.type,
|
||||
payload: importExtraProxies.value.payload
|
||||
@@ -5019,9 +5021,11 @@ async function importExtraProxiesFun() {
|
||||
message: '节点导入失败',
|
||||
color: 'error'
|
||||
};
|
||||
importProxiesLoading.value = false;
|
||||
return
|
||||
}
|
||||
importExtraProxiesDialog.value = false;
|
||||
importProxiesLoading.value = false;
|
||||
await refreshData();
|
||||
// 显示成功提示
|
||||
snackbar.value = {
|
||||
@@ -5030,6 +5034,7 @@ async function importExtraProxiesFun() {
|
||||
color: 'success'
|
||||
};
|
||||
} catch (err) {
|
||||
importProxiesLoading.value = false;
|
||||
error.value = '节点导入失败: ' + (err.message || '未知错误');
|
||||
snackbar.value = {
|
||||
show: true,
|
||||
@@ -6021,7 +6026,6 @@ return (_ctx, _cache) => {
|
||||
disabled: !isManual(item.source)
|
||||
}, {
|
||||
default: _withCtx(() => [
|
||||
_cache[117] || (_cache[117] = _createTextVNode(" > ")),
|
||||
_createVNode(_component_v_icon, null, {
|
||||
default: _withCtx(() => _cache[116] || (_cache[116] = [
|
||||
_createTextVNode("mdi-delete")
|
||||
@@ -6037,7 +6041,7 @@ return (_ctx, _cache) => {
|
||||
activator: "parent",
|
||||
location: "top"
|
||||
}, {
|
||||
default: _withCtx(() => _cache[118] || (_cache[118] = [
|
||||
default: _withCtx(() => _cache[117] || (_cache[117] = [
|
||||
_createTextVNode(" 非手动添加 ")
|
||||
])),
|
||||
_: 1
|
||||
@@ -6075,7 +6079,7 @@ return (_ctx, _cache) => {
|
||||
]),
|
||||
_: 1
|
||||
}, 8, ["headers", "items", "page", "items-per-page"]),
|
||||
_cache[119] || (_cache[119] = _createElementVNode("div", { class: "text-caption text-grey mt-2" }, null, -1))
|
||||
_cache[118] || (_cache[118] = _createElementVNode("div", { class: "text-caption text-grey mt-2" }, null, -1))
|
||||
])
|
||||
]),
|
||||
_: 1
|
||||
@@ -6085,7 +6089,7 @@ return (_ctx, _cache) => {
|
||||
_createElementVNode("div", _hoisted_33, [
|
||||
_createElementVNode("div", _hoisted_34, [
|
||||
_createElementVNode("div", _hoisted_35, [
|
||||
_cache[122] || (_cache[122] = _createElementVNode("div", { class: "text-h6" }, "规则集合", -1)),
|
||||
_cache[121] || (_cache[121] = _createElementVNode("div", { class: "text-h6" }, "规则集合", -1)),
|
||||
_createElementVNode("div", _hoisted_36, [
|
||||
_createVNode(_component_v_text_field, {
|
||||
modelValue: searchRuleProviders.value,
|
||||
@@ -6104,12 +6108,12 @@ return (_ctx, _cache) => {
|
||||
}, {
|
||||
default: _withCtx(() => [
|
||||
_createVNode(_component_v_icon, { left: "" }, {
|
||||
default: _withCtx(() => _cache[120] || (_cache[120] = [
|
||||
default: _withCtx(() => _cache[119] || (_cache[119] = [
|
||||
_createTextVNode("mdi-plus")
|
||||
])),
|
||||
_: 1
|
||||
}),
|
||||
_cache[121] || (_cache[121] = _createTextVNode(" 添加规则集合 "))
|
||||
_cache[120] || (_cache[120] = _createTextVNode(" 添加规则集合 "))
|
||||
]),
|
||||
_: 1
|
||||
})
|
||||
@@ -6145,9 +6149,8 @@ return (_ctx, _cache) => {
|
||||
disabled: !isManual(item.source)
|
||||
}, {
|
||||
default: _withCtx(() => [
|
||||
_cache[124] || (_cache[124] = _createTextVNode(" > ")),
|
||||
_createVNode(_component_v_icon, null, {
|
||||
default: _withCtx(() => _cache[123] || (_cache[123] = [
|
||||
default: _withCtx(() => _cache[122] || (_cache[122] = [
|
||||
_createTextVNode("mdi-pencil")
|
||||
])),
|
||||
_: 1
|
||||
@@ -6165,7 +6168,7 @@ return (_ctx, _cache) => {
|
||||
}, {
|
||||
default: _withCtx(() => [
|
||||
_createVNode(_component_v_icon, null, {
|
||||
default: _withCtx(() => _cache[125] || (_cache[125] = [
|
||||
default: _withCtx(() => _cache[123] || (_cache[123] = [
|
||||
_createTextVNode("mdi-delete")
|
||||
])),
|
||||
_: 1
|
||||
@@ -6179,7 +6182,7 @@ return (_ctx, _cache) => {
|
||||
activator: "parent",
|
||||
location: "top"
|
||||
}, {
|
||||
default: _withCtx(() => _cache[126] || (_cache[126] = [
|
||||
default: _withCtx(() => _cache[124] || (_cache[124] = [
|
||||
_createTextVNode(" 非手动添加 ")
|
||||
])),
|
||||
_: 1
|
||||
@@ -6238,7 +6241,7 @@ return (_ctx, _cache) => {
|
||||
_createVNode(_component_v_card, { class: "h-100" }, {
|
||||
default: _withCtx(() => [
|
||||
_createVNode(_component_v_card_title, { class: "text-h6 font-weight-medium" }, {
|
||||
default: _withCtx(() => _cache[127] || (_cache[127] = [
|
||||
default: _withCtx(() => _cache[125] || (_cache[125] = [
|
||||
_createTextVNode("状态信息")
|
||||
])),
|
||||
_: 1
|
||||
@@ -6247,7 +6250,7 @@ return (_ctx, _cache) => {
|
||||
default: _withCtx(() => [
|
||||
_createElementVNode("div", _hoisted_40, [
|
||||
_createElementVNode("div", _hoisted_41, [
|
||||
_cache[128] || (_cache[128] = _createElementVNode("span", null, "状态", -1)),
|
||||
_cache[126] || (_cache[126] = _createElementVNode("span", null, "状态", -1)),
|
||||
_createVNode(_component_v_chip, {
|
||||
size: "small",
|
||||
color: status.value === 'running' ? 'success' : 'warning'
|
||||
@@ -6259,23 +6262,23 @@ return (_ctx, _cache) => {
|
||||
}, 8, ["color"])
|
||||
]),
|
||||
_createElementVNode("div", _hoisted_42, [
|
||||
_cache[129] || (_cache[129] = _createElementVNode("span", null, "订阅配置规则数", -1)),
|
||||
_cache[127] || (_cache[127] = _createElementVNode("span", null, "订阅配置规则数", -1)),
|
||||
_createElementVNode("span", null, _toDisplayString(subscriptionInfo.value.rule_size), 1)
|
||||
]),
|
||||
_createElementVNode("div", _hoisted_43, [
|
||||
_cache[130] || (_cache[130] = _createElementVNode("span", null, "置顶规则数", -1)),
|
||||
_cache[128] || (_cache[128] = _createElementVNode("span", null, "置顶规则数", -1)),
|
||||
_createElementVNode("span", null, _toDisplayString(sortedRules.value.length), 1)
|
||||
]),
|
||||
_createElementVNode("div", _hoisted_44, [
|
||||
_cache[131] || (_cache[131] = _createElementVNode("span", null, "规则集规则数", -1)),
|
||||
_cache[129] || (_cache[129] = _createElementVNode("span", null, "规则集规则数", -1)),
|
||||
_createElementVNode("span", null, _toDisplayString(sortedRulesetRules.value.length), 1)
|
||||
]),
|
||||
_createElementVNode("div", _hoisted_45, [
|
||||
_cache[132] || (_cache[132] = _createElementVNode("span", null, "代理组数", -1)),
|
||||
_cache[130] || (_cache[130] = _createElementVNode("span", null, "代理组数", -1)),
|
||||
_createElementVNode("span", null, _toDisplayString(proxyGroups.value.length), 1)
|
||||
]),
|
||||
_createElementVNode("div", _hoisted_46, [
|
||||
_cache[133] || (_cache[133] = _createElementVNode("span", null, "最后更新", -1)),
|
||||
_cache[131] || (_cache[131] = _createElementVNode("span", null, "最后更新", -1)),
|
||||
_createElementVNode("span", null, _toDisplayString(lastUpdated.value), 1)
|
||||
])
|
||||
])
|
||||
@@ -6297,7 +6300,7 @@ return (_ctx, _cache) => {
|
||||
default: _withCtx(() => [
|
||||
_createVNode(_component_v_card_title, { class: "d-flex justify-space-between align-center" }, {
|
||||
default: _withCtx(() => [
|
||||
_cache[135] || (_cache[135] = _createElementVNode("span", { class: "text-h6 font-weight-medium" }, "订阅链接", -1)),
|
||||
_cache[133] || (_cache[133] = _createElementVNode("span", { class: "text-h6 font-weight-medium" }, "订阅链接", -1)),
|
||||
_createVNode(_component_v_tooltip, {
|
||||
location: "top",
|
||||
text: "复制链接"
|
||||
@@ -6313,7 +6316,7 @@ return (_ctx, _cache) => {
|
||||
}), {
|
||||
default: _withCtx(() => [
|
||||
_createVNode(_component_v_icon, null, {
|
||||
default: _withCtx(() => _cache[134] || (_cache[134] = [
|
||||
default: _withCtx(() => _cache[132] || (_cache[132] = [
|
||||
_createTextVNode("mdi-content-copy")
|
||||
])),
|
||||
_: 1
|
||||
@@ -6337,12 +6340,12 @@ return (_ctx, _cache) => {
|
||||
color: "grey",
|
||||
class: "mr-2"
|
||||
}, {
|
||||
default: _withCtx(() => _cache[136] || (_cache[136] = [
|
||||
default: _withCtx(() => _cache[134] || (_cache[134] = [
|
||||
_createTextVNode("mdi-link")
|
||||
])),
|
||||
_: 1
|
||||
}),
|
||||
_cache[137] || (_cache[137] = _createElementVNode("span", { class: "text-grey-darken-1" }, "原始链接:", -1))
|
||||
_cache[135] || (_cache[135] = _createElementVNode("span", { class: "text-grey-darken-1" }, "原始链接:", -1))
|
||||
]),
|
||||
_createElementVNode("div", _hoisted_49, [
|
||||
(Object.keys(subscriptionsInfo.value).length > 0)
|
||||
@@ -6363,7 +6366,7 @@ return (_ctx, _cache) => {
|
||||
]),
|
||||
_createElementVNode("div", _hoisted_51, [
|
||||
_createVNode(_component_v_icon, { color: "blue" }, {
|
||||
default: _withCtx(() => _cache[138] || (_cache[138] = [
|
||||
default: _withCtx(() => _cache[136] || (_cache[136] = [
|
||||
_createTextVNode("mdi-arrow-down-bold")
|
||||
])),
|
||||
_: 1
|
||||
@@ -6374,12 +6377,12 @@ return (_ctx, _cache) => {
|
||||
color: "primary",
|
||||
class: "mr-2"
|
||||
}, {
|
||||
default: _withCtx(() => _cache[139] || (_cache[139] = [
|
||||
default: _withCtx(() => _cache[137] || (_cache[137] = [
|
||||
_createTextVNode("mdi-link-variant")
|
||||
])),
|
||||
_: 1
|
||||
}),
|
||||
_cache[140] || (_cache[140] = _createElementVNode("span", { class: "text-grey-darken-1" }, "生成链接:", -1))
|
||||
_cache[138] || (_cache[138] = _createElementVNode("span", { class: "text-grey-darken-1" }, "生成链接:", -1))
|
||||
]),
|
||||
_createElementVNode("div", _hoisted_53, [
|
||||
_createElementVNode("a", {
|
||||
@@ -6413,12 +6416,12 @@ return (_ctx, _cache) => {
|
||||
_createVNode(_component_v_expansion_panel_title, null, {
|
||||
default: _withCtx(() => [
|
||||
_createVNode(_component_v_icon, { left: "" }, {
|
||||
default: _withCtx(() => _cache[141] || (_cache[141] = [
|
||||
default: _withCtx(() => _cache[139] || (_cache[139] = [
|
||||
_createTextVNode("mdi-cloud-download")
|
||||
])),
|
||||
_: 1
|
||||
}),
|
||||
_cache[142] || (_cache[142] = _createElementVNode("span", { class: "text-subtitle-1 font-weight-medium" }, "订阅管理", -1))
|
||||
_cache[140] || (_cache[140] = _createElementVNode("span", { class: "text-subtitle-1 font-weight-medium" }, "订阅管理", -1))
|
||||
]),
|
||||
_: 1
|
||||
}),
|
||||
@@ -6431,7 +6434,7 @@ return (_ctx, _cache) => {
|
||||
variant: "tonal",
|
||||
class: "mb-4"
|
||||
}, {
|
||||
default: _withCtx(() => _cache[143] || (_cache[143] = [
|
||||
default: _withCtx(() => _cache[141] || (_cache[141] = [
|
||||
_createTextVNode(" 暂无订阅信息,请先添加订阅链接 ")
|
||||
])),
|
||||
_: 1
|
||||
@@ -6517,11 +6520,11 @@ return (_ctx, _cache) => {
|
||||
: _createCommentVNode("", true)
|
||||
]),
|
||||
_createElementVNode("div", _hoisted_57, [
|
||||
_cache[144] || (_cache[144] = _createElementVNode("span", null, "已用流量:", -1)),
|
||||
_cache[142] || (_cache[142] = _createElementVNode("span", null, "已用流量:", -1)),
|
||||
_createElementVNode("strong", null, _toDisplayString(formatBytes(info.download + info.upload)), 1)
|
||||
]),
|
||||
_createElementVNode("div", _hoisted_58, [
|
||||
_cache[145] || (_cache[145] = _createElementVNode("span", null, "剩余流量:", -1)),
|
||||
_cache[143] || (_cache[143] = _createElementVNode("span", null, "剩余流量:", -1)),
|
||||
_createElementVNode("strong", null, _toDisplayString(formatBytes(info.total - info.download)), 1)
|
||||
]),
|
||||
_createVNode(_component_v_progress_linear, {
|
||||
@@ -6550,12 +6553,12 @@ return (_ctx, _cache) => {
|
||||
}, {
|
||||
default: _withCtx(() => [
|
||||
_createVNode(_component_v_icon, { left: "" }, {
|
||||
default: _withCtx(() => _cache[146] || (_cache[146] = [
|
||||
default: _withCtx(() => _cache[144] || (_cache[144] = [
|
||||
_createTextVNode("mdi-cloud-sync")
|
||||
])),
|
||||
_: 1
|
||||
}),
|
||||
_cache[147] || (_cache[147] = _createTextVNode(" 更新订阅 "))
|
||||
_cache[145] || (_cache[145] = _createTextVNode(" 更新订阅 "))
|
||||
]),
|
||||
_: 2
|
||||
}, 1032, ["onClick", "loading"])
|
||||
@@ -6589,12 +6592,12 @@ return (_ctx, _cache) => {
|
||||
}, {
|
||||
default: _withCtx(() => [
|
||||
_createVNode(_component_v_icon, { left: "" }, {
|
||||
default: _withCtx(() => _cache[148] || (_cache[148] = [
|
||||
default: _withCtx(() => _cache[146] || (_cache[146] = [
|
||||
_createTextVNode("mdi-refresh")
|
||||
])),
|
||||
_: 1
|
||||
}),
|
||||
_cache[149] || (_cache[149] = _createTextVNode(" 刷新数据 "))
|
||||
_cache[147] || (_cache[147] = _createTextVNode(" 刷新数据 "))
|
||||
]),
|
||||
_: 1
|
||||
}, 8, ["loading"]),
|
||||
@@ -6605,12 +6608,12 @@ return (_ctx, _cache) => {
|
||||
}, {
|
||||
default: _withCtx(() => [
|
||||
_createVNode(_component_v_icon, { left: "" }, {
|
||||
default: _withCtx(() => _cache[150] || (_cache[150] = [
|
||||
default: _withCtx(() => _cache[148] || (_cache[148] = [
|
||||
_createTextVNode("mdi-cog")
|
||||
])),
|
||||
_: 1
|
||||
}),
|
||||
_cache[151] || (_cache[151] = _createTextVNode(" 配置 "))
|
||||
_cache[149] || (_cache[149] = _createTextVNode(" 配置 "))
|
||||
]),
|
||||
_: 1
|
||||
})
|
||||
@@ -6765,7 +6768,7 @@ return (_ctx, _cache) => {
|
||||
color: "secondary",
|
||||
onClick: closeRuleDialog
|
||||
}, {
|
||||
default: _withCtx(() => _cache[152] || (_cache[152] = [
|
||||
default: _withCtx(() => _cache[150] || (_cache[150] = [
|
||||
_createTextVNode("取消")
|
||||
])),
|
||||
_: 1
|
||||
@@ -6774,7 +6777,7 @@ return (_ctx, _cache) => {
|
||||
color: "primary",
|
||||
type: "submit"
|
||||
}, {
|
||||
default: _withCtx(() => _cache[153] || (_cache[153] = [
|
||||
default: _withCtx(() => _cache[151] || (_cache[151] = [
|
||||
_createTextVNode("保存")
|
||||
])),
|
||||
_: 1
|
||||
@@ -6990,7 +6993,7 @@ return (_ctx, _cache) => {
|
||||
}, {
|
||||
"prepend-inner": _withCtx(() => [
|
||||
_createVNode(_component_v_icon, { color: "warning" }, {
|
||||
default: _withCtx(() => _cache[154] || (_cache[154] = [
|
||||
default: _withCtx(() => _cache[152] || (_cache[152] = [
|
||||
_createTextVNode("mdi-timer")
|
||||
])),
|
||||
_: 1
|
||||
@@ -7020,7 +7023,7 @@ return (_ctx, _cache) => {
|
||||
}, {
|
||||
"prepend-inner": _withCtx(() => [
|
||||
_createVNode(_component_v_icon, { color: "warning" }, {
|
||||
default: _withCtx(() => _cache[155] || (_cache[155] = [
|
||||
default: _withCtx(() => _cache[153] || (_cache[153] = [
|
||||
_createTextVNode("mdi-timer")
|
||||
])),
|
||||
_: 1
|
||||
@@ -7152,7 +7155,7 @@ return (_ctx, _cache) => {
|
||||
class: "mb-6",
|
||||
variant: "tonal"
|
||||
}, {
|
||||
default: _withCtx(() => _cache[156] || (_cache[156] = [
|
||||
default: _withCtx(() => _cache[154] || (_cache[154] = [
|
||||
_createTextVNode(" 参考"),
|
||||
_createElementVNode("a", {
|
||||
href: "https://wiki.metacubex.one/config/proxy-groups/",
|
||||
@@ -7168,7 +7171,7 @@ return (_ctx, _cache) => {
|
||||
color: "secondary",
|
||||
onClick: _cache[55] || (_cache[55] = $event => (proxyGroupDialog.value = false))
|
||||
}, {
|
||||
default: _withCtx(() => _cache[157] || (_cache[157] = [
|
||||
default: _withCtx(() => _cache[155] || (_cache[155] = [
|
||||
_createTextVNode("取消")
|
||||
])),
|
||||
_: 1
|
||||
@@ -7177,7 +7180,7 @@ return (_ctx, _cache) => {
|
||||
color: "primary",
|
||||
type: "submit"
|
||||
}, {
|
||||
default: _withCtx(() => _cache[158] || (_cache[158] = [
|
||||
default: _withCtx(() => _cache[156] || (_cache[156] = [
|
||||
_createTextVNode("保存")
|
||||
])),
|
||||
_: 1
|
||||
@@ -7203,7 +7206,7 @@ return (_ctx, _cache) => {
|
||||
_createVNode(_component_v_card, null, {
|
||||
default: _withCtx(() => [
|
||||
_createVNode(_component_v_card_title, { class: "headline" }, {
|
||||
default: _withCtx(() => _cache[159] || (_cache[159] = [
|
||||
default: _withCtx(() => _cache[157] || (_cache[157] = [
|
||||
_createTextVNode("YAML 配置")
|
||||
])),
|
||||
_: 1
|
||||
@@ -7221,7 +7224,7 @@ return (_ctx, _cache) => {
|
||||
color: "primary",
|
||||
onClick: _cache[57] || (_cache[57] = $event => (copyToClipboard(displayedYaml.value)))
|
||||
}, {
|
||||
default: _withCtx(() => _cache[160] || (_cache[160] = [
|
||||
default: _withCtx(() => _cache[158] || (_cache[158] = [
|
||||
_createTextVNode("复制")
|
||||
])),
|
||||
_: 1
|
||||
@@ -7230,7 +7233,7 @@ return (_ctx, _cache) => {
|
||||
color: "primary",
|
||||
onClick: _cache[58] || (_cache[58] = $event => (yamlDialog.value = false))
|
||||
}, {
|
||||
default: _withCtx(() => _cache[161] || (_cache[161] = [
|
||||
default: _withCtx(() => _cache[159] || (_cache[159] = [
|
||||
_createTextVNode("关闭")
|
||||
])),
|
||||
_: 1
|
||||
@@ -7253,7 +7256,7 @@ return (_ctx, _cache) => {
|
||||
_createVNode(_component_v_card, null, {
|
||||
default: _withCtx(() => [
|
||||
_createVNode(_component_v_card_title, null, {
|
||||
default: _withCtx(() => _cache[162] || (_cache[162] = [
|
||||
default: _withCtx(() => _cache[160] || (_cache[160] = [
|
||||
_createTextVNode("导入规则")
|
||||
])),
|
||||
_: 1
|
||||
@@ -7286,7 +7289,7 @@ return (_ctx, _cache) => {
|
||||
class: "mb-4",
|
||||
variant: "tonal"
|
||||
}, {
|
||||
default: _withCtx(() => _cache[163] || (_cache[163] = [
|
||||
default: _withCtx(() => _cache[161] || (_cache[161] = [
|
||||
_createTextVNode(" 请输入 Clash 规则中的 "),
|
||||
_createElementVNode("strong", null, "rules", -1),
|
||||
_createTextVNode(" 字段,例如:"),
|
||||
@@ -7309,7 +7312,7 @@ return (_ctx, _cache) => {
|
||||
color: "secondary",
|
||||
onClick: _cache[62] || (_cache[62] = $event => (importRuleDialog.value = false, error.value=null))
|
||||
}, {
|
||||
default: _withCtx(() => _cache[164] || (_cache[164] = [
|
||||
default: _withCtx(() => _cache[162] || (_cache[162] = [
|
||||
_createTextVNode("取消")
|
||||
])),
|
||||
_: 1
|
||||
@@ -7318,7 +7321,7 @@ return (_ctx, _cache) => {
|
||||
color: "primary",
|
||||
onClick: importRule
|
||||
}, {
|
||||
default: _withCtx(() => _cache[165] || (_cache[165] = [
|
||||
default: _withCtx(() => _cache[163] || (_cache[163] = [
|
||||
_createTextVNode("导入")
|
||||
])),
|
||||
_: 1
|
||||
@@ -7341,7 +7344,7 @@ return (_ctx, _cache) => {
|
||||
_createVNode(_component_v_card, null, {
|
||||
default: _withCtx(() => [
|
||||
_createVNode(_component_v_card_title, null, {
|
||||
default: _withCtx(() => _cache[166] || (_cache[166] = [
|
||||
default: _withCtx(() => _cache[164] || (_cache[164] = [
|
||||
_createTextVNode("导入节点")
|
||||
])),
|
||||
_: 1
|
||||
@@ -7375,7 +7378,7 @@ return (_ctx, _cache) => {
|
||||
class: "mb-4",
|
||||
variant: "tonal"
|
||||
}, {
|
||||
default: _withCtx(() => _cache[167] || (_cache[167] = [
|
||||
default: _withCtx(() => _cache[165] || (_cache[165] = [
|
||||
_createTextVNode(" 请输入 Clash 规则中的 "),
|
||||
_createElementVNode("strong", null, "proxies", -1),
|
||||
_createTextVNode(" 字段,例如:"),
|
||||
@@ -7397,7 +7400,7 @@ return (_ctx, _cache) => {
|
||||
class: "mb-4",
|
||||
variant: "tonal"
|
||||
}, {
|
||||
default: _withCtx(() => _cache[168] || (_cache[168] = [
|
||||
default: _withCtx(() => _cache[166] || (_cache[166] = [
|
||||
_createTextVNode(" 请输入 V2Ray 格式的节点链接,例如:"),
|
||||
_createElementVNode("br", null, null, -1),
|
||||
_createElementVNode("code", null, "vmess://xxxx", -1),
|
||||
@@ -7417,20 +7420,21 @@ return (_ctx, _cache) => {
|
||||
color: "secondary",
|
||||
onClick: _cache[66] || (_cache[66] = $event => (importExtraProxiesDialog.value=false, error.value=null))
|
||||
}, {
|
||||
default: _withCtx(() => _cache[169] || (_cache[169] = [
|
||||
default: _withCtx(() => _cache[167] || (_cache[167] = [
|
||||
_createTextVNode("取消")
|
||||
])),
|
||||
_: 1
|
||||
}),
|
||||
_createVNode(_component_v_btn, {
|
||||
color: "primary",
|
||||
onClick: importExtraProxiesFun
|
||||
onClick: importExtraProxiesFun,
|
||||
loading: importProxiesLoading.value
|
||||
}, {
|
||||
default: _withCtx(() => _cache[170] || (_cache[170] = [
|
||||
_createTextVNode("导入")
|
||||
default: _withCtx(() => _cache[168] || (_cache[168] = [
|
||||
_createTextVNode(" 导入 ")
|
||||
])),
|
||||
_: 1
|
||||
})
|
||||
}, 8, ["loading"])
|
||||
]),
|
||||
_: 1
|
||||
})
|
||||
@@ -7583,7 +7587,7 @@ return (_ctx, _cache) => {
|
||||
color: "secondary",
|
||||
onClick: _cache[77] || (_cache[77] = $event => (ruleProviderDialog.value = false, error.value=null))
|
||||
}, {
|
||||
default: _withCtx(() => _cache[171] || (_cache[171] = [
|
||||
default: _withCtx(() => _cache[169] || (_cache[169] = [
|
||||
_createTextVNode("取消")
|
||||
])),
|
||||
_: 1
|
||||
@@ -7592,7 +7596,7 @@ return (_ctx, _cache) => {
|
||||
color: "primary",
|
||||
type: "submit"
|
||||
}, {
|
||||
default: _withCtx(() => _cache[172] || (_cache[172] = [
|
||||
default: _withCtx(() => _cache[170] || (_cache[170] = [
|
||||
_createTextVNode("保存")
|
||||
])),
|
||||
_: 1
|
||||
@@ -7614,6 +7618,6 @@ return (_ctx, _cache) => {
|
||||
}
|
||||
|
||||
};
|
||||
const PageComponent = /*#__PURE__*/_export_sfc(_sfc_main, [['__scopeId',"data-v-77adff9b"]]);
|
||||
const PageComponent = /*#__PURE__*/_export_sfc(_sfc_main, [['__scopeId',"data-v-4a22a0ac"]]);
|
||||
|
||||
export { PageComponent as default };
|
||||
@@ -1,13 +1,13 @@
|
||||
|
||||
.plugin-page[data-v-77adff9b] {
|
||||
.plugin-page[data-v-4a22a0ac] {
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
/* 使卡片等宽并适应移动端 */
|
||||
.d-flex.flex-wrap[data-v-77adff9b] {
|
||||
.d-flex.flex-wrap[data-v-4a22a0ac] {
|
||||
gap: 16px;
|
||||
}
|
||||
.url-display[data-v-77adff9b] {
|
||||
.url-display[data-v-4a22a0ac] {
|
||||
word-break: break-all;
|
||||
padding: 8px;
|
||||
background: rgba(0, 0, 0, 0.05);
|
||||
@@ -16,19 +16,19 @@
|
||||
|
||||
/* 移动端堆叠布局 */
|
||||
@media (max-width: 768px) {
|
||||
.d-flex.flex-wrap[data-v-77adff9b] {
|
||||
.d-flex.flex-wrap[data-v-4a22a0ac] {
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
|
||||
/* Add visual distinction between sections */
|
||||
.ruleset-section[data-v-77adff9b] {
|
||||
.ruleset-section[data-v-4a22a0ac] {
|
||||
border: 1px solid #e0e0e0;
|
||||
border-radius: 4px;
|
||||
padding: 16px;
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
.top-section[data-v-77adff9b] {
|
||||
.top-section[data-v-4a22a0ac] {
|
||||
border: 1px solid #e0e0e0;
|
||||
border-radius: 4px;
|
||||
padding: 16px;
|
||||
@@ -36,15 +36,15 @@
|
||||
}
|
||||
|
||||
/* Optional: Add different border colors to further distinguish */
|
||||
.ruleset-section[data-v-77adff9b] {
|
||||
.ruleset-section[data-v-4a22a0ac] {
|
||||
border-left: 4px solid #2196F3; /* Blue accent */
|
||||
}
|
||||
.top-section[data-v-77adff9b] {
|
||||
.top-section[data-v-4a22a0ac] {
|
||||
border-left: 4px solid #4CAF50; /* Green accent */
|
||||
}
|
||||
.drag-handle[data-v-77adff9b] {
|
||||
.drag-handle[data-v-4a22a0ac] {
|
||||
cursor: move;
|
||||
}
|
||||
.gap-2[data-v-77adff9b] {
|
||||
.gap-2[data-v-4a22a0ac] {
|
||||
gap: 8px;
|
||||
}
|
||||
@@ -159,7 +159,7 @@ class ImdbSource(_PluginBase):
|
||||
for entry in entries:
|
||||
cast = [name for related in entry.get('relatedconst', []) for name in names if name.get('id') == related]
|
||||
mtype, year, plot = year_and_type(entry)
|
||||
mp_url = f"/media?mediaid=imdb:{entry.get('ttconst')}&title='{entry.get('name')}'&year={year}&type={mtype.value}"
|
||||
mp_url = f"/media?mediaid=imdb:{entry.get('ttconst')}&title={entry.get('name')}&year={year}&type={mtype.value}"
|
||||
primary_img_url = next((f"{image.get('url')}" for image in images
|
||||
if image.get("id") == entry.get('rmconst')), '')
|
||||
primary_img_url = f'{self._img_proxy_prefix}{primary_img_url}'
|
||||
|
||||
Reference in New Issue
Block a user