Initial commit

This commit is contained in:
2026-03-19 12:13:02 -04:00
commit b9e7e1bfca
23 changed files with 1021 additions and 0 deletions

View File

@@ -0,0 +1,57 @@
import importlib
from pathlib import Path
from pkgutil import iter_modules
from typing import Optional
from parsers.generic import Release, ParserManager
from parsers.generic.watfag import *
class TVBoxSetRelease(Release):
"""Holds info representing a release of a TV box set."""
def __init__(self, unparsed_text, dl_link, **kwargs):
super().__init__(unparsed_text, dl_link, **kwargs)
self.show_title: str = ""
self.seasons: Optional[str] = None
self.group: Optional[Group] = None
self.group_name: Optional[str] = None
self.quality: Optional[Resolution] = None
self.source: Optional[Source] = None
self.streaming: Optional[StreamingService] = None
self.video_codec: Optional[VideoCodec] = None
self.audio_codec: Optional[AudioCodec] = None
self.audio_layout: Optional[AudioLayout] = None
self.dynamic_range: Optional[DynamicRange] = None
self.repack: Optional[Repack] = None
self.multi: Optional[Multi] = None
def __str__(self):
parts = [f"{self.show_title} (Seasons: {self.seasons})"]
for attr in ['quality', 'video_codec', 'audio_codec', 'audio_layout', 'dynamic_range', 'repack', 'multi', 'source']:
value = getattr(self, attr)
parts.append(f"{attr.capitalize()}: {value if value else 'Unknown'}")
if self.streaming:
parts.append(f"Streaming: {self.streaming}")
parts.append(f"Group: {self.group_name if self.group else 'Unknown'}")
if not self.fully_consumed():
parts.append(f"Unparsed: {self.metadata_text}")
parts.append(f"WATFAG: {self.watfag:.2f}")
return " | ".join(parts)
class TVBoxSetParser:
"""
This class can be inherited by any parser that is specific to TV box sets.
It allows dynamic importing of parser classes and provides a method to run all parsers on a given TV box set release.
"""
class TVBoxSetParserManager(ParserManager):
"""Parses TV box set releases."""
def collect_parsers(self):
"""Dynamically imports all TV box set parsers."""
super().collect_parsers()
package_dir = Path(__file__).parent
for _, module_name, _ in iter_modules([package_dir]):
importlib.import_module(f"{__package__}.{module_name}")
self.parsers.extend(TVBoxSetParser.__subclasses__())