This commit is contained in:
jxxghp
2023-06-07 21:16:33 +08:00
parent 1c8e349bfc
commit ab86eaf59a
12 changed files with 81 additions and 11 deletions

View File

@ -41,6 +41,7 @@ class RuleParser:
if __name__ == '__main__':
# 测试代码
expression1 = "!BLU & (1080P | CN)"
parsed_expr1 = RuleParser().parse(expression1)
print(parsed_expr1.as_list())
expression = "!BLU & 4K & CN > !BLU & 1080P & CN > !BLU & 4K > !BLU & 1080P"
for exp in expression.split('>'):
parsed_expr = RuleParser().parse(exp)
print(parsed_expr.as_list())

View File

@ -111,15 +111,18 @@ class FilterModule(_ModuleBase):
if not isinstance(rule_group, list):
# 不是列表,说明是规则名称
return self.__match_rule(torrent, rule_group)
if rule_group[0] == "not":
elif isinstance(rule_group, list) and len(rule_group) == 1:
# 只有一个规则项
return self.__match_rule(torrent, rule_group[0])
elif rule_group[0] == "not":
# 非操作
return not self.__match_group(torrent, rule_group[1])
return not self.__match_group(torrent, rule_group[1:])
elif rule_group[1] == "and":
# 与操作
return self.__match_group(torrent, rule_group[0]) and self.__match_group(torrent, rule_group[2])
return self.__match_group(torrent, rule_group[0]) and self.__match_group(torrent, rule_group[2:])
elif rule_group[1] == "or":
# 或操作
return self.__match_group(torrent, rule_group[0]) or self.__match_group(torrent, rule_group[2])
return self.__match_group(torrent, rule_group[0]) or self.__match_group(torrent, rule_group[2:])
def __match_rule(self, torrent: TorrentInfo, rule_name: str) -> bool:
"""

View File

@ -18,6 +18,8 @@ class Qbittorrent(metaclass=Singleton):
_username: str = None
_passowrd: str = None
qbc: Client = None
def __init__(self):
host = settings.QB_HOST
if host and host.find(":") != -1:
@ -44,7 +46,7 @@ class Qbittorrent(metaclass=Singleton):
try:
qbt.auth_log_in()
except qbittorrentapi.LoginFailed as e:
print(str(e))
logger.error(f"qbittorrent 登录失败:{e}")
return qbt
except Exception as err:
logger.error(f"qbittorrent 连接出错:{err}")

View File

@ -16,6 +16,8 @@ class Transmission(metaclass=Singleton):
_username: str = None
_passowrd: str = None
trc: Optional[Client] = None
# 参考transmission web仅查询需要的参数加速种子搜索
_trarg = ["id", "name", "status", "labels", "hashString", "totalSize", "percentDone", "addedDate", "trackerStats",
"leftUntilDone", "rateDownload", "rateUpload", "recheckProgress", "rateDownload", "rateUpload",
@ -46,7 +48,7 @@ class Transmission(metaclass=Singleton):
timeout=60)
return trt
except Exception as err:
logger.error(f"连接出错:{err}")
logger.error(f"transmission 连接出错:{err}")
return None
def get_torrents(self, ids: Union[str, list] = None, status: Union[str, list] = None,