Repository: Flexget/Flexget

Issue:
Season Pack not Being Identified as Such
### Expected behaviour:

Entry identified as a Season Pack

### Actual behaviour:

Entry is misidentified as s01e265. It recognized the codec both as the episode number and the quality

### Steps to reproduce:
Run the test config below

#### Config:
```yaml
tasks:
  test:
    mock:
      - title: Boushoku no Berserk (Berserk of Gluttony) (Season 1) [1080p][HEVC x265 10bit]
    series:
      - Boushoku no Berserk:
          season_packs: yes
```
  
#### Log:
<details>
 <summary>(click to expand)</summary>

```
2023-12-23 19:09:12 INFO     manager                       Test mode, creating a copy from database ...
2023-12-23 19:09:14 VERBOSE  task_queue                    There are 1 tasks to execute. Shutdown will commence when they have completed.
2023-12-23 19:09:14 VERBOSE  details       test            Produced 1 entries.
2023-12-23 19:09:14 VERBOSE  series.db     test            identified by is currently on `auto` for Boushoku no Berserk. Multiple id types may be accepted until it locks in on the appropriate type.
2023-12-23 19:09:14 VERBOSE  task          test            ACCEPTED: `Boushoku no Berserk (Berserk of Gluttony) (Season 1) [1080p][HEVC x265 10bit]` by series plugin because choosing first acceptable match
2023-12-23 19:09:14 VERBOSE  details       test            Summary - Accepted: 1 (Rejected: 0 Undecided: 0 Failed: 0)
2023-12-23 19:09:14 WARNING  task          test            Task doesn't have any output plugins, you should add (at least) one!
─── Accepted ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
title               : Boushoku no Berserk (Berserk of Gluttony) (Season 1) [1080p][HEVC x265 10bit]
url                 : mock://localhost/mock/2033417893153210082
original_url        : mock://localhost/mock/2033417893153210082
accepted_by         : series
media_id            : boushoku no berserk s01e265
original_title      : Boushoku no Berserk (Berserk of Gluttony) (Season 1) [1080p][HEVC x265 10bit]
proper              : False
proper_count        : 0
quality             : 1080p h265 10bit
reason              : choosing first acceptable match
release_group       : None
season_pack         : None
series_episode      : 265
series_episodes     : 1
series_exact        : False
series_id           : S01E265
series_id_type      : ep
series_identified_by: auto
series_name         : Boushoku no Berserk
series_parser       : <SeriesParseResult(data=Boushoku no Berserk (Berserk of Gluttony) (Season 1) [1080p][HEVC x265 10bit],name=Boushoku no Berserk,id=(1, 265),season=1,season_pack=None,episode=265,quality=1080p h265
                      10bit,proper=0,special=False,status=OK)>
series_releases     : [1]
series_season       : 1
task                : test
```
</details>

### Additional information:

- FlexGet version: 3.10.7
- Python version: 3.11
- Installation method: git
- Using daemon (yes/no): Either
- OS and version: W10
- Link to crash log: N/A



Discussion:

Resolving patch:
diff --git a/flexget/utils/parsers/series.py b/flexget/utils/parsers/series.py
--- a/flexget/utils/parsers/series.py
+++ b/flexget/utils/parsers/series.py
@@ -58,7 +58,7 @@ class SeriesParser(TitleParser):
     season_pack_regexps = ReList(
         [
             # S01 or Season 1 but not Season 1 Episode|Part 2
-            r'(?:season\s?|s)(\d{1,})(?:\s|$)(?!(?:(?:.*?\s)?(?:episode|e|ep|part|pt)\s?(?:\d{1,3}|%s)|(?:\d{1,3})\s?of\s?(?:\d{1,3})))'
+            r'(?:season\s?|s)(\d{1,}\b)(?!(?:(?:.*?\s)?(?:episode|e|ep|part|pt)\s?(?:\d{1,3}|%s)|(?:\d{1,3})\s?of\s?(?:\d{1,3})))'
             % roman_numeral_re,
             r'(\d{1,3})\s?x\s?all',  # 1xAll
         ]
diff --git a/flexget/utils/qualities.py b/flexget/utils/qualities.py
--- a/flexget/utils/qualities.py
+++ b/flexget/utils/qualities.py
@@ -152,9 +152,12 @@ def __deepcopy__(self, memo=None):
 _codecs = [
     QualityComponent('codec', 10, 'divx'),
     QualityComponent('codec', 20, 'xvid'),
+    QualityComponent('codec', 25, 'nvenc'),
     QualityComponent('codec', 30, 'h264', '[hx].?264'),
     QualityComponent('codec', 35, 'vp9'),
-    QualityComponent('codec', 40, 'h265', '[hx].?265|hevc'),
+    QualityComponent('codec', 40, 'h265', '[hx].?265'),
+    QualityComponent('codec', 40, 'h265', 'hevc'),
+    QualityComponent('codec', 50, 'av1', 'av-?1'),
 ]
 
 _color_ranges = [


Test patch: