Fix EAC3 audio codec detection (#6312)

This commit is contained in:
Rayan Salhab
2026-08-14 11:50:39 +08:00
committed by GitHub
parent 509d671524
commit 557cc0e2e3
2 changed files with 12 additions and 2 deletions
+2 -2
View File
@@ -90,7 +90,7 @@ class MetaVideo(MetaBase):
_resources_pix_re = r"^[SBUHD]*(\d{3,4}[PI]+)|\d{3,4}X(\d{3,4})" _resources_pix_re = r"^[SBUHD]*(\d{3,4}[PI]+)|\d{3,4}X(\d{3,4})"
_resources_pix_re2 = r"(^[248]+K)" _resources_pix_re2 = r"(^[248]+K)"
_video_encode_re = r"^(H26[45])$|^(x26[45])$|^AVC$|^HEVC$|^VC\d?$|^MPEG\d?$|^Xvid$|^DivX$|^AV1$|^HDR\d*$|^AVS(\+|[23])$" _video_encode_re = r"^(H26[45])$|^(x26[45])$|^AVC$|^HEVC$|^VC\d?$|^MPEG\d?$|^Xvid$|^DivX$|^AV1$|^HDR\d*$|^AVS(\+|[23])$"
_audio_encode_re = r"^DTS\d?$|^DTSHD$|^DTSHDMA$|^Atmos$|^TrueHD\d?$|^AC3$|^\dAudios?$|^DDP\d?$|^DD\+\d?$|^DD\d?$|^LPCM\d?$|^AAC\d?$|^FLAC\d?$|^HD\d?$|^MA\d?$|^HR\d?$|^Opus\d?$|^Vorbis\d?$|^AV[3S]A$" _audio_encode_re = r"^DTS\d?$|^DTSHD$|^DTSHDMA$|^Atmos$|^TrueHD\d?$|^AC3$|^EAC3\d?$|^\dAudios?$|^DDP\d?$|^DD\+\d?$|^DD\d?$|^LPCM\d?$|^AAC\d?$|^FLAC\d?$|^HD\d?$|^MA\d?$|^HR\d?$|^Opus\d?$|^Vorbis\d?$|^AV[3S]A$"
_fps_re = r"(\d{2,3})(?=FPS)" _fps_re = r"(\d{2,3})(?=FPS)"
_season_pattern = re.compile(_season_re, re.IGNORECASE) _season_pattern = re.compile(_season_re, re.IGNORECASE)
_episode_pattern = re.compile(_episode_re, re.IGNORECASE) _episode_pattern = re.compile(_episode_re, re.IGNORECASE)
@@ -809,7 +809,7 @@ class MetaVideo(MetaBase):
if self.audio_encode: if self.audio_encode:
if self._last_token.isdigit(): if self._last_token.isdigit():
self.audio_encode = "%s.%s" % (self.audio_encode, token) self.audio_encode = "%s.%s" % (self.audio_encode, token)
elif self.audio_encode[-1].isdigit(): elif self.audio_encode[-1].isdigit() and self.audio_encode.upper() not in {"AC3", "EAC3"}:
self.audio_encode = "%s %s.%s" % (self.audio_encode[:-1], self.audio_encode[-1], token) self.audio_encode = "%s %s.%s" % (self.audio_encode[:-1], self.audio_encode[-1], token)
else: else:
self.audio_encode = "%s %s" % (self.audio_encode, token) self.audio_encode = "%s %s" % (self.audio_encode, token)
+10
View File
@@ -171,6 +171,16 @@ def test_python_metainfo_fallback_preserves_xxx_movie_title():
assert meta.audio_encode == "DDP 5.1" assert meta.audio_encode == "DDP 5.1"
def test_python_metainfo_fallback_recognizes_eac3_audio_codec():
"""Python 兜底解析应识别 EAC3 及其声道信息。"""
with patch("app.core.metainfo.rust_accel.parse_metainfo", return_value=None):
meta = MetaInfo("Test.Movie.2026.1080p.BluRay.x264.EAC3.5.1-GROUP")
assert meta.resource_pix == "1080p"
assert meta.video_encode == "x264"
assert meta.audio_encode == "EAC3 5.1"
RESOURCE_TYPE_CASES = [ RESOURCE_TYPE_CASES = [
( (
"They.Will.Kill.You.2026.2160p.UHD.BluRay.Remux." "They.Will.Kill.You.2026.2160p.UHD.BluRay.Remux."