mirror of
https://github.com/d0zingcat/MoviePilot-Plugins.git
synced 2026-05-13 15:09:12 +00:00
Merge pull request #726 from wumode/tobypasstrackers
This commit is contained in:
@@ -405,7 +405,8 @@
|
||||
"level": 2,
|
||||
"history": {
|
||||
"v1.0": "支持自定义Trackers",
|
||||
"v1.1": "更新列表后发送通知"
|
||||
"v1.1": "更新列表后发送通知",
|
||||
"v1.2": "修复trackers加载错误"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
from typing import Any, List, Dict, Tuple, Optional
|
||||
from datetime import datetime, timedelta
|
||||
import pickle
|
||||
import ipaddress
|
||||
import socket
|
||||
|
||||
@@ -8,6 +7,8 @@ from apscheduler.schedulers.background import BackgroundScheduler
|
||||
from fastapi import Response
|
||||
from apscheduler.triggers.cron import CronTrigger
|
||||
import pytz
|
||||
import base64
|
||||
import json
|
||||
|
||||
from app.chain.site import SiteChain
|
||||
from app.core.config import settings
|
||||
@@ -29,7 +30,7 @@ class ToBypassTrackers(_PluginBase):
|
||||
# 插件图标
|
||||
plugin_icon = "Clash_A.png"
|
||||
# 插件版本
|
||||
plugin_version = "1.1"
|
||||
plugin_version = "1.2"
|
||||
# 插件作者
|
||||
plugin_author = "wumode"
|
||||
# 作者主页
|
||||
@@ -74,11 +75,12 @@ class ToBypassTrackers(_PluginBase):
|
||||
self.stop_service()
|
||||
self.siteoper = SiteOper()
|
||||
self.trackers = {}
|
||||
self.ipv6_txt = self.get_data('ipv6_txt') if self.get_data('ipv6_txt') else ""
|
||||
self.ipv4_txt = self.get_data('ipv4_txt') if self.get_data('ipv4_txt') else ""
|
||||
self.ipv6_txt = self.get_data("ipv6_txt") if self.get_data("ipv6_txt") else ""
|
||||
self.ipv4_txt = self.get_data("ipv4_txt") if self.get_data("ipv4_txt") else ""
|
||||
try:
|
||||
with open(f"{settings.ROOT_PATH}/app/plugins/tobypasstrackers/sites/trackers", "rb") as f:
|
||||
self.trackers = pickle.load(f)
|
||||
with open(f"{settings.ROOT_PATH}/app/plugins/tobypasstrackers/sites/trackers", "r", encoding="utf-8") as f:
|
||||
base64_str = f.read()
|
||||
self.trackers = json.loads(base64.b64decode(base64_str).decode("utf-8"))
|
||||
except Exception as e:
|
||||
logger.error(f"插件加载错误:{e}")
|
||||
# 配置
|
||||
@@ -103,7 +105,7 @@ class ToBypassTrackers(_PluginBase):
|
||||
self._scheduler = BackgroundScheduler(timezone=settings.TZ)
|
||||
if self._onlyonce:
|
||||
logger.info(f"立即运行一次")
|
||||
self._scheduler.add_job(self.update_ips, 'date',
|
||||
self._scheduler.add_job(self.update_ips, "date",
|
||||
run_date=datetime.now(
|
||||
tz=pytz.timezone(settings.TZ)) + timedelta(seconds=3)
|
||||
)
|
||||
@@ -573,8 +575,8 @@ class ToBypassTrackers(_PluginBase):
|
||||
|
||||
return [str(sub_net) for sub_net in remaining_ranges]
|
||||
# replacing = data.get('replace')
|
||||
chnroute6_lists_url = 'https://ispip.clang.cn/all_cn_ipv6.txt'
|
||||
chnroute_lists_url = 'https://ispip.clang.cn/all_cn.txt'
|
||||
chnroute6_lists_url = "https://ispip.clang.cn/all_cn_ipv6.txt"
|
||||
chnroute_lists_url = "https://ispip.clang.cn/all_cn.txt"
|
||||
ipv6_list = []
|
||||
ip_list = []
|
||||
domains = []
|
||||
@@ -623,7 +625,7 @@ class ToBypassTrackers(_PluginBase):
|
||||
domains.append(custom_tracker)
|
||||
for domain in domains:
|
||||
if self._bypass_ipv6:
|
||||
ipv6_addresses = DnsHelper.query_domain(domain, self._dns_input, 'AAAA')
|
||||
ipv6_addresses = DnsHelper.query_domain(domain, self._dns_input, "AAAA")
|
||||
if ipv6_addresses is None:
|
||||
logger.warn(f"{domain} AAAA 记录查询失败")
|
||||
failed_msg.append(f"【{domain_name_map.get(domain, domain)}】 {domain}: AAAA记录查询失败")
|
||||
@@ -685,7 +687,7 @@ class ToBypassTrackers(_PluginBase):
|
||||
ip_list.pop(index)
|
||||
length = int(ip_larger.split('/')[1])
|
||||
if length < 12:
|
||||
remaining_ip = __exclude_ip_range(ip_larger, f'{ip}/{length + 8}')
|
||||
remaining_ip = __exclude_ip_range(ip_larger, f"{ip}/{length + 8}")
|
||||
ip_list.extend(remaining_ip)
|
||||
for ip in exempted_ipv6:
|
||||
index = __search_ip(ip, ipv6_list)
|
||||
@@ -695,7 +697,7 @@ class ToBypassTrackers(_PluginBase):
|
||||
ipv6_list.pop(index)
|
||||
length = int(ip_larger.split('/')[1])
|
||||
if length < 32:
|
||||
remaining_ip = __exclude_ip_range(ip_larger, f'{ip}/{min(32, length + 8)}')
|
||||
remaining_ip = __exclude_ip_range(ip_larger, f"{ip}/{min(32, length + 8)}")
|
||||
ipv6_list.extend(remaining_ip)
|
||||
self.ipv4_txt = "\n".join(ip_list)
|
||||
self.ipv6_txt = "\n".join(ipv6_list)
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user