summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/hircine/scraper/types.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/hircine/scraper/types.py b/src/hircine/scraper/types.py
index 534792b..23cb634 100644
--- a/src/hircine/scraper/types.py
+++ b/src/hircine/scraper/types.py
@@ -137,6 +137,38 @@ class Language:
def __bool__(self):
return self.value is not None
+ @classmethod
+ def from_iso_639_3(cls, string):
+ """
+ Returns a new instance of this class given a case-insensitive ISO 639-3
+ language code.
+
+ :param str string: The ISO 639-3 language code.
+ :raise: :exc:`~hircine.scraper.ScrapeWarning` if the language code could
+ not be parsed.
+ """
+ try:
+ return Language(value=hircine.enums.Language[string.upper()])
+ except KeyError as e:
+ raise ScrapeWarning(
+ f"Could not parse language code: '{string}' as ISO 639-3"
+ ) from e
+
+ @classmethod
+ def from_name(cls, string):
+ """
+ Returns a new instance of this class given a case-insensitive language name.
+ Permissible language names are defined in :class:`hircine.enums.Language`.
+
+ :param str string: The language name.
+ :raise: :exc:`~hircine.scraper.ScrapeWarning` if the language name could
+ not be parsed.
+ """
+ try:
+ return Language(value=hircine.enums.Language(string.capitalize()))
+ except ValueError as e:
+ raise ScrapeWarning(f"Could not parse language name: '{string}'") from e
+
@dataclass(frozen=True)
class Direction: