mirror of
https://github.com/maxdorninger/MediaManager.git
synced 2026-04-17 15:43:28 +02:00
fix: improve quality detection regex to match 2160p, UHD, FullHD and other keywords (#450)
## What Two-line fix to the quality detection regex in `media_manager/indexer/schemas.py`. **UHD pattern**: `\b(4k)\b` → `\b(4k|2160p|uhd)\b` **FullHD pattern**: `\b(1080p)\b` → `\b(1080p|fullhd|full\s*hd)\b` ## Why The UHD regex only matched the literal keyword `4k`. Torrent titles containing `2160p` or `UHD` (but not `4k`) were classified as `Quality.unknown` (value 5) instead of `Quality.uhd` (value 1). Since sorting uses quality as the primary key, these 4K releases ended up at the bottom of search results. ### Example | Title | Before | After | |---|---|---| | `Movie.2013.4K.HDR.2160p.x265` | ✅ `Quality.uhd` | ✅ `Quality.uhd` | | `Movie.2013.UHD.BluRay.2160p.HDR10.x265` | ❌ `Quality.unknown` | ✅ `Quality.uhd` | | `Movie.2013.2160p.WEBRip.DDP5.1.x264` | ❌ `Quality.unknown` | ✅ `Quality.uhd` | All patterns already use `re.IGNORECASE`, so case variants are handled. Fixes #449 --------- Co-authored-by: GokuPlay609 <GokuPlay609@users.noreply.github.com> Co-authored-by: Amp <amp@ampcode.com> Co-authored-by: maxid <97409287+maxdorninger@users.noreply.github.com>
This commit is contained in:
@@ -35,10 +35,10 @@ class IndexerQueryResult(BaseModel):
|
||||
@computed_field
|
||||
@property
|
||||
def quality(self) -> Quality:
|
||||
high_quality_pattern = r"\b(4k)\b"
|
||||
medium_quality_pattern = r"\b(1080p)\b"
|
||||
low_quality_pattern = r"\b(720p)\b"
|
||||
very_low_quality_pattern = r"\b(480p|360p)\b"
|
||||
high_quality_pattern = r"\b(4k|2160p|uhd)\b"
|
||||
medium_quality_pattern = r"\b(1080p|full[ ._-]?hd)\b"
|
||||
low_quality_pattern = r"\b(720p|(?<!full[ ._-])hd(?![a-z]))\b"
|
||||
very_low_quality_pattern = r"\b(480p|360p|sd)\b"
|
||||
|
||||
if re.search(high_quality_pattern, self.title, re.IGNORECASE):
|
||||
return Quality.uhd
|
||||
|
||||
Reference in New Issue
Block a user