mirror of
https://github.com/EstrellaXD/Auto_Bangumi.git
synced 2026-04-24 18:40:03 +08:00
Merge pull request #816 from KotaHv/fix-805
fix: #805 and support episode as int or float
This commit is contained in:
@@ -23,7 +23,7 @@ class EpisodeFile(BaseModel):
|
||||
group: str | None = Field(None)
|
||||
title: str = Field(...)
|
||||
season: int = Field(...)
|
||||
episode: int = Field(None)
|
||||
episode: int | float = Field(None)
|
||||
suffix: str = Field(..., regex=r"\.(mkv|mp4|MKV|MP4)$")
|
||||
|
||||
|
||||
@@ -32,6 +32,6 @@ class SubtitleFile(BaseModel):
|
||||
group: str | None = Field(None)
|
||||
title: str = Field(...)
|
||||
season: int = Field(...)
|
||||
episode: int = Field(None)
|
||||
episode: int | float = Field(None)
|
||||
language: str = Field(..., regex=r"(zh|zh-tw)")
|
||||
suffix: str = Field(..., regex=r"\.(ass|srt|ASS|SRT)$")
|
||||
|
||||
@@ -9,11 +9,11 @@ logger = logging.getLogger(__name__)
|
||||
PLATFORM = "Unix"
|
||||
|
||||
RULES = [
|
||||
r"(.*) - (\d{1,4}(?!\d|p)|\d{1,4}\.\d{1,2}(?!\d|p))(?:v\d{1,2})?(?: )?(?:END)?(.*)",
|
||||
r"(.*)[\[\ E](\d{1,4}|\d{1,4}\.\d{1,2})(?:v\d{1,2})?(?: )?(?:END)?[\]\ ](.*)",
|
||||
r"(.*)\[(?:第)?(\d*\.*\d*)[话集話](?:END)?\](.*)",
|
||||
r"(.*)第?(\d*\.*\d*)[话話集](?:END)?(.*)",
|
||||
r"(.*)(?:S\d{2})?EP?(\d+)(.*)",
|
||||
r"(.*) - (\d{1,4}(?:\.\d{1,2})?(?!\d|p))(?:v\d{1,2})?(?: )?(?:END)?(.*)",
|
||||
r"(.*)[\[\ E](\d{1,4}(?:\.\d{1,2})?)(?:v\d{1,2})?(?: )?(?:END)?[\]\ ](.*)",
|
||||
r"(.*)\[(?:第)?(\d{1,4}(?:\.\d{1,2})?)[话集話](?:END)?\](.*)",
|
||||
r"(.*)第?(\d{1,4}(?:\.\d{1,2})?)[话話集](?:END)?(.*)",
|
||||
r"(.*)(?:S\d{2})?EP?(\d{1,4}(?:\.\d{1,2})?)(.*)",
|
||||
]
|
||||
|
||||
SUBTITLE_LANG = {
|
||||
@@ -81,7 +81,7 @@ def torrent_parser(
|
||||
title, season = get_season_and_title(title)
|
||||
else:
|
||||
title, _ = get_season_and_title(title)
|
||||
episode = int(match_obj.group(2))
|
||||
episode = match_obj.group(2)
|
||||
suffix = Path(torrent_path).suffix
|
||||
if file_type == "media":
|
||||
return EpisodeFile(
|
||||
@@ -103,3 +103,21 @@ def torrent_parser(
|
||||
episode=episode,
|
||||
suffix=suffix,
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
ep = torrent_parser(
|
||||
"/不时用俄语小声说真心话的邻桌艾莉同学/Season 1/不时用俄语小声说真心话的邻桌艾莉同学 S01E02.mp4"
|
||||
)
|
||||
print(ep)
|
||||
|
||||
ep = torrent_parser(
|
||||
"/downloads/Bangumi/关于我转生变成史莱姆这档事 (2018)/Season 3/[ANi] 關於我轉生變成史萊姆這檔事 第三季 - 48.5 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp4"
|
||||
)
|
||||
print(ep)
|
||||
|
||||
ep = torrent_parser(
|
||||
"/downloads/Bangumi/关于我转生变成史莱姆这档事 (2018)/Season 3/[ANi] 關於我轉生變成史萊姆這檔事 第三季 - 48.5 [1080P][Baha][WEB-DL][AAC AVC][CHT].srt",
|
||||
file_type="subtitle",
|
||||
)
|
||||
print(ep)
|
||||
|
||||
@@ -72,6 +72,25 @@ def test_torrent_parser():
|
||||
assert bf.season == 1
|
||||
assert bf.episode == 6
|
||||
|
||||
file_name = "不时用俄语小声说真心话的邻桌艾莉同学 S01E02.mp4"
|
||||
bf = torrent_parser(file_name)
|
||||
assert bf.title == "不时用俄语小声说真心话的邻桌艾莉同学"
|
||||
assert bf.season == 1
|
||||
assert bf.episode == 2
|
||||
|
||||
file_name = "[ANi] 關於我轉生變成史萊姆這檔事 第三季 - 48.5 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp4"
|
||||
bf = torrent_parser(file_name, season=3)
|
||||
assert bf.title == "關於我轉生變成史萊姆這檔事 第三季"
|
||||
assert bf.season == 3
|
||||
assert bf.episode == 48.5
|
||||
|
||||
file_name = "[ANi] 關於我轉生變成史萊姆這檔事 第三季 - 48.5 [1080P][Baha][WEB-DL][AAC AVC][CHT].srt"
|
||||
sf = torrent_parser(file_name, season=3, file_type="subtitle")
|
||||
assert sf.title == "關於我轉生變成史萊姆這檔事 第三季"
|
||||
assert sf.episode == 48.5
|
||||
assert sf.season == 3
|
||||
assert sf.language == "zh-tw"
|
||||
|
||||
|
||||
class TestGetPathBasename:
|
||||
def test_regular_path(self):
|
||||
|
||||
Reference in New Issue
Block a user