fix(format): improve episode parsing logic

This commit is contained in:
Attente
2024-12-25 04:50:23 +08:00
parent 3678de09bf
commit 31887ab4b1
+10 -1
View File
@@ -84,8 +84,11 @@ class FormatParser(object):
拆分集数,返回开始集数,结束集数,Part信息 拆分集数,返回开始集数,结束集数,Part信息
""" """
# 指定的具体集数,直接返回 # 指定的具体集数,直接返回
if self._start_ep is not None and self._start_ep == self._end_ep: if self._start_ep is not None:
if self._start_ep == self._end_ep:
# `details` 格式为 `X-X` 或者 `X`
if isinstance(self._start_ep, str): if isinstance(self._start_ep, str):
# `details` 格式为 `X-X`
s, e = self._start_ep.split("-") s, e = self._start_ep.split("-")
start_ep = self.__offset.replace("EP", s) start_ep = self.__offset.replace("EP", s)
end_ep = self.__offset.replace("EP", e) end_ep = self.__offset.replace("EP", e)
@@ -93,13 +96,19 @@ class FormatParser(object):
return int(eval(start_ep)), None, self.part return int(eval(start_ep)), None, self.part
return int(eval(start_ep)), int(eval(end_ep)), self.part return int(eval(start_ep)), int(eval(end_ep)), self.part
else: else:
# `details` 格式为 `X`
start_ep = self.__offset.replace("EP", str(self._start_ep)) start_ep = self.__offset.replace("EP", str(self._start_ep))
return int(eval(start_ep)), None, self.part return int(eval(start_ep)), None, self.part
else:
# `details` 格式为 `X,X`
return self.__offset.replace("EP", str(self._start_ep)), self.__offset.replace("EP", str(self._end_ep)), self.part
if not self._format: if not self._format:
# 未填入`集数定位` 且没有`指定集数` 仅处理`集数偏移`
start_ep = eval(self.__offset.replace("EP", str(file_meta.begin_episode))) if file_meta.begin_episode else None start_ep = eval(self.__offset.replace("EP", str(file_meta.begin_episode))) if file_meta.begin_episode else None
end_ep = eval(self.__offset.replace("EP", str(file_meta.end_episode))) if file_meta.end_episode else None end_ep = eval(self.__offset.replace("EP", str(file_meta.end_episode))) if file_meta.end_episode else None
return int(start_ep) if start_ep else None, int(end_ep) if end_ep else None, self.part return int(start_ep) if start_ep else None, int(end_ep) if end_ep else None, self.part
else: else:
# 有`集数定位`
s, e = self.__handle_single(file_name) s, e = self.__handle_single(file_name)
start_ep = self.__offset.replace("EP", str(s)) if s else None start_ep = self.__offset.replace("EP", str(s)) if s else None
end_ep = self.__offset.replace("EP", str(e)) if e else None end_ep = self.__offset.replace("EP", str(e)) if e else None