Commit Graph

26 Commits

Author SHA1 Message Date
GokuPlay609
c2645000e5 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>
2026-02-22 16:25:36 +01:00
natarelli22
d8a0ec66c3 Support for handling Single Episode Torrents (#331)
**Description**
As explained on #322, MediaManager currently only matches torrents that
represent full seasons or season packs.
As a result, valid episode-based releases — commonly returned by
indexers such as EZTV — are filtered out during scoring and never
considered for download.

Initial changes to the season parsing logic allow these torrents to be
discovered.
However, additional changes are required beyond season parsing to
properly support single-episode imports.

This PR is intended as a work-in-progress / RFC to discuss the required
changes and align on the correct approach before completing the
implementation.

**Things planned to do**
[X] Update Web UI to better display episode-level details
[ ] Update TV show import logic to handle single episode files, instead
of assuming full season files (to avoid integrity errors when episodes
are missing)
[ ] Create episode file tables to store episode-level data, similar to
season files
[ ] Implement fetching and downloading logic for single-episode torrents

**Notes / current limitations**
At the moment, the database and import logic assume one file per season
per quality, which works for season packs but not for episode-based
releases.

These changes are intentionally not completed yet and are part of the
discussion this PR aims to start.

**Request for feedback**
This represents a significant change in how TV content is handled in
MediaManager.
Before proceeding further, feedback from @maxdorninger on the overall
direction and next steps would be greatly appreciated.

Once aligned, the remaining tasks can be implemented incrementally.

---------

Co-authored-by: Maximilian Dorninger <97409287+maxdorninger@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-22 15:21:19 +01:00
Marcel Hellwig
96b84d45db Adding some more new lints (#393)
Enable `UP` and `TRY` lint
2026-02-01 18:04:15 +01:00
Maximilian Dorninger
a39e0d204a Ruff enable type annotations rule (#362)
This PR enables the ruff rule for return type annotations (ANN), and
adds the ty package for type checking.
2026-01-06 17:07:19 +01:00
Marcel Hellwig
75406cbc64 ruff: add RET lint
lints about assign and immediatly returning a variable
2026-01-05 19:30:42 +01:00
Marcel Hellwig
7182344036 create list from range directly instead of using append 2026-01-05 19:30:42 +01:00
Marcel Hellwig
a34b0f11a6 use single s since we're ignoring cases anyway 2026-01-05 19:30:42 +01:00
Marcel Hellwig
40812c6040 omit return_type in computed field
it's calculated from the functions return type, so there's no need to
specifify it
2026-01-05 19:30:42 +01:00
Marcel Hellwig
ff013ac76e ruff: enable I lint 2026-01-05 19:30:42 +01:00
maxDorninger
abfae4f1f3 format files 2025-10-29 16:34:51 +01:00
Maximilian Dorninger
1a1d38aa29 Update media_manager/indexer/schemas.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-29 16:17:20 +01:00
maxDorninger
30b710e618 improve how the download_url field is excluded from the response model 2025-10-28 22:49:10 +01:00
maxDorninger
bae3906063 add indexer field to IndexerQueryResult and update related components; display indexer name to use 2025-10-28 22:17:00 +01:00
maxDorninger
efab99473a make comment better 2025-07-26 18:28:03 +02:00
maxDorninger
e7863c7a6c add support for magnet urls to indexers 2025-07-26 13:14:22 +02:00
maxDorninger
b6f5f8b253 format files 2025-07-17 11:37:58 +02:00
maxDorninger
9254a5ab10 update sorting algorithm of IndexerQueryResult 2025-07-17 00:36:49 +02:00
maxDorninger
9264d74d51 add score field to indexer query result 2025-07-16 23:06:45 +02:00
maxDorninger
4d0443b337 improve regex to determine the quality of a Indexer query result 2025-07-16 23:06:28 +02:00
maxDorninger
f2edfb076c add usenet support to indexer module, add make jackett and prowlarr search for either tv or movies 2025-07-09 20:52:01 +02:00
maxDorninger
4c414d13ef refactor indexer module imports and format code 2025-06-08 17:51:47 +02:00
maxDorninger
b5e68f194e add tests for indexer module 2025-06-08 17:30:23 +02:00
maxDorninger
32de886dbe refactor indexer module to implement dependency injection 2025-06-08 16:59:27 +02:00
maxDorninger
31874aeb31 update admin email configuration to support multiple addresses and update documentation 2025-06-01 19:30:56 +02:00
maxDorninger
40c90d90ed feat: add automatic downloads for approved season requests 2025-05-31 13:45:50 +02:00
maxDorninger
206df8b150 refactor: change folder structure 2025-05-29 15:36:35 +02:00